linux-atm-2.5.1/0000755000200100001440000000000011304770377012271 5ustar chasuserslinux-atm-2.5.1/CVS/0000755000200100001440000000000011304767140012716 5ustar chasuserslinux-atm-2.5.1/CVS/Root0000644000200100001440000000007411304767137013573 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/CVS/Repository0000644000200100001440000000001211304767137015017 0ustar chasuserslinux-atm linux-atm-2.5.1/CVS/Entries0000644000200100001440000000127511304767140014257 0ustar chasusers/.cvsignore/1.1.2.2/Fri Aug 31 14:53:24 2007//TV2_5_1 /AUTHORS/1.2/Tue Oct 9 22:33:01 2001//TV2_5_1 /BUGS/1.1.2.1/Sat Dec 29 21:24:03 2007//TV2_5_1 /COPYING/1.1.2.1/Thu Oct 28 13:58:48 2004//TV2_5_1 /COPYING.GPL/1.1/Mon Aug 20 21:03:49 2001//TV2_5_1 /COPYING.LGPL/1.1/Mon Aug 20 21:03:51 2001//TV2_5_1 /ChangeLog/1.2.2.7.2.5/Mon Nov 30 16:09:47 2009//TV2_5_1 /Makefile.am/1.2.2.1.2.1/Mon Aug 3 15:15:24 2009//TV2_5_1 /NEWS/1.2.2.2/Sat Dec 29 21:24:03 2007//TV2_5_1 /README/1.2.2.2.2.1/Mon Nov 30 16:09:47 2009//TV2_5_1 /THANKS/1.2/Tue Oct 9 22:33:01 2001//TV2_5_1 /autotools/1.2.2.2/Wed Jul 11 15:26:17 2007//TV2_5_1 /configure.in/1.2.2.12.2.3/Mon Nov 30 16:09:47 2009//TV2_5_1 D/doc//// D/src//// linux-atm-2.5.1/CVS/Tag0000644000200100001440000000001011304767137013351 0ustar chasusersTV2_5_1 linux-atm-2.5.1/.cvsignore0000644000200100001440000000032210666025544014265 0ustar chasusersMakefile Makefile.in aclocal.m4 autom4te.cache config.guess config.h config.h.in config.log config.status config.sub configure libtool ltmain.sh stamp-h* INSTALL depcomp install-sh missing mkinstalldirs ylwrap linux-atm-2.5.1/AUTHORS0000644000200100001440000000020107360675435013340 0ustar chasusersWerner Almesberger, EPFL ICA Mitchell Blank Jr., Paul B Schroeder, linux-atm-2.5.1/BUGS0000644000200100001440000000141110735535363012752 0ustar chasusersKnown bugs and restrictions in version 2.5.0 ============================================ - ENI driver: closing an AAL0 socket while data is arriving at a high rate hangs in the close system call - mpcd: adds an MPOA Egress Cache Tag Extension in the MPOA Cache Imposition Replies it sends even if the extension is missing from the incoming Request - ANS: libresolve conflicts with libc on some systems - ENI driver loses synchronization on some systems, leading to panics or hung VCs (these may be two distinct problems) - few if any drivers build properly as modules - swc show only displays manually configured VCs - invoking a queuing discipline that overwrites skb->cb from within sch_atm will yield unpredictable results if CONFIG_ATM_SKB is enabled linux-atm-2.5.1/COPYING0000644000200100001440000000362410140175430013313 0ustar chasusersProgram code, documentation and auxiliary programs, except for the parts listen below, are: Copyright 1995-2000 EPFL-LRC/ICA All rights reserved. This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the file COPYING.GPL for details. For the ATM-related kernel code, authorship is typically recorded at the beginning of files. Note that some parts contain code from many authors, of which only the principal one(s) is or are listed. Kernel code is released under the conditions described in the file COPYING in the top-level directory of the kernel (i.e. the GPL, version 2). The libraries libatm, libatmd, libarequipa (in src/lib/), libsaal (in src/saal/), and qlib (in src/qgen/) are covered by the more permissive Library General Public License. See the file COPYING.LGPL for details. Code generated by qgen is only constrained by whatever usage restrictions apply to the message structure definition used as input, i.e. the use of qgen for translation does not create any restrictions. ilmid is Copyright (C) 1995 Telecommunications & Information Sciences Laboratory, The University of Kansas See ilmid/COPYRIGHT for copying terms. Some of the files used by ilmid are Copyright (C) 1992 Michael Sample and the University of British Columbia See src/ilmid/asn1/*.[ch] for copying terms. The LAN Emulation code is Copyright by Tampere University of Technology - Telecommunications Laboratory. See src/lane/COPYRIGHT.TUT and src/led/COPYRIGHT.TUT for copying terms. The Multi-Protocol Over ATM (MPOA) code was developed at Tampere University of Technology - Telecommunications Laboratory and is Copyright by Heikki Vatiainen and Sampo Saaristo. It is released under the GNU General Public License. See the file COPYING.GPL for details. linux-atm-2.5.1/COPYING.GPL0000644000200100001440000004403207340275465013753 0ustar chasusers NOTE! This copyright does *not* cover user programs that use kernel services by normal system calls - this is merely considered normal use of the kernel, and does *not* fall under the heading of "derived work". Also note that the GPL below is copyrighted by the Free Software Foundation, but the instance of code that it refers to (the linux kernel) is copyrighted by me and others who actually wrote it. Linus Torvalds ---------------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. linux-atm-2.5.1/COPYING.LGPL0000644000200100001440000006127307340275467014077 0ustar chasusers GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! linux-atm-2.5.1/ChangeLog0000644000200100001440000040123411304767113014041 0ustar chasusersVersion 2.5.0 to 2.5.1 (30-NOV-2009) Bug fixes --------- - split qgen into qgen and q2931 to make cross compiling easier - bug 782731 Segfault in SAAL layer - bug 798565 atmarp -a writes to STDIN New features ------------ Other changes ------------- Version 2.4.1 to 2.5.0 (30-DEC-2007) ====================== Bug fixes --------- - building outside the source tree should now work properly - TimeTicks (in ilmid) should be unsigned - fix zeppelin's handling of LE_ARP REMOTE_ADDRESS flag New features ------------ - zeppelin now has a -b option (run in background) - zeppelin creates /var/run/lec[itf].pid at startup - ilmid updates from ekinzie@cmf.nrl.navy.mil - atmswitch from eleblond@init-sys.com - point to multipoint signalling support - routed br2684 support from ekinzie@cmf.nrl.navy.mil Other changes ------------- - updated to support later versions of autoconf Version 2.4.0 to 2.4.1 (25-APR-2003) ===================== Bug fixes --------- - vsprintf's changed to vsnprintf's to prevent possible stack overflows Version 0.79 to 2.4.0 (18-OCT-2001) ===================== Bug fixes --------- - defined 'now' in src/lib/timer.c - ia64 build fix for ASN (Chas Williams) New features ------------ - the driver for the Marconi ForeRunnerHE is in src/extra/drivers (Chas Williams, Eric Kinzie) Other changes ------------- - In general, the source tree was rearranged and the old cruft was removed - Old ad hoc build system replaced in favor of a standardized autoconfiscation - Build configuration options are now controlled by 'configure' script instead of changes to the previous 'Rules.make' file - libatm and libatmd merged into one lib: libatm - Both static and shared libraries are built by default. Binaries now built with shared library by default. - Sample atmsigd.conf and hosts.atm are now installed when doing 'make install' - RPM spec file is now available in src/extra/ - New RedHat init scripts available in src/config/init-redhat/ (John Strange) (old RedHat 4.0 scripts removed) - ATM on Linux HOWTO now included in doc/ (much derived from usage.tex). We will publish this on the home page as well as linuxdoc.org - tcpdump and libpcap ATM patches/build removed (they have been integrated into their respective packages; see www.tcpdump.org) - ATM Name Service (ANS) files coalesced into src/extra/ANS - ANS bind patch upgraded to bind-4.9.8 (untested) - rtf2e164_cc.pl removed in favor of src/extra/ANS/pdf2e164_cc.pl. The ITU no longer provides E.164 country codes in RTF format. PDF used instead. Version 0.78 to 0.79 (15-AUG-2001) ==================== Bug fixes --------- - uni.c fix for newer versions of gcc - mpoad/io.c quick fix for undefined OPEN_MAX Version 0.77 to 0.78 (7-JUL-2000) ==================== Bug fixes --------- - skb_migrate wasn't protected against functions accessing the list via skb->list - removal of MOD_xxx races in FORE 200E and atmtcp (by Jeff Garzik) - CONFIG_ATM_NICSTAR_USE_IDT77105 set NEED_SUNI_MX instead of NEED_IDT77105_MX (fix from mainstream) - ambassador.c: changed string concatenation and offset calculation breaking compilation with gcc 2.96 (by Jakub Jelinek) - nicstar.c: various locking fixes for SMP (by Rui Prior) - LANE vs. bridging build conflict solved (from mainstream) - %%u instead of %u in mpc.c - fixed formatting of /proc/net/atm/svc - /proc/net/atm/clip always added + after public address, not only if followed by private address - atmsigd now returns EINVAL if attempting to change max_sdu - atm_change_qos now calls adjust_to for additional parameter checking - sendmsg now returns error if size > max_sdu (reported by Alan Kennington) - removed explicit defaults in Config.in (by Christoph Hellwig) - Fore200E: removed #ifdef MODULE - ipcommon.c didn't export skb_migrate to modules (by Mitchell Blank) - ENI: /proc/net/atm/eni:* claimed backlog was in bytes instead of packets - br, bw, window: changed variables receiving possibly negative return values from size_t to ssize_t (reported by Alan Kennington) - LANE: fixed stray errors on lack of ATM address, ATM address change, or ESI change (by Heikki Vatiainen) - LANE: could loop forwever when trying to connect to LECS (by Heikki Vatiainen) New features ------------ - upgraded to the 2.4.0-test3-pre4 kernel Other changes ------------- - as_reject now returns the errno value in msg->reply - removed save_qos hack in svc_change_qos - atmsigd: sap_encode now always includes both max_sdu fields, even if one contains the null value for some reason (by Mohsen Souissi) - PCI updates for Ambassador, FORE 200E, Horizon, Iphase, nicstar, ENI, and ZATM (by Jeff Garzik) - removal of unnecessary #ifdef MODULE for nicstar, idt77105, and FORE 200E (by Jeff Garzik) - generalized skb_migrate to append to an arbitrary sk_buff list - iphase.c: timer initialization cleanup (from mainstream) - clip: dev->name initialization change (from mainstream) - idt77105: cleaned up timer initialization - clip.c: some general cleanup - removed redundant return in clip.c (by Heikki Vatiainen) - changed atm_change_qos to static - fore200e.c: re-enabled anti-unloading code - lec.c: now drops packets on overrun instead of growing infinite queue (by Heikki Vatiainen) - COPYING still mentioned the old led code with partial DEC copyright (reported by Chris Pimlott) - Horizon: removed const warning by casting to (hrz_flags *) - Iphase: tried to print unsigned long with %x when errors are enabled - ENI: eni_send tries to use do_tx instead of tasklet_schedule to reduce delay - ENI: removed eni_dev->backlog_len (information is already in backlog->qlen) - changed the kernel source tree references from .gz to .bz2 compression - changed mkdiff to allow more flexible selection of additional patch Version 0.76 to 0.77 (29-APR-2000) ==================== Bug fixes --------- - atmaddr.8, atmarp.8, atmdump.8, atmloop.8, esi.8 didn't print all options in bold - atmsigd crashed if an interface had more than one local ATM address - atmarpd continued to use VCs after closing if they were closed because ATMARP_SETENTRY failed (reported by Joseph Gooch) New features ------------ - upgraded to the 2.3.99-pre6 kernel Other changes ------------- - CLIP now uses NETDEV_GOING_DOWN instead of NETDEV_DOWN; also avoids "clip_device_event: unknown event 9" warning - added ubr:pcr example to qos(7) - added -V option to atmaddr, atmarp, atmarpd, atmloop, atmsigd, atmtcp, esi, ilmid - sock->sk->sleep now points to vcc->sleep (by Alexander Viro) - CLIP: ATMARP server now reponds to query for local IP address (suggested by Joseph Gooch) - updated t2a.pl Version 0.75 to 0.76 (13-APR-2000) ==================== Bug fixes --------- - ttcp_atm declared port as "short" instead of "unsigned short", yielding confusing diagnostic output New features ------------ - upgraded to the 2.3.99-pre5 kernel Other changes ------------- - eliminated eni_send-tasklet synchronization - PCA200: merged unconditional #inclusion of linux/pci.h from pre5 Version 0.74 to 0.75 (7-APR-2000) ==================== Bug fixes --------- - ENI: moved send operation into tasklet to correct synchronization (reported by Heikki Vatiainen) - MPOA: possible deadlock fix (by Heikki Vatiainen) - atm_vcc_flags_t was too small on PPC, causing an overlap with vcc->family (fixed by Chas Williams) - CLIP: needs spin_lock_irqsave instead of only spin_lock (by Rui Prior) - CLIP: clip_push may be called from an interrupt, so the kfree_skb has to become dev_kfree_skb_any (by Heikki Vatiainen) Other changes ------------- - removed INCLUDES from atm/ilmid/asn1/Makefile (suggested by Jean Marc Lacroix) - atm/maint/Makefile no longer special-cases atmdiag.c (suggested by Jean Marc Lacroix) Version 0.73 to 0.74 (2-APR-2000) ==================== Bug fixes --------- - atm_poll tried to sleep on two wait queues, which is no longer possible. Removed vcc->wsleep to solve this. (Reported by Joseph Gooch) - lec.c:lec_arp_clear_vccs changed the VCC flags of the wrong VCC, fortunately only in commented-out code - major revision of MPOA ingress and egress cache locking (Heikki Vatiainen) Other changes ------------- - removed last remnants of bogus bridging lock from lane_mpoa_init.c (reported by Heikki Vatiainen) - removed last traces of TNET1570A driver - atmdev_init still knew about ENI, but ENI now uses new-style initialization - improved Fore 200E configuration to catch useless settings already at configuration time (by Christophe Lizzi) Version 0.72 to 0.73 (29-MAR-2000) ==================== Bug fixes --------- - ambassador.c and horizon.c had module loading races (fixed by Giuliano Procida) - fore200e: one set_bit was accidently converted to clear_bit, preventing VCs from being opened (fixed by Christophe Lizzi) Other changes ------------- - fore200e: moved interrupt handler work to tasklet (by Christophe Lizzi) - fore200e: fixed SBUS DMA direction flags (by Christophe Lizzi) - fore200e: the compile no longer fails when the driver is compiled without any hardware support (and displays a warning; by Christophe Lizzi) - oops, atm/README was lagging behind a few versions Version 0.71 to 0.72 (25-MAR-2000) ==================== Bug fixes --------- - fore200e.h and lec.h didn't #include (fixed by David S. Miller ?) - atmloop.c always assumed -q to be present New features ------------ - upgraded to the 2.3.99-pre3 kernel Other changes ------------- - kernel patch still included wd.c hack (reported by David S. Miller) - removed bogus initialization of skb->rx_dev (spotted by Alexey Kuznetsov) - removed bogus lane_bridge_hook_lock (by Heikki Vatiainen) - added sparc64 support for ATM_QUERYLOOP (by Christophe Lizzi) - minor Fore driver cleanup (by Christophe Lizzi) - eni.c: moved interrupt handler work to tasklet Version 0.70 to 0.71 (21-MAR-2000) ==================== Bug fixes --------- - eni.c: fixed potential SMP deadlock on tx_wait - clip.c and lec.c didn't initialize skb->rx_dev - net/atm/svc.c:svc_connect left wait entry in queue on return in some cases - idiot bug in skb_migrate caused weird crashes - atmloop usage erroneously claimed -s was optional New features ------------ - upgraded to the 2.3.99-pre2 kernel - added atmloop.8 man page - added enqueuing result NET_XMIT_BYPASS for qdiscs that send packets on a path without dequeue (e.g. sch_atm) Other changes ------------- - ambassador.c: removed warnings when compiling with CONFIG_SMP (by Giuliano Procida) - changed drivers/atm target from atm.a to atm.o, to make initcalls work - converted eni.c to use pci_register_driver and initcall - cleaned up #ifdef hell in net/atm/signaling.c:sigd_put_skb Version 0.69 to 0.70 (20-MAR-2000) ==================== Bug fixes --------- - LEC compilation as a module still left it in the kernel Other changes ------------- - moved LANE-bridging interface code from lec.c to lane_mpoa_init.c (by Heikki Vatiainen) - made SONET and ATM statistics counters atomic to avoid cli() when reading (not updated: similar mechanism in idt77105.c and private shadow statistics of ambassador.c) - changed access to VCC and device flags (ATM_VF_* and ATM_DF_*) to bit set operations - changed flag types to structs to fail compilation of old code - changed last argument of atm_dev_register to a pointer to a bit set for easier migration - net/atm/*.c: eliminated all sleep_on and cli (except in lec.c) - ditto for eni.c and suni.c - corrected indentation of some "permanent" debugging code in zatm.c - made skb_migrate partially atomic, obsoleting yet another cli() in clip.c Version 0.68 to 0.69 (19-MAR-2000) ==================== Bug fixes --------- - ambassador.c: corrected location of initial PLX window for use on Alpha (by Giuliano Procida) - zeppelin: fixed address initialization (found by Christophe Lizzi) - atmsigd.conf man page erroneously described the option "q.2963.1" as "q2963_1" - LANE didn't compile when bridging was enabled (fixed by Heikki Vatiainen; note that bridging also needs an update which is being merged via the mainstream kernel) New features ------------ - atmsigd: added command-line option -u to set the UNI mode - added ioctl ATM_QUERYLOOP to determine supported loopback modes - added atmloop(8) option -q Other changes ------------- - added CREDITS entry of Giuliano Procida - various cosmetic changes to horizon.c (by Giuliano Procida) - ambassador.c: various bits of cleanup (by Giuliano Procida) - added -S option to ttcp_atm to set the IPv4 TOS byte (this is not really related to ATM) - changed loopback mode values to a bit set - idt77105_ioctl: returned sizeof(int) instead of 0 on ATM_GETLOOP - added phy_ops->stop to suni.c and uPD98402_stop, cleaned up suni.c in the process - removed (very obsolete) mmuio.o from net/atm/Makefile Version 0.67 to 0.68 (28-FEB-2000) ==================== Bug fixes --------- - removed potential dev_kfree_skb(NULL) from *_send of eni.c, zatm.c, iphase.c - eni.c, zatm.c, iphase.c sometimes returned PCI error codes instead of errno codes - arpd/io.c could try to de-reference entry->addr with addr == NULL (fixed by Thomas Dietz) - LANE copied more than dev->addr_len address bytes (fixed by Heikki Vatiainen) - sch_atm didn't remove filters on destroy - fixed typo in esi.c error message - esi.8 claimed to be the man page of atmarp, and it wasn't installed - added checking for VPI/VCI when sending AAL0 cells (by Mitchell Blank) - atmtcp allowed sending on receive-only VCs - various ioctl permission checks were missing (fixed by Mitchell Blank) - fore200e.c and horizon.c didn't always free skbs on send error (fixed by Mitchell Blank) - included an ugly hack to fix the wd.c driver that was broken around 2.3.47 (not related to ATM at all...) New features ------------ - upgraded to the 2.3.48 kernel - added device-independent SAR/PHY loopback setting interface (with many good ideas from Greg Banks and Mitchell Blank), and removed old loopback ioctls - new utility atmloop to set loopback mode - added "stop" to atmphy_ops (requested by Mitchell Blank) Other changes ------------- - mkdiff can now also use pre-release kernels - changed *kfree_skb to dev_kfree_skb_{irq,any} in eni.c, zatm.c, and raw.c, where necessary (with help from Heikki Vatiainen) - changed {dev_,}kfree_skb to dev_kfree_skb_any in ambassador.c, horizon.c, iphase.c, and nicstar.c (needs further cleanup) - softnet updates for LANE (by Heikki Vatiainen) - fixed firmeware license of Fore 200E driver and general 0.46/0.47 updates (Christophe Lizzi) - more CREDITS file additions - softnet updates for sch_atm - softnet updates for CLIP (also cleaned up flow control for > 1 VCC/itf; reported by Alexey Kuznetsov) - updated documentation for iproute2-2.2.4-now-ss000225 and streamlined the build procedure - PCI DMA updates for ENI driver - changed the default install location of executables and man pages from /usr/local to /usr - make install no longer installs align, aping, br, bw, delay, isp, svctor, sw_debug, sw_tcp, swc, and window - eni.c: made highly controversial aal5 = ... line more readable - moved /proc/atm to /proc/net/atm - added vcc->send function to allow for AAL-specific processing (may be set to dev->ops->send) - atm_do_connect_dev now calls bind_vcc before AAL initialization to make vcc->dev available - change_qos no longer allows changing of AAL or traffic class (by Mitchell Blank) - changes for new loopback support to fore200e driver and sparc64 code (by Christophe Lizzi) Version 0.66 to 0.67 (2-FEB-2000) ==================== New features ------------ - upgraded to 2.3.42 - added sunimode utility to set SUNI loopback mode (by Christophe Lizzi) Other changes ------------- - removed unused variable warning in net/sched/sch_atm.c - changed ENI_SETMULT from ATMIOC_SARPRV+1 to ATMIOC_SARPRV+7 - changed atmarpd's complaint about VCC-less non-ATMARP-server entries from DIAG_ERROR to DIAG_INFO (the condition is okay for an ATMARP server) Version 0.65 to 0.66 (31-JAN-2000) ==================== Bug fixes --------- - atmsigd crashed on reception of as_accept, etc., because of inverted NULL pointer test (reported by Kevin Vargo, Rui Prior, fixed by Julian Cable) - fixed various SPARC build problems (by Christophe Lizzi) - atmsigd insisted that calling party number is local in switch mode - debug switch didn't initialize any ports - net/atm/signaling.c:sigd_enq didn't properly zero the message, yielding kernel pointers partially containing junk - accept(2) didn't copy local ATM address to VCC descriptor (reported by Pedro Brandao) - ilmid/io.c didn't compile on SPARC (reported by Christophe Lizzi) - usage.txt didn't define the %: macro, leaving garbage in usage.txt New features ------------ - upgraded to 2.3.41 - Fore 200E driver now also works for SBA-200E (by Christophe Lizzi) Other changes ------------- - added various CREDITS entries - changed TIOC{IN,OUT}Q to SIOC{IN,OUT}Q (no user space rebuild required; the values are identical) - added script atm/switch/tcp/mkfiles for automatic extraction of configuration files - atmsigd called ATM_GETLINKRATE "ATM_GETLINERATE" in complaints - atmsigd tried to obtain link speed in switch mode, although it's not used - Ambassador NIC: various files still had the wrong copyright/licensing text (patch by Giuliano Procida) Version 0.64 to 0.65 (21-JAN-2000) ==================== Bug fixes --------- - fixed 32/64 bit %p formatting problem in /proc/atm/vc - atmtcp: fixed RX/TX statistics (by Jens Axboe) - sparc64-specific ioctl 32/64 bit marshalling fixes (by Christophe Lizzi, with further improvements by Jens Axboe) - zeppelin -l option handling (reported by Mike Prudence, fixed by Heikki Vatiainen) - mkpatch didn't include drivers/atm/eni.h - updated eni.h (tx->backlog_len was missing) - fixed various uint32_t build problems of user space tools by including atm.h before anything other ATM headers (first reported by Rashmi Dravid) - "natmtcp virtual" didn't parse the command line properly - natmtcp's TCP link changed VPI/VCI to 0.0 on close - CLIP: fixed crash after sending ARP (reported by Rui Prior) New features ------------ - upgraded to 2.3.40 (with help from Jens Axboe) - added sparc64 changes for ENI driver (by Heikki Vatiainen) - added the Fore PCA-200E(/SBA-200E) driver (by Uwe Dannowski and Christophe Lizzi) - added the Interphase ATM PCI (i)Chip (x575, x525, x531, etc.) driver (by Monalisa Agrawal and Peter Wang) - added ABR fields to struct atm_trafprm (by Peter Wang) - nicstar driver now supports setting of the CLP bit (by Rui Prior) - added ENI_SETMULT ioctl and enitune utility to change ENI buffer size multipliers at run time Other changes ------------- - atmsigd: changed default UNI version from 3.0 to dynamic (which defaults to 3.0) - atmtcp: removed ugly ../../net/atm/protocols.h include - ioctls now internally return -ENOIOCTLCMD if ioctl command number is not recognized - removed ATM_CREATE_LEAF ioctl (wasn't used and suggested the wrong design approach anyway) - updated README.DRIVERS - natmtcp now uses port 2812 (assigned by IANA) - moved Documentation/atm.txt to Documentation/networking - improved atm_kptr_int_t for non-Sparc architectures (by Christophe Lizzi) - removed two compiler warnings from nicstar.c - some minor nicstar cleanup (by Rui Prior) - added "vbr" and "abr" to text2qos/qos2text ("vbr" not used for anything right now) - natmtcp: added commands "create", "remove", "switch", corresponding to options -p, -r, and -s of atmtcp - natmtcp: added link type "print" (write PDU content to stdout) - natmtcp: now uses atm_kptr_int_t for VCC kernel pointer instead of unsigned long - added apologetic man page for natmtcp - renamed natmtcp to atmtcp and removed the old atmtcp - changed some user-space code to avoid patronizing "ambiguous `else'" warnings from egcs, adding as few ugly redundant curly braces as possible - fixed some other compiler warnings - kernel part: trimmed operations structure initializers which consisted mainly of NULL pointers - kernel pointers sent as opaque references to user space are now of type atm_kptr_t. Added support functions kptr_eq and kptr_print. (With help from Richard Johnson and Mitchell Blank) - removed various "overriding commands" warnings in user-space build process - mkdist now creates arcvie in current directory if ~/l/arch doesn't exist - make clean && make now works also if dependencies are present (make clean used to remove sigd/q.out.h, which the dependencies required) - atmtcp uses command bg instead of -b for backgrounding. Also, listen-bg listens and backgrounds before calling accept. Version 0.63 to 0.64 (1-DEC-1999) ==================== Bug fixes --------- - atmapi.h logic was still wrong (fixed by Christophe Lizzi) - LANE: fixed BUS filtering and net/atm/lec.c cleanup (by Heikki Vatiainen) - arpd/io.c assumed that diag() preserves errno - atmarpd didn't include QOS in output if getsockopt failed New features ------------ - /proc/atm/eni:* now also shows transmit queue and backlog length - added option "sndbuf" to atmarp - added option "sndbuf" to tc ... atm ... - /proc/atm/vc lists internal details for all VCs (flags, buffers, etc.); added ATM_VF2TXT_MAP to atmdev.h to allow translation of flag values Other changes ------------- - ATM now uses sk->sndbuf/rvcbuf instead of atm_vcc->tx_quota/rx_quota - removed rx_quota hack from zatm.c - removed net/atm/tunable.h - CLIP and sch_atm now only send packets if the VC's send queue allows them to - implemented correct "requeue" function in sch_atm - updated zeppelin(8) man page (Heikki Vatiainen) - atmarp: atmarp -q qos_spec usage is obsolete; use atmarp -q qos qos_spec instead - /proc/atm/svc now prints "N/A@xxxxxxxx" instead of "Unassigned", with the address of the descriptor in xxxxxxxx - removed all traces of CONFIG_MMU_HACKS - obsoleted ATM_SETSC (single-copy control) Version 0.62 to 0.63 (22-NOV-1999) ==================== Bug fixes --------- - horizon.c: cleared weird rate_lock/rates_lock patch conflict - saaldump output formatting was completely wrecked; added option -q for "quiet" output (no Q.2931 printing) - fixed LANE Ethernet interface MTU mapping (patch by Rob Scott) - atmsigd incorrectly rejected CONNECTION AVAILABLE (Q.2963.1) - SVC address was wrong in /proc/atm/arp if using private and public part - RESTART ACKNOWLEDGE was not sent with the correct global call reference value (reported by Peter Ryan) - zatm: usec timestamps need 64 division of x86, so this option must be unavailable on other architectures (reported by Matti Aarnio) - nicstar: added "fix3" and "fix4" (by Rui Prior) - LANE: non-proxy didn't filter packets coming from BUS (fix by Marko Kiiskila and Heikki Vatiainen) New features ------------ - upgraded to kernel version 2.3.28 - atmtcp now reports VC open/close and generates timestamps (Note: the protocol used between the kernel and the atmtcp utility has changed) - new utility "natmtcp" which combines the ATMTCP protocol, ATMTCP ("virtual") interfaces, "real" ATM interfaces, and log files (experimental) - added ILMI 4.0 MIB variables atmfPortMyIdentifier and atmfMySystemIdentifier (by Thomas Seidel) - zeppelin: new command line option -I to select interface, allowing the use of LANE with multiple physical interfaces (by Heikki Vatiainen) - UltraSparc (sparc64) support (by Christophe Lizzi) - nicstar: added IDT77105 PHY support (by Greg Banks) - added utility loop25 to control ForeRunner LE loopback mode (by Greg Banks) - added support for DNS lookup of NSAP addresses (by Rui Prior) - added utility debug/dnstest (by Rui Prior) Other changes ------------- - net/atm/tunable.h cleanup - removed SO_BCTXOPT, SO_BCRXOPT, and struct atm_buffconst - removed obsolete field "next" from struct atm_blli - changed potentially unaligned 32 bit accesses in SAAL to use read_netl (spotted by Christophe Lizzi) - added __attribute__ ((aligned(8))) to many structures containing structures which are shared by kernel and user space to enfore uniform packing on sparc64 (with help from Christophe Lizzi) - changed unsigned long to unsigned int at API for compatibility with architecture where sizeof(long) differs between user and kernel space (e.g. sparc64; suggested by Christophe Lizzi) - changed struct atmsvc_msg.{vcc,listen_vcc} from unsigned long to new type atm_kptr_int_t; changed atmsigd accordingly (NB: debugging output may strip upper bits) - changed various casts pointer->int to pointer->long->int (where the pointer does indeed only contain an int, e.g. in ioctl) for Alpha (reported by Matti Aarnio) - nicstar: changes card->membase from u32 to unsigned long - added __attribute__ ((unused)) to mpc.c and mpoa_caches.c to remove warnings about variables used only for debugging - drivers/atm/Config.in: changed ! "$foo" = "x" to "$foo" != "x" Version 0.61 to 0.62 (27-AUG-1999) ==================== Bug fixes --------- - lib/diag.c:set_logfile didn't set log_to_initialized (reported by Lars Burgstahler) - sch_atm did not use classifiers attached to the x:0 class (reported by Lars Burgstahler) - net/atm/atm_misc.c EXPORT'ed atm_return, which is an inline function (fixed by Mitchell Blank) - work-around for SO_LEVEL range problems (by Mitchell Blank) - nicstar oops fix (by Rui Prior and John Brosnan) - nicstar should now work also as non-module (by Rui Prior) - nicstar fix for chip bug showing up on 64-bit CPCI bus systems (by Jay Talbott) - cleared confusion about inclusion of suni.o when building both nicstar and ENI - suni.c now always exports suni_init - various fixes and cleanups in the Madge drivers (by Giuliano Procida) - fixed new set of atm_pdu2truesize problems by introducing atm_alloc_charge which handles the allocation too (problem report and work-around by Alexey Kuznetsov) - getsockname on unbound PVC socket caused an oops - LANE: Token Ring source route bridge support fix (by Heikki Vatiainen) New features ------------ - upgraded to kernel version 2.3.15 (mainly by Alexey Kuznetsov and Mitchell Blank) - new socket option SO_ATMPVC to retrieve the "PVC" address (PVC & SVC) (based on a patch by Jay Talbott) - zeppelin -l now also accepts only the selector byte (by Robert Slaski) Other changes ------------- - removed obsolete drivers/atm/nicstar.c.old_skb - removed all references to Arequipa (obsolete) - SO_BCTXOPT/SO_BCRXOPT are now obsolete, given that the final verdict on page flipping has been spoken in linux-kernel - interface statistics are now counted in struct net_device_stats instead of struct enet_statistics (by Mitchell Blank) - added pointer to mailing list to Documentation/atm.txt - Documentation/Configure.help now points to Documentation/atm.txt instead of directly to the Web page. - usage.tex: clarified the consequences of interrupting atmtcp - changed the highly misleading "atmarpd:ITF: no such interface" message to DIAG_DEBUG Version 0.60 to 0.61 (11-JUN-1999) ==================== Bug fixes --------- - nicstar: driver sometimes crashed when starting for 25 Mbps cards (Rui Prior) - Zeitnet driver: uPD98402.c wasn't compiled with -DEXPORT_SYMTAB when building as a module - net/atm/raw.c didn't export atm_init_aal5, so ATMTCP didn't load as a module - atmtcp could still be accessed after loading and then unloading, yielding an Oops Other changes ------------- - PPC configuration now also includes ATM (Jay Talbott) - lots of cleanup in the Madge drivers (Giuliano Procida) - tamed down a bit the tone in README Version 0.59 to 0.60 (3-JUN-1999) ==================== New features ------------ - upgraded to kernel version 2.3.3 (main change is slightly different wait queue handling; affects all drivers) Other changes ------------- - mkdiff script now takes .bz2 kernel if no .gz can be found - made a few changes to the Madge drivers to reduce the number of warnings Version 0.58 to 0.59 (3-JUN-1999) ==================== New features ------------ - upgrade to kernel version 2.2.9 - zeppelin now adjusts MTU when joining ELAN (Heikki Vatiainen) Other changes ------------- - adjusted tr interface name limit to 8 characters (down from a wasteful 9) Version 0.57 to 0.58 (3-JUN-1999) ==================== Bug fixes --------- - ENI drivers sometimes directly dereferenced pointers instead of using readl/ writel (fixed by Mitchell Blank) - nicstar driver no longer uses floating point (fixed by Rui Prior) - nicstar driver may have refused CBR VC in some cases even with enough bandwidth available (fixed by Rui Prior) - usage.tex failed to build (fixed by Bill Brooks) - zeppelin got byte order in BLLI wrong (reported by Chas Williams; fixed by Mitchell Blank and Heikki Vatiainen) - zeppelin did not work when the host had multiple ATM addresses (reported by Benoit Steiner; fixed by Heikki Vatiainen) - zeppelin incorrectly parsed -i command line option (reported by Benoit Steiner; fixed by Heikki Vatiainen) - atm_connect_vcc and /proc/atm/pvc report AAL0 now properly (reported by Zhu Qun Ying and Uwe Dannowski) New features ------------ - nicstar driver now support SONET diagnostics (by Rui Prior) - nicstar driver now works on PowerPC (by Jay Talbott) - LANE now also supports Token Ring (Heikki Vatiainen, with testing by Holger Smolinski) Other changes ------------- - major non-i386 architecture and other cleanup in ENI driver (by Mitchell Blank) - number of lec devices is 40+8 (lec0-lec39 are Ethernet and lec40-lec47 are Token Ring; Heikki Vatiainen) - lec.c and mpc.c now use atm_force_charge (Heikki Vatiainen) - net/802/tr.c limited interface names to 4 characters (fixed by Heikki Vatiainen) - zeppelin man page updated (Heikki Vatiainen) - "zeppelin.new" is now "zeppelin", the old "zeppelin" is gone - set "atm_connect" printk to KERN_DEBUG - removed ATM_SAAL from include/linux/atm.h (there never was any support for SAAL in the kernel) Version 0.56 to 0.57 (18-MAY-1999) ==================== Bug fixes --------- - atmarpd complained "invalid control msg type" when changing interface characteristics (reported by Soo-Khim Ho) - sch_atm didn't compile without CLIP (reported by Zhu Qun Ying) - LANE & MPOA: plugged a few memory leaks after failure to atm_charge (Heikki Vatiainen) - mpcd could not be killed if MPS's address was not known (fixed by Heikki Vatiainen) - nicstar: fixed the sleeping in interrupt issue (Rui Prior) New features ------------ - drivers for the Madge "Ambassador" and "Horizon [Ultra]" NICs, also known as Collage PCI 155 Server, 25, and 155 Client (by Giuliano Procida) Other changes ------------- - MPOA code cleanup and debugging printks are now conditional (Heikki Vatiainen) - removed both led/USAGE files - removed the old atmsigd (was in atm/sig.old/) - nicstar driver now works around TSQ bug on older chips (77201) (by Rui Prior, with the detective work by Jay Talbott) Version 0.55 to 0.56 (22-APR-1999) ==================== Bug fixes --------- - atm/doc/Makefile assumed . to be included in PATH when invoking rlatex (fix by Heikki Vatiainen) - usage.txt leaked Arequipa configuration examples (fix by Heikki Vatiainen) - plugged a small memory leak in led.new which occurred when using the LANE client as a proxy (Heikki Vatiainen) - atmarpd crashed when printing ATMARP table entries with flag 0x8000 set (reported by Vinay Kulkarni) - CLIP interfaces now follow netmask changes - Nicstar: 25.6 Mbps cell rate corrected (by Rui Prior) - atm_equal could loop forever when comparing NSAP-encoded E.164 addresses (reported by Valley Zhizhkun) - [AP]F_ATM[PS]VC definitions in lib/atm.h conflicted with glibc 2.1 (reported by Heikki Vatiainen and Jens Vagelpohl) - changed a few non-int main to int main (reported by Heikki Vatiainen) - changed lib/diag.c work with glibc 2.1, where stderr is no longer a constant (based on a patch by Heikki Vatiainen, also reported by Giuliano Procida) - make clean didn't remove qgen/q.test.c, qgen/qd.out.h, qgen/qd.test.c, sigd/q.out.h and sigd.old/q.out.h (reported by Giuliano Procida) - optional headers were installed even with system headers present if INSTROOT was different from / (reported by Giuliano Procida) - lib/stdint.h was used even on systems that had a "real" stdlib.h (based on a patch by Heikki Vatiainen, also reported by Giuliano Procida) - renamed net/atm/misc.c to atm_misc.c to avoid name clash with drivers/char/misc.c on include/linux/modules/misc.* (reported by Borek Lupomesky) New features ------------ - new ioctl ATM_GETLINKRATE to query link rate of an interface (suggested by Vitaly Lavrov) - new atmsigd.conf option io max_rate to specify rate to signal if application requests the "maximum" - added decription of CONFIG_ATM_LANE and CONFIG_ATM_MPOA to the kernel configuration help (Heikki Vatiainen) - added description of LANE to usage.tex (Heikki Vatiainen) - new function atm_force_charge to unconditionally add data to a receive buffer Other changes ------------- - atmsigd now determines maximum link rate by querying interfaces (suggested by Vitaly Lavrov) - moved local address registry from a global table to VPCI structures - changed unknown net device notification severity from KERN_ERR to KERN_WARNING - atmarpd now overwrites old atmarpd.table on startup (it used to keep it until the first configuration change) - shutdown(2) of native ATM VCs now returns 0 instead of -EOPNOTSUPP (suggested by Mitchell Blank) - Nicstar: IRQ sharing is now allowed (by Rui Prior) - Nicstar: default maximum number of cards is now 4 (by Rui Prior) - Nicstar: when compiled as a module, the driver may no longer be removed while in use (by Rui Prior) - Nicstar: loss of cells is no longer reported as a plain CRC error (by Rui Prior) - atmsigd now always clears the endpoint reference flag if in UNI 3.0 mode (based on a patch by Heikki Vatiainen) Version 0.54 to 0.55 (1-MAR-1999) ==================== Bug fixes --------- - SELECT_TOP_PCR didn't take intro account the "pcr" field, causing SVC with QoS pcr=xxx to be set up at link speed - qos_equal didn't detect differences in the "pcr" fields - sch_atm only accepted parent == root or absent (reported by John Loughney) - sch_atm:atm_tc_put accessed flow structure after kfree'ing it - sch_atm:atm_tc_change didn't put excess traffic class if class creation failed - sch_atm:atm_tc_dump_class didn't return class ID in tcm->tcm_handle - sch_atm:atm_tc_delete refused to delete classes because it expected ref == 1, but ref == 2 (reported by John Loughney) Version 0.53 to 0.54 (19-FEB-1999) ==================== Bug fixes --------- - led.new: fixed build problem and warning (Heikki Vatiainen) - fixed LANE arp cache timeouts (Heikki Vatiainen) - ilmid -i option fell through into -l, causing logging to go into a file named after the local address - flipping the highest bit of ep_ref made it negative which was erroneously interpreted to mean "absent" (reported by Giuliano Procida and Chas Williams) - ilmid used the result of AsnOidCompare inconsistently, causing network prefix registration to fail with some switches (based on a patch by Giuliano Procida) New features ------------ - tc:q_atm: new option "clip" to select Classical IP processing of inbound traffic - new sch_atm class attribute TCA_ATM_STATE to retrieve VC state Other changes ------------- - led.new: improved handling of LANE flush protocol (Heikki Vatiainen) - copied USAGE from led/ to led.new/ - added description of ilmid options -i and -u to USAGE (Heikki Vatiainen) - ilmid -u now also works without -DDYNAMIC_UNI (all values but the default are refused) - tcpdump patch updated to tcpdump version 3.4 (Heikki Vatiainen) - updated "tc" patch to iproute2 version 2.1.99-now-ss990203 Version 0.52 to 0.53 (9-FEB-1999) ==================== Bug fixes --------- - atmsigd: selecting the UNI version via compile-time options didn't yield the desired result in some cases (reported by Vinay Kulkarni and others) - ATM VCCs now use struct sock, as required by protocol-independent layer starting with recent 2.1 kernels (by Mitchell Blank) - led fixes: htons/htonl bugs in LANEv2 code, one duplicate close() removed (by Heikki Vatiainen) New features ------------ - upgraded to the 2.2.1 kernel (by Mitchell Blank) - LANE: added bridging support (by Heikki Vatiainen) - complete rewrite of led (in led.new), which is now leaner and no longer contains code (c) Digital (by Heikki Vatiainen) - added macros for local AESA format and group addresses, and support in atm2text (by Heikki Vatiainen) Other changes ------------- - ENI: buffer sizes are now limited to MID_MAX_BUF_SIZE even if max_sdu > MID_MAX_BUF_SIZE/3 (reported by Andrew Lunn) - plenty of NICStAR changes (Rui Prior and Mitchell Blank) - LANE interface to upper layer looks more like Ethernet, so adding bridge and 802.1Q support is easier, and tcpdump does not need any extra patches (by Heikki Vatiainen) Version 0.51 to 0.52 (5-DEC-1998) ==================== Bug fixes --------- - atmsigd crashed when receiving STATUS ENQUIRY for call in Null state (reported by Heikki Vatiainen) - outbound endpoint reference didin't have the 16th bit toggled (fixed by Andrew Lunn) - lec.c: fixed a bug in kernel which could cause kernel part to deadlock when signalling was not started successfully (by Heikki Vatiainen) - MPOA: bug fixes and other changes, see atm/mpoa/CHANGELOG (by Heikki Vatiainen) New features ------------ - LANE: both kernel & daemon: support for ELANs which have MTUs greater than 1516 (by Eric H. Kinzie) - MPOA: can now ask LECS for configuratino information (by Heikki Vatiainen) Other changes ------------- - zeppelin.8: updated (Heikki Vatiainen) Version 0.50 to 0.51 (6-NOV-1998) ==================== Bug fixes --------- - atmsigd: typo prevented kernel.c from compiling with UNI30 disabled (fix by Andrew Lunn and Uwe Dannowski) - option -u crashed ilmid (reported by Michael Wolf) Other changes ------------- - bearer capability is now set to "CBR" for CBR (suggested by Heikki Vatiainen) Version 0.49 to 0.50 (3-NOV-1998) ==================== Bug fixes --------- - atmsigd didn't compile for -DUNI31 -DALLOW_UNI30 (fixed by Richard Gooch) - atmsigd crashed on as_bind and also had problems with as_connect after as_bind (reported by Heiko Krupp, Heikki Vatiainen, and many others) Other changes ------------- - atmsigd now enables tracing by default (use -t 0 to turn it off) - added "terminate" message to test/isp - mpoad defaults to UBR if service category is absent (by Heikki Vatiainen) - LANE now avoids blocking intact connections when other connections have problems by queuing packets independently per destination while waiting for a connection (by Heikki Vatiainen) Version 0.48 to 0.49 (1-NOV-1998) ==================== Bug fixes --------- - q_atm.c passed TCA_ATM_EXCESS even if zero, while the kernel expected it to be absent in this case (changed q_atm.c) - q_atm: tc class show didn't separate fields properly with blanks - removed double inclusion of atm/config from mkdist New features ------------ - upgraded to the 2.1.126 kernel Other changes ------------- - "new" atmsigd is now the default (atm/sigd got renamed to atm/sigd.old, atm/sigd.new to atm/sigd) - updated extra/tc/README Version 0.47 to 0.48 (30-OCT-1998) ==================== Bug fixes --------- - ilmid didn't recognize the -u option - ATM_GETCIRANGE copied wrong amount of data (fix by Heikki Vatiainen) - sch_atm didn't compile without policing enabled (reported by Calin Poenaru) - BHLI octets: qgen/msg.fmt allowed nine instead of eight bytes for ISO and user specified, include/linux/atmsap.h:ATM_MAX_HLI was 7 instead of 8 (by Damian Gilmurray and Paisit Thamsakorn) - MPOA: bug fixes and other changes, see atm/mpoa/CHANGELOG (by Heikki Vatiainen) New features ------------ - ilmid: new option -i to set local IP address (suggested by Andrew May) - ilmid now also supports the MIB variables atmfAtmLayerMaxVpiBits and atmfAtmLayerMaxVciBits (based on a patch by Uwe Dannowski) Other changes ------------- - ilmid: search for local IP address didn't consider LANE interfaces (lec*) - consolidated most of the various calls to gethostbyname and friends into text2ip (libatmd) - corrected some glitches in net/sched/sch_atm.c (untested) - removed debug/encopy, debug/endump, and debug/zndump from the distribution. They were almost useless and caused problems with make depend - SYMFILES in qgen/Makefile now determines location of atmsap.h at run time to avoid problems when kernel headers are not in /usr/include/linux (reported by Uwe Dannowski) Version 0.46 to 0.47 (6-OCT-1998) ==================== Bug fixes --------- - qgen didn't build for all UNI versions (fixed by Richard Gooch) New features ------------ - ilmid: new option -u to set UNI version (3.0, 3.1, or 4.0). Only available if compiled with -DDYNAMIC_UNI. Other changes ------------- - ilmid: getIpAddr: improved robustness and added debugging output Version 0.45 to 0.46 (5-OCT-1998) ==================== Bug fixes --------- - ENI and ZATM driver used to read IRQ directly from PCI configuration, bypassing any fixups (reported by Richard Gooch) - atmsigd.new: removed "Known bug" memory leak (when tracing) - led/lec_ctrl.c: signalling bug fixed, max_sdu now has correct value instead of 1 (by Heikki Vatiainen, reported by Josh Baratz and Wolfgang Platzer ) - lots of MPOA bug fixes and other changes, see atm/mpoa/CHANGELOG (by Heikki Vatiainen) - atmsigd reported "Q.2931.1" when configured to support Q.2963.1 New features ------------ - atmsigd.new now supports run-time configuration of the signaling protocol version (via atmsigd.conf) Other changes ------------- - added 16W bursts to ENI burst size configuration (NB: 16W may actually be *slower* than 8W) - lec_ctrl.c: zeppelin now uses LE_REGISTER protocol when TLVs are associated with client's MAC address (by Heikki Vatiainen) Version 0.44 to 0.45 (1-OCT-1998) ==================== Bug fixes --------- - ENI driver didn't do four-word bursts on RX for sizes < 8 words - arequipad, atmarpd, bus, lecs, les, mpcd, sw_*, and zeppelin silently ignored extra command-line arguments instead of complaining New features ------------ - ENI: added configuration options to fine-tune burst sizes (in reponse to incompatibility found by Dave Airlie) Other changes ------------- - changed the way how ATM-specific data is stored in skbs. Tentatively updated the the stack, including drivers. Use CONFIG_ATM_SKB to enable the new-style skbs. - Rules.make no longer discards the previous value of LDLIBS - sw_tcp now only establishes bi-directional VCs if both directions are really requested in the QoS structure - moved manual switch control from sw_tcp to the generic switch code; "tcpswc" is now called "swc", the corresponding switch.conf clause is now 'control ' instead of 'option control ""' Version 0.43 to 0.44 (24-SEP-1998) ==================== Bug fixes --------- - CONNECT messages no longer contain the AAL type IE if EP ref is present and non-zero (reported by Heikki Vatiainen) - SSCOP: added mode for partial compatibility with Q.SAAL1 (to get rid of warnings reported by Heikki Vatiainen and of interoperability problems with Virata switches reported by Damian Gilmurray) - ilmid now returns a valid response for atmfMyIpNmAddress (by Uwe Dannowski) - configuration on-line help for CLIP didn't work because tag was different from configuration variable - atmsigd crashed when adding multiple local addresses on an interface (reported by Heiko Krupp) - atmaddr.8 said "ATMARP" in the header (reported by Hans Einsiedler) - net/atm/misc.c didn't include linux/config.h and linux/module.h, causing symbols to be missing when rebuilding the kernel after enabling modules (reported by Thomas Parvais) New features ------------ - new maintenance utility tcpswc to control sw_tcp "switches" (description at the end of switch/tcp/README) - added support for setting the CLP bit (untested; see doc/README.CLP) - added support for policing to the ATM qdisc (untested; see extra/tc/README) - ilmid: added support for atmfAtmLayerUniVersion (by Uwe Dannowski) Other changes ------------- - updated the NICStAR driver to version 008b (by Rui Prior) - new switch fabric function fab_option to pass configuration options - atm2text now also supports unspecified and wildcard components in PVC addresses - added configuration option CONFIG_ATM_CLIP_NO_ICMP to discard packets for which no ATMARP entry exists silently instead of sending an ICMP (this is an ugly hack-around for the revalidation problem reported by Gerald Hanusch) - various minor documentation updates - atmarpd now sends InARP requests when active VC setup completes in order to tell the peer our IP address(es) Version 0.42 to 0.43 (21-AUG-1998) ==================== Bug fixes --------- - trying to use atmtcp when compiled as a module with the module not loaded crashed the kernel New features ------------ - upgraded to the 2.1.117 kernel - included NICStAR driver by Rui Prior at INESC (this driver also includes parts of an earlier driver written by Matt Welsh, then enhanced by R. D. Rechenmacher and Jawaid Bazyar) - new atmsigd with support for multiple signaling entities (experimental) Other changes ------------- - removed register dumping code from suni.c (leaked out into the distribution) Version 0.41 to 0.42 (19-AUG-1998) ==================== Bug fixes --------- - atm.patch was out of sync again :-( Version 0.40 to 0.41 (19-AUG-1998) ==================== Bug fixes --------- - 0.40 contained an older atm.patch than the one that was supposed to go with it (some changes to sch_atm and MPOA were missing) - kernel didn't build with LANE enabled and MPOA disabled (fix by Mitchell Blank Jr) New features ------------ - MPOA now also supports CBR SVCs (by Heikki Vatiainen and Sampo Saaristo) Other changes ------------- - atmtcp may work as a module (untested) - kernel code now uses capabilities instead of suser() - removed obsolete recycle_buffer code - distribution now also includes mkpatch, the script that's used to create atm.patch Version 0.39 to 0.40 (13-AUG-1998) ==================== Bug fixes --------- - ilmid defined the value of "invalid" as 0 instead of 2 (fix by Timo Parnanen) - bash-2 doesn't like for n in $(SUBDIR); ... if SUBDIR is undefined (fix by Heikki Vatiainen) - LANE still cleared ATM_VF_RELEASED instead of calling atm_async_release_vcc, which apparently led to stray kernel crashes in signaling (found with a lot of help from John McPherson) - ATM qdisc now properly re-allocates skb memory to grow headers, if necessary - atm/switch/Makefile didn't build SUBDIRS - atmarpd sent garbage ATM addresses in InARP responses over PVCs (reported by Stefan Keller-Tuberg) New features ------------ - MPOA (Multi-Protocol Over ATM) client support written by Heikki Vatiainen and Sampo Saaristo - LANE client (zeppelin) now also supports LANE2 (by Heikki Vatiainen) Other changes ------------- - accept() now also returns on ATM_VF_CLOSE - ATM qdisc now uses the same data format on rtnetlink as other qdiscs; new option for user-provided headers - atm/switch can now use "external" routing (e.g. provided by the fab control) Version 0.38 to 0.39 (4-AUG-1998) ==================== Bug fixes --------- - added missing #include in tcpsw.c (fixed by Heikki Vatiainen) - atmsigd allowed both sides to initiate PCR modification; Q.2963.1 only allows the connection owner (i.e. the caller) to do this - atmarpd no longer tries to use incoming SVCs with zero backward bandwidth for ATMARP - ENI and ZATM drivers didn't invoke vcc->pop on dev->ops->send failure - make install didn't probe correctly for presence of /usr/include/stdint.h (needed on GLIBC 1 systems) - net/atm/resources.c didn't export bind_vcc to modules (fix by Oliver Frommel) - net/arpd/atmarp didn't build without make depend (reported by Stefano Giacometti) - clip_mkip zeroed vcc->rx_inuse and didn't take into account that clip_push calls atm_return, which subtracts from vcc->rx_inuse too - fixed typos in qgen/uni.h (and msg.fmt) for causes 38, 41, and 43 - atmsigd wrote exit trace to stderr when it had a dump directory and vice versa - documentation still claimed that atmtcp yields messages at boot time New features ------------ - added flow to ATM VCC mapping queuing discipline (experimental) - module for setting up ATM PVC/SVC mappings with "tc" in extra/tc (see extra/tc/README) - atmarpd: new request type art_query to request resolution without VC setup - atmarp: new undocumented option -Q to test art_query - added ATMTCP interfaces that survive disconnects (persistent; new atmtcp(8) options -p and -r; new ioctls ATMTCP_CREATE and ATMTCP_REMOVE) Other changes ------------- - zeppelin didn't explicitly set the AAL type for outbound connections (by Heikki Vatiainen) - CLIP also allows SVCs to have no idle timeout at all (timeout = 0) - moved SUNI private ioctls (SUNI_GETLOOP and SUNI_SETLOOP) from drivers/atm/suni.h to include/linux/atm_suni.h - atmarpd now shows QoS information for VCs where it differs from the default or where no default is applicable - removed the file atm/WARNING, which gave an overly pessimistic perspective of the state of things - switch: fab_op now returns the cause value plus (optionally) a pointer to diagnostics in the callback instead of a simple okay/not okay indication - updated and corrected the atmtcp man page - further cleanup of the build procedure - README now mainly refers to http://lrcwww.epfl.ch/linux-atm/info.html - updated and trimmed BUGS - added a note to CREDITS indicating its obsolescence Version 0.37 to 0.38 (25-JUN-1998) ==================== Bug fixes --------- - fixed the remaining few #include - invoking fcntl() or socketpair() on an ATM socket caused an "Oops" (reported by Jonathan Chan) - CLIP PVCs caused an "Oops" when cat'ing /proc/atm/pvc (reported by Marko Kiiskila and Robert Olsson) - atm/qgen/default.nl wasn't removed after build failure - debugging switch (sw_debug) did not stop operations after the first error - svc_accept returned apparent success instead of -EAGAIN, usually leading to a later -ENOTCONN - ttcp.c didn't initialize port_name, leading to erratic behaviour when making slight changes to the build process - atm_pdu2truesize diverged from alloc_skb, leading to sudden failure of VCs or of ATMARP (reported by Robert Olsson) - corrected use of '~' when applied to unsigned longs representing memory addresses in aread, ENI, and ZATM (reported by Wai-Sun Chia) - atmtcp and LANE didn't use bind_vcc when setting up control VCs - atmtcp got ENOMEM/EBUSY wrong when failing to create an interface - sig level in atmsigd.conf didn't affect UNI diagnostics New features ------------ - upgraded to the 2.1.105 kernel - added ATMTCP "switch" in atm/switch/tcp - atmtcp: new mode -s to connect to an ATMTCP "switch" - atmtcp: new option -d for debugging output - added -b option (the usual "background") to switch/relay.c Other changes ------------- - changed "PDU" to "SDU" in the atmtcp(8) man page - atmarpd now includes the interface netmask in ATMARP table dumps - added ATM devices also to the Alpha architecture, because at least ATMTCP works (by Wai-Sun Chia) - added the removal of -Wmissing-prototypes to the 0.37 changes - removed -Wcast-align from Rules.make because of a conflict with /usr/include/socketbits.h of glibc 2 on Alphas (reported by Wai-Sun Chia) - atmsigd.conf.4: documented that debug log stderr works too - sap_equal now also allows wildcard matches for BHLI (with SXE_COMPATIBLE) - atmsigd now uses -m instead of -N and -A - atmsigd.conf now uses sig mode instead of sig net Version 0.36 to 0.37 (6-JUN-1998) ==================== Bug fixes --------- - lib/atm.h defined AF_ATMPVC to 20, but the correct value is 8. Likewise, AF_ATMSVC should be 20, not 21. (Reported by Luke Diamand) - fixed bad ASN encoding in ilmid (by Vesa-Matti Puro) - make install and make instdirs didn't stop on error New features ------------ - upgraded to the 2.1.104 kernel - included a script to demonstrate the debug switch (see switch/debug/README) Other changes ------------- - moved definitions not used by the kernel from linux/atmarp.h to atmarp.h - removed linux/atm_stdint.h (linux/types.h has now caught up) - changed ENI and ZATM driver to use new PCI interface - net/atm/clip.c no longer uses ether_setup (suggested by Alexey Kuznetsov) - more header file cleanup (main change: applications should now #include instead of #include ) - removed -Wmissing-prototypes from Rules.make because of a conflict with include/linux/byteorder/swab.h Version 0.35 to 0.36 (23-APR-1998) ==================== Bug fixes --------- - changed the numeric values of PF/AF_ATMPVC/SVC and SOL_ATM/AAL to avoid conflicts with other allocations. This breaks binary compatibility with ATM programs compiled under older kernels - RESTART ACK was sent with the wrong class when acknowledging the restart of the indicated virtual channel (fix by Mohsen Souissi) - RELEASE was retransmitted forever (to avoid having to perform a RESTART), although it's sufficient to retransmit once and then drop the connection - esi.c checked the kernel version code without including linux/version.h - CLIP changes magically fixed hangs on SICGIFCONF (reported by Wayne Salamon) - atmsigd usually didn't set pvc.sap_family in ISP messages New features ------------ - added build-time option -DTHOMFLEX to send RESTART when SAAL comes up, which works around a bug in some Thomson Thomflex 5000 switches (by Mohsen Souissi) - atmtcp: new option "-i itf" to request a specific interface number - the "debug switch" (switch/debug/sw_debug) is now capable of successfully signaling a UNI 3.x call (see switch/debug/README for details) Other changes ------------- - atm_equal can now also compare PVC addresses. The argument type has therefore been changed from struct sockaddr_atmsvc * to struct sockaddr * - moved driver-private data from skb->atm.* into skb->cb - complete redesign of communication between atmarp(8) and atmarpd(8) (now uses a UNIX domain socket; suggested by Alexey Kuznetsov) - atmarp -a now also produces correct output if atmarpd is running with -d - removed clip(8) - moved atmarp(8) from atm/ip into atm/arpd, removed atm/ip - /proc/atm/svc shows listening sockets again - cleaned up a few cases where diag(...,DIAG_FATAL,...) was followed by an "else" or a "return". - atmsigd now uses Unix domain sockets (instead of named pipes) to communicate with non-kernel ISP users (updated test/isp too) - net/atm/resources.c:atm_dev_register can now be asked to assign a specific interface number (-1 yields the old behaviour) Version 0.34 to 0.35 (27-MAR-1998) ==================== Bug fixes --------- - ilmid compared memcmp results with -1,1, which fails under optimization (fixed by Damian Gilmurray) - various fixes and cleanup in how CLIP interacts with the neighbour cache (spotted by Alexey Kuznetsov) - Rules.make complained about missing "optprocess" command on some occasions New features ------------ - upgraded to the 2.1.90 kernel - added some components for ATM switch control (not properly integrated yet, so they don't do anything useful at the moment; written by Roman Pletka) Other changes ------------- - eliminated various compiler warnings when compiling with glibc2 - removed clip_hard_header (suggested by Alexey Kuznetsov) Version 0.33 to 0.34 (13-MAR-1998) ==================== Bug fixes --------- - eni.c didn't include config.h (fix by Pete Wyckoff) - (yet another) VCC list handling bug (fixed by Heikki Vatiainen) - kernel also applied idle timeout to CLIP PVCs - make clean didn't remove test/errnos.inc - atmsigd errored as_connect and as_accept with as_close instead of as_error - eni: bandwidth was sometimes reserved for UBR VCs - eni: checking of bandwidth changes was broken - eni: error handling after failed bw change checks destroyed the free list - test/errnos.inc sometimes wasn't generated because of mtime granularity (fix by Brian Armstrong and Corinne Rosier) - fixed use of return code of get/put_user and copy_from/to_user - kernel: fixed a few minor race conditions - ATM_GETADDR left address list locked on fault - maximum length of high layer information was 7 bytes instead of 8 for ISO and User Specific high layer information (reported by Damian Gilmurray) - some tools didn't include errno.h although they use errno or Exxx - atmsigd usually accessed deallocated memory when writing traces, which sometimes led to crashes (reported by Heikki Vatiainen) - indentation of the first two lines of UNI signaling messages in traces was missing - LANE: duplicate data direct connections to entities where we already have a connection are now forbidden. LES and BUS can now co-reside. (Reported by Jean-Francois Moine, fixed by Heikki Vatiainen) - LANE: plugged a file descriptor leak (by Heikki Vatiainen) - atmsigd.conf.4 incorrectly stated that diagnostics must have a higher priority than the specified level to get printed (they're also printed if their priority is equal to that level) - zatm driver didn't virt_to_bus the back pointer of TX rings, leading to crash after sending the 32nd PDU of a VCC (reported by Ajay Bakre) - zatm_feedback sometimes returned with interrupts disabled - ENI driver didn't treat requests for UBR at link speed as "unlimited" and allocated one shaper for each such VCC - atm_async_release_vcc now has its own flag ATM_VF_CLOSE. Overloading ATM_VF_RELEASED caused hung SVCs under some conditions. - atmsigd sometimes released listening sockets before kernel completed its cleanup, yielding warnings and zombies - atmsigd accessed already deallocated data structures when handling unparseable signaling messages New features ------------ - upgraded to the 2.1.79 kernel - CLIP now handles NETDEV_CHANGE (proposed by Pete Wyckoff; untested) - various minor signaling changes for operation as switch control - new device operation proc_read: device drivers can now register in /proc (e.g. /proc/atm/eni:0) - added some more BHLI definitions to include/atmsap.h, including draft mapping of well-known TCP/UDP port numbers - added support for TIOCOUTQ/TIOCINQ on native ATM - new library function sap_equal - added convenience function atmpvc_addr_in_use to linux/atm.h - major overhaul of "isp", which is now a good tool for signaling regression tests. See atm/test/README.isp - LANE can now be compiled as a kernel module (by Heikki Vatiainen) - new tool debug/svctor.c to torture signaling by setting up and releasing lots of SVCs (see the source for details) Other changes ------------- - cleaned up the copying terms: libraries are now covered by LGPL instead of GPL and qgen doesn't "taint" the code it generates - atmarpd: IP addresses are now __u32 instead of unsigned long - atmarpd: changed printf("... %08x ...",(unsigned long) ptr) to %p ...",ptr - /proc support now allocates inode numbers dynamically - added comment to clarify motivation for useless buffer alignment in aread.c (reported by Jeon Jong Hwan) - suni.c and uPD98402.c: SONET_GETSTATZ no longer clears the statistics if the copy faults - ilmid should now work on any interface (patch by Heikki Vatiainen) - changed all __uNN of tools to uintNN_t for glibc2-compatibility - added stdint.h to lib for compatibility with future versions of glibc2 - various other evil hacks in tools to make things compile with glibc2 - the NIC debugging programs ed, encopy, endump, zndump, and znth are no longer built and installed by default - for compatibility with POSIX 1003.1g, accept now returns ECONNABORTED instead of ECONNREFUSED if connection is already gone (proposed by Heikki Vatiainen) - listening sockets now return instantly if the signaling demon dies - various minor LANE updates to track API changes (by Heikki Vatiainen) - SUNI now also warns if signal is missing at initialization time - zatm: added work-around for unfair buffer space accounting - clarified some of atmarpd's diagnostics - documentation updates Version 0.32 to 0.33 (19-NOV-1997) ==================== Bug fixes --------- - SSCOP did poll sequence number comparisons in the (data) sequence number space, typically leading to periodic SSCOP restarts (reported by Heikki Vatiainen) - atmsigd now releases calls on receipt of STATUS with call state 0 (reported by Heikki Vatiainen) - qgen tried to print the names of unnamed groups (fix by Simon Leinen) - make clean in qgen left all the .c and .h files produced by qgen - minor fixes to signaling message format description (qgen/msg.fmt, previously qgen/uni*) - /usr/include/atm.h was calling itself "atmlib" (found by Leena Chandran) - atmsigd: the address format of the calling party number was used to determine the format of the called party number in a SETUP message - added some semicolons to Rules.make for bash 2.0 compatibility (by Tan Chang Hu and Rolf Kunisch) - select/poll indicated an exception when a non-blocking connect terminated. Now it indicates writability, and an error only if the connect failed. - LES/BUS can now co-exist at the same address (by Heikki Vatiainen) - fixed race condition between asynchronous release (e.g. on ATMARP idle timer expiration) and signaling demon response - fixed a typo "[itf]." instead of "[itf.]" in atmsigd.conf.8 - "ATM drivers" kernel configuration section is no longer a top-level menu item but it's now under "Network devices" - sigd_close forgot to purge VCs not connected to devices (e.g. closing ones), so they hung - the list of unconnected VCs was sometimes garbled - atmsigd printed null string for as_itf_notify message name when debugging - Arequipa: check_aq_vcc also accepted VCs that were already released by signaling - ATM_VF_PARTIAL and ATM_VF_BOUND had the same value - atmaddr still used old calling convention of ATM_GETNAMES - the atmarpd man page referred to atmarpd as "atmsigd" - various atmtcp bug fixes - atm_recvmsg sometimes returned with interrupts disabled (reported by Pete Wyckoff) - fixed ttcp_atm dependencies (.depend contains dependencies for "ttcp.o") - UNI message format: "more" was missing for def_pck_size - eni/suni didn't compile as modules (fixed by Pete Wyckoff and Ladislav Lhotka) - further net/atm/Makefile cleanup - arequipa_close always left the socket with arequipa_expect enabled. Now it returns it to the previous state. - ENI driver was leaking buffer memory on failure of set_tx - atmarpd didn't print symbolic names of "new" flags (ATF_ARPSRV, etc.) - ATM ARP server didn't make client entries public (reported by Tom Mahieu) - drivers/atm/Config.in had extra "endmenu" (fixed by Ladislav Lhotka) - atmarpd got confused when receiving InARP reply without source ATM address - atmsigd sometimes didn't stop timers if Q.2963.1 wasn't enabled - when rejecting a call, the kernel freed the VCC twice New features ------------ - merged source tree (except Arequipa, single-copy, and various NIC drivers) with 2.1.65-Linus tree - qgen can now handle repeated information elements - added ATM_SETESI[F] ioctl and esi utility (boards without a real ESI in ROM should now set the default ESI to 0x000000000000) - new socket option SO_ATMSAP along with struct atm_sap (using a fixed-size BLLI array instead of the linked list in struct sockaddr_atmsvc) - added Q.2963.1 PCR modification in signaling and the ENI driver - aread: new option -c to print received data as characters (similar to od -c) - new tool test/align to test handling of mis-alignment in NIC drivers - atmsigd now supports policy restrictions for incoming/outgoing calls (see atmsigd.conf.4, "policy") - atmsigd can now also use a pair of named pipes (or, actually, any named object in the file system) for communicating with the user of signaling (normally the kernel) - new tool called "isp" (for "Internal Signaling Protocol") to talk ISP with atmsigd over named pipes - new functions sap2text and text2sap to converts SAPs to/from textual representation, and a sap(7) man page - new traffic parameter field "pcr" to indicate the desired PCR. min_pcr and max_pcr can the be used to indicate the acceptable range. - new function atm_pcr_goal to help drivers to interpret traffic parameters Other changes ------------- - removed some more obsolete CLIP-related ioctls - qgen: simplified generation of engines with a prefix other than "q" or "qd" - ENI and ZATM drivers now use shareable interrupts - cleaned up some 32bit-isms in ENI driver - cleaned up several 32bit-isms in SSCOP (reported by Tan Chang Hu) - SSCOP: work-arounds for buggy ntohl prototype in some early versions of glibc (reported by Tan Chang Hu, further explored by David S. Miller and Richard Henderson) - started updating the ZATM driver for 2.1 (still crashes under load) - added missing 2.1 pieces in ENI's SUNI driver - added __initfunc and __initdata where appropriate - tools tree now compiles under 0.31 (2.0.25 kernel) and 0.33 (2.1.55 kernel) - gratuitous improvement of identifier tree allocation in qgen - the interface number is now optional for sonetdiag (like for atmdiag) - started implementing the kernel side of point-to-multipoint signaling support - /proc/atm/arp now displays "resolving" or "expired" (with the number of times the entry is referenced) instead of "incomplete". - moved ATM_MAX_BLLI from linux/atm.h to linux/atmsap.h - changed ttcp_atm to use SO_ATMSAP (if available) to set BHLI Note: ttcp_atm previously didn't use a BHLI, so old and new versions of ttcp_atm don't interoperate. - updated all other programs using SAPs too, except for LANE - ENI: failure to allocate a traffic shaper now yields EBUSY instead of EAGAIN - instead of just complaining, the ENI driver now handles all kinds of mis-alignment in the TX path properly - re-implemented send and receive side of Arequipa - merged qgen/uni3x and qgen/uni40 into msg.fmt - added missing Q.2931/UNI 4.0 items to qgen/q2931.h and msg.fmt - also added BLLI L3 H.310 codepoint with related encodings - various file name and identifier changes to give a more appropriate name (e.g. "uni" or "call") to something that's never been Q.2931 - added library dependencies - atmsigd produces more readable and usually more comprehensive debugging output - atmsigd.conf.4 now mentions that -d is the debugging output addict's choice - all programs accepting -l syslog now also accept -l stderr. (This is useful for atmsigd if atmsigd.conf sets logging to something else.) - atmsigd now issues ATM_GETADDR ioctls on the signaling socket, not on the kernel socket - WARNING: text2qos: "pcr" is no longer a synonym for "max_pcr" ! - text2qos now refuses min_pcr=max - device driver interface: removed vcc->peek; device drivers now choose their own allocation strategy (change motivated by bug report from Furquan Ansari) - drive driver interface: new helper functions atm_charge/atm_return to handle buffer space allocation - device driver interface: vcc->push no longer allocates buffer space. This is now done by the driver, via atm_charge - updated eni, zatm, and atmtcp to use the new mechanism - zero padding in eni driver failed due to mis-alignment on some systems (fixed by Pete Wyckoff) - various compiler warnings removed (by Pete Wyckoff) - removed support for pre-AREQUIPA_WORK mechanism - arequipa close mechanism cleanup - further cleaned up QOS parameter checking - new ISP message as_identify for parallel call processing (not supported yet) - zatm: renamed struct zatm_thist to struct zatm_t_hist after wondering myself what on earth "this t" could be ... - doc/Makefile now invokes dvips with -o Version 0.31 to 0.32 (10-JUL-1997) ==================== Bug fixes --------- - manipulation of local ATM addresses didn't check for permission New features ------------ - ilmid now supports the system group and a couple of ILMI MIB objects (by Scott Shumate) - device and VCC allocation is now dynamic - E.164 addressing support and corrections to address coding in uni3x/uni40 (by S. A. Wright, T. C. Jepsen, and Z. Zhang) - support for device de-allocation via per-device operation dev_close Other changes ------------- - upgrade to kernel version 2.1.37 - ENI driver cleanup (uses readl/writel, skb_put, etc.) - socket option handling has changed: optval is now void * (to improve compile-time type checking) and optlen is int (not int *) in getsockopt - socket option "names" now encode the level and the size (based on an idea of Elwyn Davies) - cleaned up some of the #includes in net/atm/proc.c - total rewrite of ATMTCP (now the data forwarding is done in user space, which makes things slower but a lot more flexible) - separated PDU parsing and printing from SSCOP state machine - new per-device operation dev_close to shut down devices - changed a few DIAG_WARNs to DIAG_INFO in ilmid Removed features ---------------- - polled ATM devices are no longer supported - CLIP is gone (use ATMARP instead) - Arequipa and LANE don't work yet (will come back later) Version 0.30 to 0.31 (22-APR-1997) ==================== Bug fixes --------- - atmarpd even refused IP address changes by the ATMARP server, which typically led to the creation of one extra SVC - ATMARP timeouts were computed at the wrong place (found by Gerald Hanusch) - aqtest's usage didn't mention the -v option - some tools used 0x%p instead of %p (which is fine in the kernel, by the way) - skb_migrate didn't update skb->list - zeppelin: incurred spurious core dumps on unsuccessful attempts to connect to LANE servers, ESI parsing from command line seg faulted, obtaining ESI from NIC left an ATM socket hanging, man page didn't describe all options (by Marko Kiiskila and Heikki Vatiainen) Other changes ------------- - arequipa_close now only returns after the Arequipa connection has been successfully closed. This allows applications to reliably close and re-create Arequipa SVCs, e.g. to change the traffic parameters. - the arequipad operations 3rd party close and synchronization are now handled inside the kernel and survive arequipad restarts Version 0.29 to 0.30 (10-APR-1997) ==================== Bug fixes --------- - atmtcp didn't use vcc->push and therefore got the buffer usage accounting wrong (fix by Gerald Hanusch) - when closing a VC, the ENI driver didn't wait until all TX data has really left the board, which created a close/open race (found by Richard Jones) - SSCOP sometimes omitted the last element in a STAT PDU (fix - even with optimization vs. Q.2110 - by Ngo Bach Long) - atmarpd allowed ARP information to change permanent entries (found by Gerald Hanusch) - atmsigd's get_pvc used the maximum SDU size, thereby wasting buffer space very quickly, which led to signaling problems (reported by Richard Jones and Rik Wade) - oops, the BUGS file was always one version number ahead - ATMARP had a race between packets sent by the remote station and the ATMARP_MKIP ioctl. This caused the dreaded "unknown hw protocol 0xaaaa" error. (Finally fixed thanks to a dump provided by Patrick Flynn) - Arequipa had the same race for AREQUIPA_INCOMING. This probably caused the occasional "loss" (they were actually kept in vcc->recvq until the connection was closed) of the first packet(s). Version 0.28 to 0.29 (4-APR-1997) ==================== Bug fixes --------- - saal/sscop.c: NORMALIZE macro was weird and broken (fix by Ngo Bach Long) - InARP queries didn't contain the target ATM address, even if it is known, which stretches the allowances RFC1577 makes for violating RFC1293 (found by Juha Heinanen) - tcp_conn_request: Arequipa modification to MTU size calculation used wrong socket (fix by Gerald Hanusch) - kernel ATMARP table handling had some obscure races - temporary work-around: added A2T_LOCAL when using A2T_NAME in atmsigd and atmarpd. Before, systems using ANS where the name server is reached via (IP over) ATM exhibited truly bizarre failure patterns when refreshing ATMARP entries. (With a lot of help from Juha Heinanen) - ditto for arequipad, although the effects were less dramatic - atmarpd: if not using -m, incoming connections for which a valid entry already existed (e.g. due to manual configuration) were not entered in the kernel ATMARP table until after the entry timed out for the first time (by Gerald Hanusch) - skb data areas are now aligned using skb_reserve instead of directly tampering with skb->data (and forgetting skb->tail in the process ...) (found by Uwe Dannowski) New features ------------ - atmarpd is now automatically notified of IP over ATM interfaces already existing at startup. This greatly simplifies the atmarpd restart ritual. (All ATMARP table entries and the default QoS are still lost, though.) Other changes ------------- - cleaned up some weird and partially dead code in arpd/arp.c (found by Gerald Hanusch) - removed superfluous continue in arp.c:atmarp_setentry - device-driver specific declarations now reside in /usr/include/linux/atm_.h, so that disgusting hacks like #include "/usr/src/linux/..." can be avoided (based on proposal by Uwe Dannowski) - updated the list of supported NICs in README and the on-line help - arpd/atmarpd.8: documented that atmarpd -m may violate RFC1577 in subtle ways (pointed out by Gerald Hanusch) - updated MPR usage description to version 1.5 and removed mpr.patch - removed MEM_DEBUG from the build process (MPR 1.5 initializes itself automatically) Version 0.27 to 0.28 (27-MAR-1997) ==================== Bug fixes --------- - atmarpd restarted timers on as_valid -> as_valid transitions, illegally delayed necessary refreshes (reported by Juha Heinanen) - SSCOP cleared POLL timer on IDLE timer expiry (fix by Ngo Bach Long) - atmsigd didn't initialize "now" soon enough, causing an unnecessary retransmission of the first BGN PDU (by Ngo Bach Long) - atmsigd responded to RELEASE COMPLETE in ss_rel_ind with a STATUS instead of entering ss_wait_close (by Steve Pope) New features ------------ - new tool aqpvc to declare incoming Arequipa traffic on a PVC to the system (caveat: removing such a PVC can turn out to be surprisingly difficult) Other changes ------------- - removed some useless code in atmarpd's handling of VC disconnects - removed unused signaling state ss_hold (equivalent to ss_wait_rel) Version 0.26 to 0.27 (11-MAR-1997) ==================== Bug fixes --------- - oops, forgot to include atm/lib/rtf2e164_cc.pl in the distribution - atmsigd's VCI allocation in -N mode was too simplistic and failed after some signaling activity (reported by Richard Jones) - atm_connect was rejecting ATM_{VPI,VCI}_ANY - aq_prev in the list of Arequipa connections wasn't set properly, leading to random crashes when using Arequipa (found and fixed by Richard Jones, after weeks of tearing his hair out) - arequipa_close didn't remove the Arequipa route, which kept the upper layer protocol connection alive for a rather long time (reported by Richard Jones) New features ------------ - ilmid enhancements: vastly improved retry mechanism, workaround for a bug in the ATML Virata switch, -v option for very detailed debug output (Scott Shumate) - atmsigd now also accepts the signaling VC as a command line argument - qos2text appended colon to traffic type even if nothing else followed - new program debug/aqtest to test Arequipa (based on work by Mehdi Tazi) Other changes ------------- - added a few missing NULLs to struct atmdev_ops initialization in various drivers (this change does not alter any semantics) - changed printk ...%lx... (unsigned long) ptr to ...%p... ptr at many places - removed atm/lib/rtf2cc.pl and atm/lib/cc.inc (they were only used by an interim version of cc_len) - atmarp's usage no longer contains lines longer than 80 characters - added get_logfile() and get_verbosity() to libatm (for ilmid, by Scott Shumate) - select() consumed CPU time unnecessarily if testing for one direction while there's a lot of activity in the other direction (e.g. atmarpd wasted cycles in select() for each outbound packet while waiting for ARP messages) - the value of ATM_AAL0 has changed (from zero to 13), so all programs using AAL0 need to be recompiled - MAX_ATM_QOS_LEN has changed, so most programs using qos2text need to be recompiled - the AAL can now also be set along with the QoS parameters. This approach should be used instead of specifying it in the socket() call. - if no AAL is specified, the kernel now defaults to AAL5 (was AAL0) - updated most demons, tools, and library functions to set the AAL along with the QoS parameters Version 0.25 to 0.26 (29-JAN-1997) ==================== Bug fixes --------- - ATMARP VCCs could stay around forever even after timing out, because the process was not woken up. - the ATMARP "fix" in 0.25 introduced an infinite loop. Fixed that one too. - bit 8 in octets 6 and 7 of BLLI ("ext") were set to 1 instead of 0 when using ATM_L2_USER/ATM_L3_USER (reported by ukl2@rz.uni-karlsruhe.de) - qlib added silly offset (which fortunately happened to be zero most of the time) to dumps of large fields (fixed by Jean-Francois Moine) - IP over ATM restricted MTU changes to valid Ethernet MTU sizes - LANE: fixed two bugs that crashed zeppelin when the connection to the servers failed (by Marko Kiiskila) New features ------------ - lib/ans.c now properly computes the length of the country prefix of E.164 addresses for reverse lookups (needs file /etc/e164_cc, see USAGE) - if the new -m option is set, atmarpd now merges incoming calls into the ATMARP table if the ATM address is known (see atmarpd.8 for details) - included an RPM spec file (this is still very experimental) - NICStAR driver now also works with IP over ATM (by Stuart Daniel) - usage.txt: added description of how to run ATM NICs back-to-back (by Richard Jones) Other changes ------------- - signaling traces now also include SAAL up/down transitions - qgen no longer (unnecessarily) depends on libatm.a - started work on letting qgen handle items that appear at more than one place, e.g. repeated IEs (after an idea by Jean-Francois Moine) - did some cleanup and added comments to qlib.[ch] - added -m option to atmarp in config/redhat-4.0/atm.init - added new make target "filenames" to generate a list of all the files which are installed - config/redhat-4.0 now contains an example hosts.atm file and also a Makefile for more convenient installation - atmsigd now reads atmsigd.conf before parsing the command-line options, thereby allowing values set in the file to be superseeded - atmsigd now also logs the internal reference and the caller's address on calls establishment - ilmid: very dirty hack to give switches some time to process ILMI cold start (by Joseph Evans) Version 0.24 to 0.25 (20-DEC-1996) ==================== Bug fixes --------- - net/atm/atmarp.c:idle_timer_check only expired every other entry (reported by Marko Kiiskila) New features ------------ - LANE now also supports IPX (SNAP and 802.3; by Marko Kiiskila) - NICStAR driver now supports VPI != 0 and has configurable settings in nicstar.h (by Stuart Daniel) Other changes ------------- - ENI: TX DMA scratch are is now stored per device. This should allow multiple NICs to coexist. Version 0.23 to 0.24 (29-NOV-1996) ==================== Bug fixes --------- - atm/test/window.c was missing in 0.23 - atm/debug/delay didn't build unless atm/lib headers were already installed in /usr/include - atm/debug/znth had undefined return value - SSCOP: fixed typo (that could probably kill the SSCOP connection in case of a retransmission); fix by Olivier Bonaventure - corrected unnecessarily large buffer allocation in zatm.c:pool_index (by Jonathan Larmour) - hosts2ans.pl generated reverse addresses for the domain "ATM.INT" instead of "ATMA.INT" - atmarpd "forgot" any pre-set QOS when receiving new ARP information for the respective entry (reported by Gerald Hanusch) - window scale didn't scale the window sent in the SYNACK packet (reported by Juan-Antonio Ibanez) - LANE: better connection failure handling in zeppelin (by Marko Kiiskila) - LEC kernel timer wasn't restarted when restarting zeppelin (found by Gerald Hanusch, fixed by Marko Kiiskila) - LANE: le_flush_request was sent too early when establishing connection (by Marko Kiiskila) - zeppelin stopped operation (unwantedly) in random cases when LANE servers were down (by Marko Kiiskila) - LANE: non-blocking connections, VCC and LE ARP timeouts, and TLV fields in LE_CONFIG_RESPONSE fixed (by Marko Kiiskila) New features ------------ - atm2text now also uses ANS - signaling traces now also contain error reports from qgen - added new build-time configuration option "CISCO" (in atm/Rules.make) to work around a bug in Cisco's point-to-multipoint signaling - included example configuration files for RedHat 4.0 (see atm/config/redhat-4.0/README) Other changes ------------- - local variable "link" in atm/debug/delay.c:loop was shadowing "link" system call - cleaned up various Makefiles - qgen: bytes left in qet_space are now more meaningful - named (ANS) now also starts even if atmsigd is not running and retries to create the ATM socket in 15 minute intervals until is succeeds (by Marko Kiiskila) - LANE: (too) short le_flush_responses (Cisco 7010, sw ??.??) are now handled (by Marko Kiiskila) Version 0.22 to 0.23 (16-NOV-1996) ==================== Bug fixes --------- - fixed stupid typos in atm/lib/atmres.h and an unnecessary dependency on libresolv.a in atm/lib/Makefile (reported by Gerald Hanusch) - fixed warning about implicit declaration of function bigphysarea_init in init/main.c - I think I fixed the SSCOP VR(MR) problems that were first reported by Edouard Lamboray in '95, then by Heinz Schuerch, and that finally led to a total SSCOP breakdown (in 0.22) reported by Gerald Hanusch New features ------------ - integrated the IDT 77201 (NICStAR) driver by Matt Welsh and Stuart Daniel . Note that this driver currently only supports native ATM. - new throughput and latency benchmark test/window (by Matt Welsh) Other changes ------------- - upgrade to kernel version 2.0.25 - changed drivers/atm/eni.c:do_tx:dma to static in order to reduce kernel stack use (by 480 bytes). Note that this hack may crash systems with more than one ENI adapter. - qlib now also complains if changing a field without a fixed list of values - made a few changes to the native ATM data delivery path to handle some strangeness required by the IDT driver Version 0.21 to 0.22 (13-NOV-1996) ==================== Bug fixes --------- - (dummy) depend target was missing in atm/man (reported by Bernd Wolf) - net/atm/arequipa.c:make_aq_vcc didn't set ATM_VF_AQINUSE, thereby allowing race conditions to slip through - fixed a few potential race conditions when activating Arequipa - text2qos didn't complain if unit was omitted after multiplier, allowing misleading settings like pcr=50M (that's 19.2 Gbps) - SSCOP: took wrong branch if POLL_AFTER_RETRANSMISSION was enabled (fix by Jonathan Larmour) - SSCOP: rel_ind for ENDAK and BGREJ PDU in sscop_inconn was sent with "user" = 1 (must be 0 for "Source := SSCOP") - initialize_vr_mr now initializes vr_mr to a constant value (instead of garbage plus constant value) - atm_recvmsg now ignores msg->msg_name, as it should by POSIX 1003.1g (fix by Mike Wooten) - atm_sendmsg now fails with EISCONN instead of with EINVAL if msg->msg_name is set, as it should by POSIX 1003.1g (reported by Mike Wooten) - atm_recvmsg and atm_sendmsg now return ENOTCONN if not connected and EOPNOTSUP if flags are passed, as they should by POSIX 1003.1g - the QOS zeppelin uses for its connections can now be set with the option -q - atmarpd didn't include the QOS in PVC entries, so atmarp -a complained about them New features ------------ - kernel changes to support tcpdump with LANE (by Marko Kiiskila) - patch for tcpdump 3.0.4 (installed as tcpdump_atm) to support Classical IP and LANE (by Marko Kiiskila) - patch for BIND 4.9.5 to support ANS (ATM Name Service) functionality (by Marko Kiiskila) - added hierarchy extra/ for packages for which only patches are contained in the ATM on Linux distribution - enhanced text2atm to use ANS if local lookups fail (atm2text will be updated later) - wrote script extra/hosts2ans.pl to convert hosts.atm file to ANS zone files Other changes ------------- - changed ATM_VF_AQINUSE to ATM_VF_AQDANG and changed aq_list membership to be for dangling VCs only - added the new command-line options to ttcp_atm's online help (finally !) - atm_sendmsg now returns error codes from the driver's send function (suggested by Jonathan Larmour) - text2qos now performs a syntax check if NULL is passed in the qos argument - various minor LANE cleanup (Marko Kiiskila) - upgraded to the latest version of t2a.pl - {A2T,T2A}_REMOTE is obsolete; instead, {A2T,T2A}_LOCAL should be used if ANS lookups are _not_ desired Version 0.20 to 0.21 (18-OCT-1996) ==================== Bug fixes --------- - net/atm/common.c:atm_connect didn't refuse traffic_class == ATM_NONE in both directions - include/linux/atmsvc.h:SELECT_TOP_PCR didn't default to ATM_MAX_PCR if min_pcr == 0 && max_pcr == 0 - debug/delay swallowed one-byte packets - oops, forgot man/Makefile, so qos.7 wasn't installed - atmarpd left max_sdu at zero for automatically generated entries - atmarpd now only uses the default QOS if the traffic type is set in neither direction - signaling: if the listen queue was full, new connections were rejected with as_close instead of as_reject, thereby upsetting atmsigd - svc_accept didn't adjust the listen queue quota when rejecting incoming connection requests - fixed a few bad font selections in atmsigd(8) New features ------------ - included the window scale patch by Randy Scott and Robert Hill - -q option for ilmid to set the QOS (like in atmsigd) - new script mkbindist to install the utilities into a tar.gz file Other changes ------------- - debug/delay now prints the usage if invoked without arguments - removed the pretentious usec resolution for delays in debug/delay - removed the UBR semantics change warning - qos.7: clarified that bps are the user data rate - arequipa_attach_unchecked now also adjusts the upper layer MTU (which can violate RFC1122, but I'll tackle that later) - text2qos now also accepts fractional values, e.g. 9.6kbps Version 0.19 to 0.20 (14-OCT-1996) ==================== Bug fixes --------- - fixed a few typos and errors in the 0.18 to 0.19 change log - signaling traces only included hl_type bytes instead of hl_length bytes - TNET1570 driver: various fixes (DMA allocation, seg ring overflow, timeouts, etc.) (Christian Paetz) - TNET1570 driver: removed most compiler warnings (Christian Paetz) - listen() on an arequipa_preset() socket and arequipa_preset() on a listening socket now both return EPROTO - oops, forgot to enable the "rm" in make uninstall - kernel didn't set interface number field in act_create messages to atmarpd New features ------------ - added ioctl ATM_SETSC to enable or disable RX and TX single-copy per VC - new device driver operation change_qos (not yet implemented) - TNET1570 driver supports DEC Alphas and 64 bit PCI transfer (for CIA PCI chipsets) (Christian Paetz) - TNET1570 driver also supports the UniNET1570 board (Christian Paetz) - new functions text2qos and qos2text to convert between textual and binary QOS specifications (the format is described in man qos) - atmarp -q ip_addr qos sets the default QOS to use for all VCs created for that IP interface - new utility debug/delay to use machine as AAL5-level delay line Other changes ------------- - NLPIDs and vendor-specific application identifiers are now collected in the new file /usr/include/atmsap.h - SO_ATMQOS now attempts to change the QOS settings when invoked on an active connection - included Matt Welsh's bigphysarea patch (this isn't related to ATM, but it keeps my development source tree simpler) - arequipa_preset now initializes max_sdu to RFC1626_MTU+RFC1483LLC_LEN if zero - atmarp: new option qos to set the QOS parameters (uses text2qos) Use of pcr is deprecated. - ttcp_atm's -P option now also accepts a QOS specification string. (use of -P is deprecated. - atmsigd: new option -q and configuration clause io qos to set the QOS of the signaling VC. Use of -P or io pcr is deprecated. - removed the backward compatibility #define class traffic_class in linux/atm.h - removed obsolete keywords from atmsigd.conf language - atmarp -a now also includes QOS parameters - UBR now respects txtp.max_pcr if set - new rules for the use of [rt]xtp.traffic_class: both fields must be either equal or zero, e.g. ATM_CBR in TX and ATM_UBR in RX no longer works - doc/usage.tex now points to the man pages instead of repeating their content Version 0.18 to 0.19 (27-SEP-1996) ==================== Bug fixes --------- - sscop.c:data_sd had a comparison inversed, so generation of USTAT PDUs was wrong in some cases (by Juhana Rasanen) - sigd_enq: accessed vcc->qos without checking for vcc == NULL, causing an "Oops" in atmaddr - svc_accept: generated a general protection fault when atmsigd was killed while a process was waiting for new incoming connections - atmaddr didn't zero the address structure before calling text2atm - LANE: fixed usage of kernel timers and LE_ARP_REQUESTs should now get sent until the entry expires or a response is received (by Marko Kiiskila) - less compiler warnings from LANE servers (Marko Kiiskila) - SSCOP: fixed SDU size in AA-RETRIEVE.indication (reported by Heinz Schuerch) - NULL encapsulation for ATMARP works now (reported by Gerald Hanusch) - fixed stray EINVAL from get{sock,peer}name on PVCs (reported by Gerald Hanusch) - clip now sets max_sdu to RFC1626_MTU+RFC1483LLC_LEN when using LLC/SNAP encapsulation - if parsing of a Q.2931 message fails, atmsigd now aborts the call instead of (stupidly) trying to process the incomplete and probably inconsistent data - SUNI driver didn't properly mask out unused highest bits of some statistics counters, thereby yielding absurdly high values - zatm: changed timing of RX channel closing, so the dreaded "can't close RX channel" message should be history - fixed race between Arequipa attachment due to packet reception and closing of the Arequipa VC - local address validity check (for ATM_???ADDR) was all wrong (reported by David Simpson) - message dumper ignored fatal errors if debugging was not enabled New features ------------ - man pages for lecs, les, bus, and zeppelin (Marko Kiiskila) - configuration file name for les and bus can be defined (Marko Kiiskila) - zatm: new kernel configuration option CONFIG_ATM_ZATM_EXACT_TS now supports reception timestamps with microsecond resolution (the accuracy is only in the ms range, though) - new utility znth (ZeitNet Timer History) to monitor timer synchronization - LANE now supports up to 4 LEC network interfaces (Marko Kiiskila) - the Q.2931 message parser now recovers nicely from IE errors, logs the event, and continues parsing. The higher layers of the signaling stack don't use this information yet, though. Other changes ------------- - Arequipa's BHLI now uses a "vendor-specific application identifier" under the EPFL OUI - moved buffer/queue handling from lib/libatmd to saal/, because it is rather SSCOP-specific anyway - atm_release_vcc now complains if rx_inuse != 0 when closing (if this ever happens, it may point out dangerous races with upper layer protocols) - SO_ATMQOS now issues a warning when using UBR with {min,max}_pcr != 0 - max_sdu is now set by atmarpd to MTU+RFC1483LLC_LEN (atmarp could still override this, if necessary) - atmdump: new option -i to display the arrival interval instead of the absolute time. Also changed the time format to be more readable. - updated the kernel configuration documentation to indicate that the SMC ATM Power155 adapters are compatible with the Efficient ENI-155 - atmarpd now deletes the old table file (containing stale information) if invoked with -d (debug) Version 0.17 to 0.18 (9-SEP-1996) ==================== Bug fixes --------- - atmsigd didn't respond to SETUP followed by RELEASE with a RELEASE COMPLETE - atmsigd now implements incoming call rejection (as_indicate -> as_close) - kernel now opens the VC before sending the as_accept. This a) allows to check if the parameters are acceptable, and b) avoids a race condition between the sender and the local VC open procedure, which frequently led to loss of the beginning of the first PDU sent on a new connection. - qdump: _q_parse used the wrong length when dumping variable-length fields, yielding a fatal internal error - clip didn't set rxtp.max_sdu - svc_accept didn't set ATM_VF_HASQOS, so getsockopt SO_ATMQOS didn't work (by Marko Kiiskila) - ttcp_atm calculated Mbps as 2^20 bits/sec instead of 10^6, thereby making all results come out approximately 5% too low (by Fraz Ahmad) - added $(LDLIBS) to linking of lane/lecs (by Lawrence MacIntyre) - interface number allocation in clip and atmarp did not check for collision with the respective other name space - atmarp's -c option didn't work when omitting the "atm" in the interface name New features ------------ - new man page: arequipad.8 Other changes ------------- - simplified the internal signaling protocol by adding the as_reject message (sent by kernel in response to as_indicate; not acknowledged by demon) - packets received from Arequipa are no longer forwarded to other hosts - further ilmid improvements to use RSTADDR less frequently (by Gerald Hanusch; with a slight modification) Version 0.16 to 0.17 (2-SEP-1996) ==================== Bug fixes --------- - lib/diag.c didn't fflush when logging to a file - arequipad didn't accept the -l option - qgen: possible weird crashes because second.c:find_required accessed value->tag even if vt_id - qgen: fixed wrong PC indication in one error message in _q_parse - make spotless didn't know about new $(*PGMS) targets - atmsigd: fixed memory leak when sending messages to the kernel - atmarpd: fixed memory leak when sending messages to the network - atmsigd: didn't send final as_close when kernel closed connection immediately after requesting it (as_connect) - several minor corrections New features ------------ - added make target "uninstall" to remove all files installed by make install - atmsigd has two new options: -D dump_dir to set the dump directory and -t trace_length to set the length of the trace buffer - wrote a few man pages: atmarp.8, atmarpd.8, atmsigd.8, atmsigd.conf.4 - added automatic support for memory debugging if MPR is installed (and included a patch to make MPR 1.1 work with ELF). atmarpd and atmsigd currently use this feature. Other changes ------------- - changed "class" to "traffic_class" everywhere - make install is now implemented in a more elegant way - q.dump is now much better at finding symbolic names for numbers - q.dump no longer prints zero-length fields - qgen no longer includes constructor "microcode" in dumper - atmarp now gives more informative error messages on ioctl failure - removed obsolete ioctls SIOCGIFATMADDR and SIOCSIFATMADDR - added hack to allow ilmid to be less hostile to locally configured addresses (by Gerald Hanusch; with slight modifications) - atmarpd now automatically sets ATF_PERM of PVC entries with NULL encapsulation Version 0.15 to 0.16 (29-AUG-1996) ==================== Bug fixes --------- - fixed an "unterminated character constant" warning by CPP in qgen/uni3x - atm/sigd/q2931.c always tried to read the Cause IE of RELEASE COMPLETE messages even if it wasn't included - LANE: fixed buffer allocation and VCC timeouts (Marko Kiiskila) - LANE: when connecting directly to LES, name of the ELAN was not set properly (discoverd by Gerald Hanusch; fixed by Marko Kiiskila) - LANE, ATMARP, signaling: control sockets didn't account for messages sent back from demons (fixed by Marko Kiiskila) - permanent ATMARP entries for SVCs were ignored if no ATMARP server was configured (reported by Gerald Hanusch) - atmarp option "temp" mis-spelled as "term" (fixed by Gerald Hanusch) - forgot to undo experimental rcvbuf/sndbuf change to unsigned long - make modules didn't generate ATM modules - atmtcp_attach_hook wasn't defined when compiling ATMTCP as a module - ATM patch set dev->ip_atm to ether_arp in net/ppp.c and net/eql.c, so they failed to work as modules New features ------------ - added LANE servers (LECS, LES, and BUS) by Marko Kiiskila - Rules.make: new variable INSTROOT for easier cross-installation - atmsigd: added option -P to set the maximum PCR used on the signaling VC - atmarp: added option "pcr " (proposed by Gerald Hanusch) - added the usual -l option to arequipad Other changes ------------- - upgrade to kernel version 2.0.14 - SVCs can now be bound with any SEL value - messages of size > quota can be sent if the send buffer is empty - ilmid no longer empties the address list when refreshing the NSAP address (by Gerald Hanusch) - LANE client should now survive network reset (e.g. restart) gracefully (Marko Kiiskila) - LANE: major cleanup of zeppelin code (Marko Kiiskila) - improved loadable module support for eni and zatm (i.e. loading works now) - the message dumper can now be linked to programs that also use the compilation/parsing functions Version 0.14 to 0.15 (31-JUL-1996) ==================== Bug fixes --------- - zatm: fixed traffic shaper settings for UBR (with a little help from Joern Wohlrab) - atmsigd compilation didn't use the same UNI version configuration as qgen - field "class" in struct atm_traform broke compilation of ATM applications written in C++, so it has been renamed to "traffic_class" (reported by Furquan Ansari) - AAL parameters IE wasn't included in CONNECT, which violated RFC1755 (discovered by Robert Olsson) - zatm: removed broken sanity check for in-sequence skb delivery on RX - clip didn't have clip_open function, so SIOCSIFFLAGS on the interface failed with ENODEV - single-copy compiles again - zatm: driver doesn't pretend any longer to support single-copy (but single-copy will come back later) - QOS IE was sent with the wrong coding standard when using UNI 3.1 (with help from Fraz Ahmad) - zatm: forgot to remove some debugging code (around ZATM_TUNE) - qlib.c didn't zero the length array, leading to (rare) "not enough space" errors from QMSG (actually, the "break" mechanism seems to be flaky - will have to check) - fixed Arequipa race condition when the upper layer protocol and signaling decided to close the SVC at the same time - alloc_tx used to return NULL in out of memory conditions, thereby possibly hanging atm_sendmsg New features ------------ - ttcp_atm now also accepts names with -p - (finally !) added send/receive buffer limits and cleaned up the use of vcc->[rt]x_{inuse,quota} - added mkdiff script for automatic generation of diffs - Arequipa now works for PVCs too (but arequipad is now required for any use of Arequipa, not only for incoming connections) Other changes ------------- - atm/atm-.patch is now called atm/atm.patch (to make the diffs more useful) - the maximum SDU size is now checked in net/atm/common.c:adjust_tp - text2atm/atm2text now accepts/generates E.164 addresses with a leading + sign, as required by ANS (atm95-1532) - internal signaling protocol: added message as_error to un-overload as_close - internal signaling protocol: split as_establish into as_connect and as_accept - internal signaling prococol: as_close.reply no longer contains positive numbers - internal signaling prococol: as_bind now also carries the AAL type - atmsigd: now also checks the AAL type in as_bind messages - kernel signaling: a few minor changes - STANDARDS (i.e. UNI version) configuration option has been moved from atm/qgen/Makefile to atm/Rules.make - atmsigd's startup message now gives more useful indication of which UNI version(s) it supports - signaling no longer uses sa[sp]_[rt]xtp, so ... - sa[sp]_[rt]xtp is gone - removed atm/sigd/svc.c from the distribution. We now have many other tools for testing SVCs, so it's superfluous. - atmarpd: revalidation is now less frequent (use -DFREQUENT_REVAL for the faster timeout) - ioctl CLIP_PVC now returns the number of the new interface and clip prints its name to standard output (like atmarp -c) - clip now issues the CLIP_PVC ioctl after binding, which avoids wasting interface numbers on failed setup attempts - atmsigd -d now sets the debug level for qgen and SSCOP to DIAG_INFO, and doesn't set q_dump - zatm: added protection against I > M - atm_peek_aal5 now only aligns to page boundaries for pdu_size >= PAGE_SIZE - eni driver now spits out CRC error messages at most every other second - zatm driver now repeats RX error messages at most every other second - ttcp_atm now sleeps for a second after setting up an SVC, because the switch seems to lag behind (need to examine this further) - moved SAAL from sigd/ to saal/ (for sharing with UNI 4.0 signaling) - Arequipa sockets are now closed via arequipad instead of via atmsigd (new ioctls AREQUIPA_CTRL and AREQUIPA_CLS3RD) - various minor changes Version 0.13 to 0.14 (19-JUL-1996) ==================== Bug fixes --------- - LANE: reaction to LE_ARP_RESPONSE's wasn't always correct - LANE: compiler warnings fixed - LANE: comparing ATM addresses in checking whether connection is formed was wrong - zntune didn't divide by 1024 when displaying the "k" - .depend wasn't deleted by make spotless - ATM_GETSTAT and ATM_GETSTATZ used wrong argument type for coding ioctl number. WARNING: programs using ATM_GETSTAT{,Z} need to be recompiled. - requests to set up SVCs with ATM_NONE in both directions are now caught by svc_connect (used to yield an invalid SETUP message) - signaling: fixed connection identifier setting when acting as network side (fix by Elwyn B Davies) - ATMARP server ARP entries were undeletable - atmarp showed wrong argument in error message when given an invalid ATM address - zatm: do_tx left interrupts turned off when returning with RING_BUSY - LANE ARP hash table handling bugs fixed - atmarp: act_create is now only sent on interface creation - atmarp: act_down is now only sent once per transition - demon control SVCs are no longer closed when atmsigd dies (new VCC flag ATM_VF_META) - netdevice notifier is now properly unregistered when atmarpd goes down (not doing so caused endless loop in kernel on atmarpd restart) - sigd_enq{_atomic} never calls schedule() - atmsigd no longer "forgets" to bring up ARP server SVC before sending an InARP - atmarpd no longer dies with "timer in state 3" when the ARP server becomes unreachable - atm/atmarp.c: clip_create() now refuses creation of already existing interface - Documentation/Configure.help gave an obsolete URL for CONFIG_AREQUIPA and doc/usage.tex also mentioned the old file name - Arequipa didn't work in the outbound direction for TCP, because net/ipv4/tcp.c was missing in the kernel patch - drivers/atm/eni.c:foo raced with initialization of eni_boards if the board lost the signal _immediately_ after being initialized - atmarpd: fixed a few uninitialized entry->timer pointers (discovered by Gerald Hanusch) - atmarpd: arps entry should no longer get stuck in as_resolv New features ------------ - compiles on SparcLinux too (but only atmtcp works) Other changes ------------- - upgrade to kernel version 2.0.0 - BHLI matching changed: SAPs without BHLI are now incompatible with calls that specify a BHLI - LANE: interface stays up when zeppelin dies -> possibility for wrapper script around zeppelin - LANE: LUNI interoperability test (ATM Forum/96-0805) is now followed in setting ELAN name in LE_CONFIG_RESPONSE and LE_JOIN_RESPONSE, there is also a delay of 1 second before sending LE_CONFIG_REQUEST and LE_JOIN_REQUEST. This allows 'slow' LE servers to catch up. - LANE: no longer uses sa[sp]_[rt]xtp - LANE: now adjusts better to ATM address changes - zeppelin: new option -m to select debugging output - updated aping, aread, awrite, br, bw, atmdump, ilmid, atmarp, clip, atmarpd, and zeppelin to use setsockopt SO_ATMQOS - added option -x for ilmid to disable variable bindings (caused interoperability problems with certain switches, e.g. the LS100) - changed SO_CIRANGE into a pair of ioctls - changed return value of fetch() (passed to atm_vcc->peek) from unsigned long to __u32 - atmarp now accepts arpsrv option also for -d - zatm driver can now also read ESIs of rev. 10 boards (with help from Nikos Anerousis) - awrite: fixed txtp.max_sdu calculation in awrite (was using uninitialized variable "offset") - atmarpd: IP interface removal now has the desired effect (used to do nothing) - atmarpd: now reports and ignores unexpected interface transitions - added sigd_enq_atomic for atomic sigd_enq (so that non-Arequipa SVCs can still use the "safe" but non-atomic version) - made SIOCGIF* failures in atmarpd non-fatal (itf.c:itf_up was handling them anyway) - moved Arequipa-specific code from net/atm/clip.c to net/atm/arequipa.c, and put code common to CLIP, Arequipa, and - to a lesser extent - ATMARP into net/atm/ipcommon.[ch] - Arequipa can now be complied without CLIP - various minor documentation changes - moved ATM device initialization from net/atm/pvc.c to drivers/block/genhd.c, where most other devices are initialized too - preparation for new binary locations: tools build process now knows about four types of programs: for booting, for system use, for users, and for internal use during build - make install now hides the for loops - non-user binaries are now installed in /usr/local/sbin - struct atm_iobuf.buffer is now of type void * (was int*). Also, ATM_GETNAMES now returns the length in bytes in that field. Version 0.12 to 0.13 (7-JUN-1996) ==================== Bug fixes --------- - BHLI type used the ATM_HL_* values (which are off by one) in qgen/uni3x - atmarpd ended up in a tight select-accept loop if atmsigd went away - removed sleep in ZATM's do_tx (so it works with IP over ATM again) New features ------------ - added experimental support for Application requested IP over ATM (Arequipa), prototyped by Jean-Michel Pittet - new traffic class ATM_ANYCLASS to accept incoming SVCs without looking at the traffic parameters - added (untested) support for SO_BCTXOPT/SO_BCRXOPT Other changes ------------- - SVCs used to listen are now marked as "LISTEN" in /proc/atm/svc - added option -Q to ttcp_atm to support AREQUIPA - cleaned up the FILE macro and removed atm_dir in net/atm/proc.c Version 0.11 to 0.12 (3-JUN-1996) ==================== Bug fixes --------- - atm/lib/Makefile: had to comment out PGMS=test - distribution didn't include atm/doc/usage.txt - patch didn't include arch/i386/config.in - return 0; was missing at the end of net/atm/mmuio.c:mmu_step - atm/ilmid didn't install into INSTBIN; also made some other Makefile changes - read() returned garbage instead of error when network drops connections - POLL_AFTER_RETRANSMISSION in SSCOP didn't even compile - SVCs: bind to wildcard addresses should now work even if no local address is known yet - make clean in atm/qgen left some dirt - ATM drivers didn't free skbs when detecting an error in TX direction - SIOCMKCLIP was in the wrong #ifdef, so CLIP had to be enabled to make ATMARP usable - signaling didn't respond properly to messages with non-existent call reference New features ------------ - merged in LAN Emulation client support written by Marko Kiiskila - new socket option SO_ATMQOS at SOL_ATM to set/get QOS parameters Other changes ------------- - t2a.pl now also works with Perl 5.001 - changed the TX side of the ZATM driver to use a ring instead of a list in order to improve stability and throughput (needs some more testing) Version 0.10 to 0.11 (21-MAY-1996) ==================== Bug fixes --------- - README.DRIVERS still referenced INSTALL (it's now in USAGE) - sap_decode didn't clear BLLI part of address structure - trying to connect to NULL address fails locally instead of yielding an invalid SETUP message - bind now properly sets the local address - SVC getname now returns the traffic parameters - oops, zatm open_tx didn't return PCR - awrite printed errors for connect() as "bind: ..." - atmsigd no longer generates dummy call references (0x7fffff) - atmtcp: changed a few kfree_skb to dev_kfree_skb, which should make it work better (does anybody care to try ?) - some more dev_kfree_skb fixed for control messages from or to demons (led to some minor memory leaks) - various major fixes for CBR SVCs - RELEASE was signaled for SVCs before all data was sent - single copy tried to access mem_map with user space addresses, leading to crashes or worse - zatm: sleep_on was racing with TX completion in close_tx, leading to hangs - zatm: now fails attempts to open AAL0 VCs (used to accept them and to crash later) - BHLI encoding/decoding was broken in several ways New features ------------ - hacked in primitive leaf-only p2m support (based on an idea by Marko Kiiskil{) - the socket layer, and the zatm, eni, and atmtcp drivers now support two-phase connect - PVCs now respect max_pcr (SVCs can't for now) - lib/diag.c can now also log to a file or to syslog, and atmarpd, atmsigd, and ilmid now have a -l option to use that - new option -c config_file for atmsigd - zatm and atmtcp now also support timestamps (but zatm timestamps can be improved a lot by using the timestamps the uPD98401 generates) - Classical IP over ATM support is now configurable - added on-line help texts for configuration - added atm/test/aping, a round-trip tester for PVCs - added "flags" field to struct atm_dev and to atm_dev_register, on request by Bureau 13 Other changes ------------- - past versions of the BUGS list aren't included in the distribution anymore because I didn't update them anyway - invalid connect() calls now return an error instead of panicing atmsigd - text2atm no longer clobbers sas_addr.{blli,bhli} - greatly simplified zatm traffic shaper settings calculation (and it's better than before too) - atmsigd: diagnostics class "sig" (in atmsigd.conf) now also includes "SAP" - DPRINTK now uses GNU-specific #define foo(bar...) - signaling: PCR is now also indicated (0) for directions in which ATM_NONE is requested, which is probably "cleaner" (for CBR) - added logging priorities to most printks - the default location for atmsigd.conf changed from . to /etc - ipv4/af_inet.c: atmtcp_attach_hook is now only included when using ATM over TCP - configuration options for extended driver debugging, (old) CLIP, and ATM over TCP are turned off by default Version 0.9 to 0.10 (21-MAR-1996) =================== Bug fixes --------- - zatm: deallocated UBR shaper when closing UBR VC, which the other UBR VCs didn't really appreciate - fixed nasty memory leak for native ATM (spotted by Rolf Fiedler) New features ------------ - added Rolf Fiedler's driver for his adapter based on the TI TNETA1570 - single-copy is back again ! Other changes ------------- - eni buffers are now slightly (50%) bigger, allowing for more effective overlapped operations - documented zntune Version 0.8 to 0.9 (14-MAR-1996) ================== Bug fixes --------- - oops, accidently removed ZN1221 from drivers/pci/pci.c (so /proc/pci reported it as "unknown") - sigd didn't poll for the default interface on startup - atmarpd didn't initialize timer field in newly allocated table entries, which led to crashes - removed a few stray debugging printks in net/atm/svc.c:svc_bind - ATMARP tried to send queued packet before adding new table entry, so the packet was always discarded - sigd/sap.c: didn't allow to use different traffic classes for fwd and bwd direction - atm2text accepted SVC addresses of all zeroes - atmsigd didn't refresh its local address list properly after ilmid restart - net/atm/common.c: returned positive error codes (-vcc->reply) instead of negative ones - forgot to include maint/zntune.c in the distribution New features ------------ - sigd/svc now accepts ATM addresses in all formats supported by text2atm Other changes ------------- - upgraded to kernel version 1.3.73 - the called party number must now match the local address (if bound) - renamed ttcp.atm to ttcp_atm - all executables are now explicitly linked (so make works even without dependencies) Version 0.7 to 0.8 (12-MAR-1996) ================== Bug fixes --------- - fixed stray segmentation violation in arpd/arp.c:learn - fixed coding standard of the QoS IE if using UNI 3.0 (and made coding standard variable) - made coding standard variable for Cause IE - SSCOP didn't properly set N(MR) - list elements in STAT PDUs had host byte order - SSCF didn't call sscop_estab_resp on restart (AA-EST.ind in 1/1) - signaling didn't handle SAPs with >= 2 BLLI IEs properly - uni3x: iso_hli and user_hli were confined to 7 bytes, but UNI allows up to 8 - q_read choked on non-variable-length fields - qgen sometimes didn't read all IEs of a signaling message - fixed usage line of test/bw - qgen no longer complains about missing required fields after a break - fixed compiler warning in zntune.c - fixed ATMARP table additions (caused GPF when flushing ATMARP entry at the end of the table and possibly other problems) - qgen: q_put or'ed data instead of overwriting it, which caused problems only on surprisingly few occasions New features ------------ - atm2text and text2atm now also do name lookups via a /etc/hosts.atm file - atmaddr, atmarpd, and atmsigd now pretty-print addresses using name translation (unless invoked with -n) - atmarpd now dumps its table into /var/run/atmarpd.table and atmarp -a reads it from there - started modularizing the ENI and ZATM drivers - ilmid and atmsigd now support multiple interfaces (untested) Other changes ------------- - the documentation is now available in LaTeX and in ASCII - rewrote most of the SAP handling code (now everything is in sigd/sap.c) - proto.c:lookup_sap now picks wildcard SAP last - signaling always includes SSCS type = 0 in SETUP messages (for LANE) - changed the message format for the the kernel-demon signaling protocol - qgen is now a bit more tolerant when being fed with bad data - qgen now assumes that q_report(Q_FATAL,...) doesn't return - marked sigd/test.c as obsolete - svc_accept failing in atm_connect no longer returns success - atmsigd -n is now atmsigd -N - qgen now puts the PC in q.out.c and qd.out.c at the beginning of the code line and not on a line by itself Version 0.6 to 0.7 (2-FEB-1996) ================== Bug fixes --------- - removed TTL setting ioctl (1234) used for something entirely unrelated to ATM, oops - changed kfree_skb in atm_pop_raw to dev_kfree_skb (this fixes the socket "leak") - more unusual configurations (no PCI, no IP, no /proc) should compile now - atm_equal didn't recognize wildcards in embedded E.164 addresses - fixed net/atm/proc.c:svc_addr (too many bugs to mention) - atmarpd didn't check for ARP traffic on inbound connections - atmarpd didn't properly merge incoming connections with existing entries - various other ATMARP fixes - free list was too short in ENI driver for worst case fragmentation on 2 MB boards - signaling didn't set ISO/IEC TR9577 IPI and NLPID correctly in active open - getname looked at *sockaddr_len, which is uninitialized (need to fix this later in the common socket code) - SSCOP generated incorrect error code ("1" instead of "B") for BGN PDU problems New features ------------ - new ioctls ATM_GETADDR, ATM_RSTADDR, ATM_ADDADDR, and ATM_DELADDR to manage local ATM addresses - signaling now handles incoming RESTART, SAAL failure, and SAAL re-establishment - ATMARP now times out idle connection; ATMARP_MKIP ioctl takes a timeout argument - ATMARP (kernel) now queues one skb per pending ARP request and limits the rate of requests for the same address (default 2 req/min) - atmsigd now prints cause values when receiving a RELEASE or a RELEASE COMPLETE and returns more informative error codes - atmarpd falls back to PVC-only operation if signaling is unavailable at startup - kernel can now assign next free number on IP interface creation (atmarp prints the interface name) - qgen -D generates a Q.2931 message dumper (see USAGE for details) - qgen now checks for proper use of repetition indicator (but doesn't support repeated IEs yet) - protocols and device drivers can now use their own memory allocator in the TX direction by changing vcc->alloc_tx Other changes ------------- - upgraded to kernel version 1.3.53 - build process now uses Perl - ATM ioctls writing back data now always return the size of the data structure written - struct atmif_sioc now has a length field (recompile all atmarpd, ilmid, debug/ed, and everything in maint) - PHY driver no longer has to check validity (permissions and access) for "standard" ioctls - signaling should now also work on an interface > 0 (but there's still only one interface using signaling per host) - make install now adds /usr/include/atm.h and /usr/include/atmd.h - atmarpd now also displays if SVC has been opened actively or passively - atmaddr(8) now uses new ioctls and has different command-line syntax and even has a man page - example IP addresses in USAGE now conform to RFC1597 - diagnostics now also include the application name (optional) Version 0.5 to 0.6 (21-DEC-1995) ================== Bug fixes --------- - ARP ioctls stopped working for most non-ATM devices, oops - ATMTCP driver counted lack of memory as rx_err instead of rx_drop - select on driver using polling may have hung - atmarp man page and usage didn't indicate that the interface number is optional - restricted atmarpd and signaling control, and SIOCSIFATMADDR to the super user - atmtcp: fixed handling of VPI/VCI <= 0 for setsockopt(SO_CIRANGE) - eni and zn driver had static UBR shaper pointer, making it difficult to have more than one such device per system - eni driver initialization didn't work properly in systems with ASIC Tonga - suni.[ch]: confused MC (Master Config) and MCT (Master ConTrol) registers - (SVC) accept now returns PVC -EAGAIN as -EBUSY because the operation cannot be retried - qgen: fixed several bugs in case handling (and made defaults work for parsing) - svc_dup passed PF_ATMSVC instead of AAL to svc_create - plugged a few skb leaks in svc_accept - text2atm didn't properly NUL-terminate E.164 addresses New features ------------ - ZN1221 driver works partially for AAL5 (still hangs after a few dozen MB) (also wrote maint/zntune to monitor/adjust free buffer pools) - ENI driver now supports new Tonga ASIC boards - added Scott Shumate's ILMI demon (for automatic address registration) - text2atm: added wildcard support for SVCs (syntax: addr/bits) - new library function atm_equal to compare SVC addresses - new ioctl ATM_GETTYPE to obtain interface type name - new ioctl ATM_GETESI to obtain ESI (parallels /proc/atm/devices) - new ioctls SONET_SETFRAMING, SONET_GETFRAMING, and SONET_GETFRSENSE to handle SONET vs. SDH framing - added socket option SO_AALTYPE (SOL_AAL) to query AAL type (getsockopt only) - signaling demon is now notified on address changes (new message as_itf_notify) Other changes ------------- - known bugs are now listed in a file called BUGS - all utility programs (aread, awrite, atmdump, br, bw, clip, ttcp) now use the notation [itf.]vpi.vci for PVCs (was itf vpi vci , except for ttcp, where it was only vpi vci (no itf)) - all ioctl values have changed Note: most programs have to be recompiled because of this - sigd and arpd now register their control sockets via ioctls - (old) clip now creates interfaces with an ioctl - text2atm now returns the wildcard length, i.e. a non-zero return value no longer implies failure - push_oam now returns an int (was void) - push_oam now has several flags (in a bit set) instead of the immed argument - the peek function must now update the statistics if it rejects a packet - (ATM device) close is now only invoked after a successful open - the SUNI_GETLOOP ioctl now has an int * argument (was unsigned long *) - uPD98402 driver no longer tries to detect return of the signal (didn't work anyway - would have to sample section errors) - ATMARP no longer supports mixed PVC/SVC entries (I'm sure this will be missed a lot :-) - ATMARP no longer supports "IP address discovery" via InARP for PVCs (maybe later) - specifying an invalid AAL now yields EPROTOTYPE - specifying an invalid address family (connect, bind) now yields EAFNOSUPPORT - make install now also installs libraries (in /usr/lib) - improved many header file comments - re-arranged some comments to simplify automated document generation - added copyright statement - UNI 3.0 IE fields are now always recognized (but we shouldn't generate them) - UNI 3.0 wants octet 5a when using BCOB-X, so we'll set it to twice "No indication" - aread, awrite, br, bw, ttcp, atmsigd, and atmdump now set max_sdu - aread and awrite no longer print strerror(errno) on success Version 0.4 to 0.5 (26-OCT-1995) ================== Bug fixes --------- - now only root can open a CLIP socket (thereby creating an IP interface) - now only root can issue CLIP_NULENCAP and CLIP_LLCENCAP ioctls - atmdump: forgot default in getopt switch - eni driver: called misc_int on every interrupt - Q.2931 message description: various fixes and improvements - linux/atm.h: ATM_*_UNSPEC used the same value as ATM_*_ANY, oops ! - SSCOP is now more careful about not accessing the descriptor if it might possibly have been deleted - typo in SSCF leading to wrong response to AA-RECOVER.indication - SSCOP now correctly copies N(PS) from POLL to STAT PDUs - SSCF now discards data when not ready instead of issuing a fatal error - AAL initialization failure no longer leaks memory - closing an SVC without VCC no longer yields a GPF New features ------------ - ZN1221 driver is starting to work - new, ARP-based mechanism for IP over ATM (with atmarpd, atmarp, etc.) - /proc/atm/pvc now displays more information for CLIP PVCs (after a patch by Raghavan Menon) - added max_pcr to struct atm_trafprm (also fixed a few comments in atm.h) Note: all programs using sockaddr_atm* will have to be recompiled. - qgen now handles value lists in named selections - signaling now supports bhli/blli, plus various other minor extensions - new ioctls to set/get local ATM address - added library with address to/from text conversion functions - finally implemented getname() Other changes ------------- - eni driver: avoided potential generation of superfluous code if extended debugging is disabled - eni driver: detects new boards using ASIC PCI chip (doesn't support them yet, though) - qgen: semicolon is now comment character and no longer used to terminate clauses - qgen: replaced term "item" with "field" - linux/include/atmsap.h: removed obsolete comment "protocol cannot be fully encoded in current structure". Also re-arranged some comments to simplify automated document generation. - saal,sscf,sscop: callbacks don't pass the pointer to the descriptor of the calling protocol anymore - SSCOP no longer prints a number for non-'V' errors - improved handling of STATUS messages - select now indicates ready for writing if max_sdu packet can be enqueued without blocking - select can now also be used to check status of non-blocking connect - moved some common demon functions from sigd into a common demon library Version 0.3 to 0.4 (27-SEP-1995) ================== Bug fixes --------- - various minor documentation fixes - clip.c:atm_push_clip now updates statistics before forwarding the skb to the upper layer (which may free and overwrite the skb) New features ------------ - added partial UNI 3.x signaling - added various adapter debugging programs to the distribution - new config option CONFIG_ATM_ENI_DEBUG to enable extended debugging in eni driver Other changes ------------- - upgraded to kernel version 1.3.24 - changed the distribution directory structure (programs are now in maint/, test/, ip/, debug/, and sigd/, see INSTALL) - ATM interfaces are no longer named, only numbered. This affects the ATM_GETNAMES ioctl, all ioctls using struct atmif_sioc, the usage of atmdiag and sonetdiag, and various diagnostic kernel messages. - ATM socket state is now recorded in field "flags" (this also replaces the SVC fields "released", "registered", and "state") - added #ifdef __KERNEL__ to some header files - added "int immed" argument to send_oam - some minor modifications to the distribution process (mkdist) - removed devmap.c - SVC sockets no longer hang if the signaling demon dies Version 0.2 to 0.3 (8-SEP-1995) ================== Bug fixes --------- - select(2) didn't work (was sleeping on sock->wait instead of &ATM_SD(sock)->sleep) - ENI driver did allow binding to VPI/VCI already in use - ENI driver now properly handles PDUs with CRC errors - ENI driver had race condition when discarding PDUs causing new PDUs to be shifted in adapter memory by one word (which confused the driver quite a bit) - ENI driver now enables VC _after_ setting all pointers (caused crashes if data was already coming in while opening VC) - various bugs fixes related to SVC sockets - fixed GPF (in kernel) when running atmdiag without arguments - atmdiag now left-adjusts interface names - fixed ttcp.atm crash when not specifying vpi.vci - clip_xmit now checks for NULL vcc (e.g. after failure to connect) New features ------------ - zatm driver now reads ESI correctly - blocking svc_connect is now interruptible - atmdump now also displays the numeric PTI value of incoming cells - added RX/TX buffer quotas (default is 64 kB) - added OAM hooks to device driver interface (but there's no OAM support yet) Other changes ------------- - ENI driver now checks ID field of reassembly buffer descriptors - ENI driver now uses vremap - ENI driver now prints more useful physical layer type information (e.g. "MMF" and "UTP" instead of "UTOPIA") - some redesign of the protocol used for signaling between kernel and demon - disabled "Grr, servicing VCC twice" message in ENI driver - device drivers now have to adapt AAL0 cell header byte order - some cleanup in common.c:atm_getsockopt - device drivers are now required to use the peek function; protocols now must provide it Version 0.1 to 0.2 (15-AUG-1995) ================== Bug fixes --------- - VCC family field is now correctly set to protocol family in common.c:atm_create (was pvc.c:pvc_create). With protocol set to zero, this created all types of strange problems, because the family field is used to indicate whether an VCC slot is busy/free. - fixed race condition in common.c:atm_read (reader might have blocked even if data is ready) - fixed dereferencing of uninitialized skb->dev pointer in clip.c:atm_push_clip - SIOCSIFATMTCP now refuses to attach the same socket twice - zatm.c: fixed setting of the VPI/VCI mask - USAGE said ttcp uses -B for the bandwidth, but it's -P - mkdist didn't include man pages New features ------------ - added some /proc/atm functionality - added support for ATM_{VPI,VCI}_ANY - SIOCSIFATMTCP now returns the interface number and atmtcp(8) prints it - wrote atmtcp man page - added kernel part of SVC support Other changes ------------- - common.c: only root is now allowed to bind to reserved VCIs - Classical IP interfaces are now removed by downing by ifconfig; clip(8) returns immediately - PVC-connect for non-existing device now returns ENODEV instead of EINVAL - new field (type) in struct atm_dev to indicate device type - moved getsockopt(SO_CIRANGE) to common.c (removed atmtcp's own version) - added ci_range to struct atm_dev (and removed it from atmtcp's private structure) - added code to read the ESI to zatm.c (but that code doesn't seem to work yet) linux-atm-2.5.1/Makefile.am0000644000200100001440000000035411235577414014327 0ustar chasusersSUBDIRS = src doc EXTRA_DIST = COPYING.GPL COPYING.LGPL BUGS rpms: dist src/extra/linux-atm.spec -mkdir -p src/extra/RPMS -mkdir -p src/extra/SRPMS rpmbuild -ba src/extra/linux-atm.spec rpm: rpms @echo -n cscope: cscope -b -R linux-atm-2.5.1/NEWS0000644000200100001440000000647010735535363013000 0ustar chasusersDecember 30, 2007 Version 2.5.0 is released. April 30, 2003 Version 2.4.1 is released. October 18, 2001 Version 2.4.0 is released. August 15, 2001 Version 0.79 is released. July 7, 2000 Version 0.78 is released. April 29, 2000 Version 0.77 is released. April 13, 2000 Version 0.76 is released. April 7, 2000 Version 0.75 is released. April 2, 2000 Version 0.74 is released. March 29, 2000 Version 0.73 is released. March 25, 2000 Version 0.72 is released. March 21, 2000 Version 0.71 is released. March 20, 2000 Version 0.70 is released. March 19, 2000 Version 0.69 is released. February 28, 2000 Version 0.68 is released. February 2, 2000 Version 0.67 is released. January 31, 2000 Version 0.66 is released. January 21, 2000 Version 0.65 is released. December 1, 1999 Version 0.64 is released. November 22, 1999 Version 0.63 is released. August 27, 1999 Version 0.62 is released. June 11, 1999 Version 0.61 is released. June 3, 1999 Version 0.60 is released. June 3, 1999 Version 0.59 is released. June 3, 1999 Version 0.58 is released. May 18, 1999 Version 0.57 is released. April 22, 1999 Version 0.56 is released. March 1, 1999 Version 0.55 is released. February 19, 1999 Version 0.54 is released. February 9, 1999 Version 0.53 is released. December 5, 1998 Version 0.52 is released. November 6, 1998 Version 0.51 is released. November 3, 1998 Version 0.50 is released. November 1, 1998 Version 0.49 is released. October 30, 1998 Version 0.48 is released. October 6, 1998 Version 0.47 is released. October 5, 1998 Version 0.46 is released. October 1, 1998 Version 0.45 is released. September 24, 1998 Version 0.44 is released. August 21, 1998 Version 0.43 is released. August 19, 1998 Version 0.42 is released. August 19, 1998 Version 0.41 is released. August 13, 1998 Version 0.40 is released. August 4, 1998 Version 0.39 is released. June 25, 1998 Version 0.38 is released. June 6, 1998 Version 0.37 is released. April 23, 1998 Version 0.36 is released. March 27, 1998 Version 0.35 is released. March 13, 1998 Version 0.34 is released. November 19, 1997 Version 0.33 is released. July 10, 1997 Version 0.32 is released. April 22, 1997 Version 0.31 is released. April 10, 1997 Version 0.30 is released. April 4, 1997 Version 0.29 is released. March 27, 1997 Version 0.28 is released. March 11, 1997 Version 0.27 is released. January 29, 1997 Version 0.26 is released. December 20, 1996 Version 0.25 is released. November 29, 1996 Version 0.24 is released. November 16, 1996 Version 0.23 is released. November 13, 1996 Version 0.22 is released. October 18, 1996 Version 0.21 is released. October 14, 1996 Version 0.20 is released. September 27, 1996 Version 0.19 is released. September 9, 1996 Version 0.18 is released. September 2, 1996 Version 0.17 is released. August 29, 1996 Version 0.16 is released. July 31, 1996 Version 0.15 is released. July 19, 1996 Version 0.14 is released. June 7, 1996 Version 0.13 is released. June 3, 1996 Version 0.12 is released. May 21, 1996 Version 0.11 is released. March 21, 1996 Version 0.10 is released. March 14, 1996 Version 0.9 is released. March 12, 1996 Version 0.8 is released. February 2, 1996 Version 0.7 is released. December 21, 1995 Version 0.6 is released. October 26, 1995 Version 0.5 is released. September 27, 1995 Version 0.4 is released. September 8, 1995 Version 0.3 is released. August 15, 1995 Version 0.2 is released. linux-atm-2.5.1/README0000644000200100001440000000205511304767113013145 0ustar chasusersATM on Linux, release 2.5.1 =========================== Werner Almesberger, EPFL ICA Mitchell Blank Jr., Paul B Schroeder, Chas Williams, -------------------------------------- This is experimental software. There are known bugs and certainly even many more yet unknown problems. Internal and external interfaces may still change every once in a while. Use at your own risk. Please see http://linux-atm.sourceforge.net/ for a list of features supported by ATM on Linux. If you're just looking for the device drivers: you may find what you're looking for under src/extra/drivers. Most are already in the mainstream kernel or, for those which are not integrated, visit http://linux-atm.sourceforge.net/info.php For usage and installation instructions, please read the "ATM on Linux HOWTO" in the doc/ directory. The README in that directory explains how to generate alternative document types of the documentation. For known restrictions and bugs, please read the file BUGS. linux-atm-2.5.1/THANKS0000644000200100001440000000412007360675435013207 0ustar chasusersNOTE: This file is no longer being maintained. The names of recent contributors can be found in the ChangeLog file. THANKS may be merged with ChangeLog in the future. -------------------------- original content follows --------------------------- Although many of the files carry just one name, many other people have contributed to the project in various ways, e.g. by scrutinizing parts of the implementation or by designing and implementing prototypes of major system components. Their ideas significantly influenced the concepts that went into the final design. Here they are, in alphabetic order: Rolf Fiedler wrote the driver for the TI TNETA1570-based ATM adapter he (!) designed and built at TU Chemnitz. Angela Giannitrapani found countless bugs in the signaling code while working on Arequipa. Michael Ginis created the "ATM on Linux" logo using POV-Ray. Marko Kiiskila contributed LAN Emulation client and servers (kernel code and demon processes), the ATM Name Service (ANS) programs, and also found countless bugs in the signaling code. Ronald A. McCormick modularized the ATMTCP driver and also contributed a patch to upgrade from 1.3.24 to 1.3.50. Andre Meier designed the first concept for Q.2931 message handling and implemented a prototype. Although the current code is rewritten from scratch, many of his ideas went into the table-based message handler. Pedro Paiva did the first round of information gathering for a thorough design study of IP over ATM and signaling, which was also accompanied with some prototype implementation work. Jean-Michel Pittet examined the problems that have to be tackled in the design of SVC sockets, proposed a design, and implemented part of a prototype. In a second project, he prototyped most of the AREQUIPA code. Scott Shumate contributed the ILMI address registration demon that saves us from typing all those unpleasently long ATM NSAP addresses over and over again. The kind help of people from Efficient Networks (particularly Chase Bailey) and from ZeitNet (particularly George Marshall) was invaluable for speedy development of the respective drivers. linux-atm-2.5.1/autotools0000755000200100001440000000061710645173231014245 0ustar chasusers#!/bin/sh if [ "$1" = "--verbose" ]; then VERBOSE='--verbose' else VERBOSE='' fi echo "Running libtoolize..." libtoolize --force --copy echo "Running aclocal..." aclocal $VERBOSE echo "Running autoconf..." autoconf echo "Running autoheader..." autoheader echo "Running automake..." automake --force-missing --add-missing --copy $VERBOSE echo "Finished... Now run './configure' and 'make'..." linux-atm-2.5.1/configure.in0000644000200100001440000001612511304767113014601 0ustar chasusersdnl configure.in - the Autoconf input file dnl dnl Paul B Schroeder dnl dnl 2001-08-29: Initial configure.in for atm tools starting with version 2.4.0 dnl AC_INIT(src/include/atm.h) AM_CONFIG_HEADER(config.h) dnl Find operating system, vendor, architecture AC_CANONICAL_SYSTEM AM_INIT_AUTOMAKE(linux-atm,2.5.1) LIBVER_CURRENT="1" LIBVER_REVISION="0" LIBVER_AGE="0" AC_SUBST(LIBVER_CURRENT) AC_SUBST(LIBVER_REVISION) AC_SUBST(LIBVER_AGE) dnl Find programs needed for building and installation. AC_PROG_CC AM_PROG_LEX AC_PROG_YACC AC_PROG_INSTALL dnl libtool defs AM_PROG_LIBTOOL AC_SUBST(LIBTOOL_DEPS) dnl We have some special PERL scripts which are used during the build process AC_PATH_PROG(PERL, perl) AC_SUBST(PERL) dnl Check for needed header files AC_CHECK_HEADER(asm/errno.h, , AC_MSG_ERROR([*** Unable to find asm/errno.h!!!]) ) AC_CHECK_HEADER(linux/atmsap.h, , AC_MSG_ERROR([*** Unable to find linux/atmsap.h!!!]) ) dnl Check for libraries dnl libresolv is required AC_CHECK_LIB(resolv, main, , AC_MSG_ERROR([*** Unable to find libresolv!!!]) ) dnl We don't want libresolv everywhere, just with libatm LIBS="" INCLUDES="-I\$(top_srcdir)/src/include" CFLAGS="$INCLUDES $CFLAGS -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes" if test "x$cross_compiling" = "xyes"; then AC_MSG_CHECKING(cc for build) AC_CHECK_PROGS(CC_FOR_BUILD, gcc) AC_MSG_RESULT($CC_FOR_BUILD) CFLAGS_FOR_BUILD="$INCLUDES $CFLAGS_FOR_BUILD -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes" else CC_FOR_BUILD="${CC_FOR_BUILD-$CC}" CFLAGS_FOR_BUILD="${CFLAGS_FOR_BUILD-$CFLAGS}" fi AC_SUBST(CC_FOR_BUILD) AC_SUBST(CFLAGS_FOR_BUILD) dnl Add -d flag to bison/yacc to create intermediate .h files YACC="$YACC -d" dnl For yacc compiles... AC_DEFINE(YY_USE_CONST, [], [ ]) dnl Config files atmsigd_conf_dir=` test "x$exec_prefix" = xNONE && exec_prefix=$ac_default_prefix test "x$prefix" = xNONE && prefix=${exec_prefix} eval echo "$sysconfdir"` AC_DEFINE_UNQUOTED(ATMSIGD_CONF, "$atmsigd_conf_dir/atmsigd.conf", [Default config file location for atmsigd]) dnl Do our ./configure arguments here AC_ARG_WITH(uni, [ --with-uni=VERSION UNI version to use (3.0,3.1,4.0) [default=dynamic]], [ case "$with_uni" in "3.0" ) AC_DEFINE(UNI30, [], [ ]) ;; "3.1" ) AC_DEFINE(UNI31, [], [Note: some UNI 3.0 switches will show really strange behaviour if confronted with using 3.1 signaling, so be sure to test your network *very* carefully before permanently configuring machines to use UNI 3.1.]) ;; "4.0" ) AC_DEFINE(UNI40, [], [Some partial support for UNI 4.0 can be enabled by using UNI40]) ;; *) AC_DEFINE(DYNAMIC_UNI, [], [The UNI version can be configured at run time. Dynamic is the default. Use the explicit version selections only in case of problems.]) AC_MSG_WARN([*** UNI version not specified correctly. Defaulting to dynamic UNI.]) esac ], AC_DEFINE(DYNAMIC_UNI) ) AC_ARG_ENABLE(allow_uni30, [ --enable-allow_uni30 Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1)], [ if test "$with_uni" = "3.1" ; then AC_DEFINE(ALLOW_UNI30, [], [Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1)]) else AC_MSG_WARN([*** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni.]) fi ] ) AC_ARG_ENABLE(q2963_1, [ --enable-q2963_1 Enable peak cell rate modification as specified in Q.2963.1 (if using UNI 4.0)], [ if test "$with_uni" = "4.0" ; then AC_DEFINE(Q2963_1, [], [If using UNI40, you can also enable peak cell rate modification as specified in Q.2963.1]) else AC_MSG_WARN([*** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni.]) fi ] ) AC_ARG_ENABLE(cisco, [ --enable-cisco Enable work around for point-to-multipoint signaling bug in Cisco LS100 or LS7010 switches], AC_DEFINE(CISCO, [], [If you're using a Cisco LS100 or LS7010 switch, you should add the following line to work around a bug in their point-to-multipoint signaling (it got confused when receiving a CALL PROCEEDING, so we don't send it, which of course makes our clearing procedure slightly non-conformant):]) ) AC_ARG_ENABLE(thomflex, [ --enable-thomflex Some versions of the Thomson Thomflex 5000 won't do any signaling before they get a RESTART. Enable sending of a RESTART whenever SAAL comes up.], AC_DEFINE(THOMFLEX, [], [Some versions of the Thomson Thomflex 5000 won't do any signaling before they get a RESTART. Uncomment the next line to enable sending of a RESTART whenever SAAL comes up. Note that the RESTART ACKNOWLEDGE sent in response to the RESTART will yield a warning, because we don't implement the full RESTART state machine.]) ) dnl Use select() instead of poll() with MPOA dnl Do we still need this?? Make it selectable?? AC_DEFINE(BROKEN_POLL, [], [Use select() instead of poll() with MPOA]) AC_ARG_ENABLE(mpoa_1_1, [ --enable-mpoa_1_1 Enable proposed MPOA 1.1 features], AC_DEFINE(MPOA_1_1, [], [Use proposed MPOA 1.1 features]) ) AC_ARG_ENABLE(mpr, [ --enable-mpr Enable memory debugging (if MPR is installed)], [ case "$enable_mpr" in "" | y | ye | yes | Y | YE | YES ) AC_CHECK_LIB(mpr, main, , [ AC_MSG_WARN([*** Could not find libmpr! Is MPR installed?]) ] ) ;; esac ] ) AC_ARG_WITH(kernel-headers, [ --with-kernel-headers=path use the kernel headers found at path] ) if test "x$with_kernel_headers" != "x"; then CFLAGS="-I$with_kernel_headers/include $CFLAGS" fi dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) pmp_send="" AC_SUBST(pmp_send) AC_ARG_ENABLE(multipoint, [ --enable-multipoint Enable point to multipoint signalling], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT #include #include ], [[ int fd; struct atm_iobuf buf; ioctl(fd, ATM_ADDPARTY, &buf); ]])], [AC_DEFINE(MULTIPOINT, [], [Point to multipoint signalling support for atmsigd.]) pmp_send="pmp_send"], [AC_MSG_WARN([*** Multipoint signalling was not enabled. Missing kernel support?])])] ) atmoamd="" AC_SUBST(atmoamd) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT #include #include ], [[ int fd; ioctl(fd, ATMOAMD_CTRL, 0); ]])], [atmoamd="atmoamd"], [AC_MSG_WARN([*** atmoamd will not be built. Missing kernel support?])]) dnl Xsed="sed -e s/^X//" dnl LTLIBOBJS=`echo X"$LIBOBJS" | \$Xsed -e "s,\. [^.]* ,.lo,g;s,\.[^.]*$,.lo,"` dnl AC_SUBST(LTLIBOBJS) dnl Output all of our Makefiles AC_OUTPUT( Makefile \ doc/Makefile \ src/Makefile \ src/include/Makefile \ src/lib/Makefile \ src/test/Makefile \ src/debug/Makefile \ src/qgen/Makefile \ src/saal/Makefile \ src/q2931/Makefile \ src/sigd/Makefile \ src/maint/Makefile \ src/arpd/Makefile \ src/ilmid/Makefile \ src/ilmid/asn1/Makefile \ src/man/Makefile \ src/led/Makefile \ src/lane/Makefile \ src/mpoad/Makefile \ src/oamd/Makefile \ src/switch/Makefile \ src/switch/debug/Makefile \ src/switch/tcp/Makefile \ src/br2684/Makefile \ src/config/Makefile \ src/extra/Makefile \ src/extra/linux-atm.spec ) linux-atm-2.5.1/doc/0000755000200100001440000000000011304770374013033 5ustar chasuserslinux-atm-2.5.1/doc/CVS/0000755000200100001440000000000011304767140013463 5ustar chasuserslinux-atm-2.5.1/doc/CVS/Root0000644000200100001440000000007411304767137014340 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/doc/CVS/Repository0000644000200100001440000000001611304767137015570 0ustar chasuserslinux-atm/doc linux-atm-2.5.1/doc/CVS/Entries0000644000200100001440000000057311304767140015024 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:26 2007//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:02 2001//TV2_5_1 /README/1.2/Tue Oct 9 22:33:02 2001//TV2_5_1 /README.CLP/1.1/Mon Aug 20 21:04:03 2001//TV2_5_1 /README.tc/1.2/Tue Oct 9 22:33:02 2001//TV2_5_1 /atm-linux-howto.sgml/1.2.2.1/Mon Oct 15 23:19:42 2001//TV2_5_1 /atm-linux-howto.txt/1.2.2.1/Mon Oct 15 23:19:42 2001//TV2_5_1 D linux-atm-2.5.1/doc/CVS/Tag0000644000200100001440000000001011304767137014116 0ustar chasusersTV2_5_1 linux-atm-2.5.1/doc/.cvsignore0000644000200100001440000000002510666025262015027 0ustar chasusersMakefile Makefile.in linux-atm-2.5.1/doc/Makefile.am0000644000200100001440000000115607360675436015104 0ustar chasusersEXTRA_DIST = README.CLP README.tc atm-linux-howto.sgml atm-linux-howto.txt HOWTO = atm-linux-howto.sgml atm-linux-howto/atm-linux-howto.html: ${HOWTO} sgmltools --backend=html ${HOWTO} html: atm-linux-howto/atm-linux-howto.html atm-linux-howto.txt: ${HOWTO} sgmltools --backend=txt ${HOWTO} txt: atm-linux-howto.txt atm-linux-howto.ps: ${HOWTO} sgmltools --backend=ps ${HOWTO} ps: atm-linux-howto.ps atm-linux-howto.pdf: ${HOWTO} db2pdf ${HOWTO} pdf: atm-linux-howto.pdf atm-linux-howto.rtf: ${HOWTO} db2rtf ${HOWTO} rtf: atm-linux-howto.rtf clean: -rm -rf atm-linux-howto/ *.ps *.pdf *.rtf *.out linux-atm-2.5.1/doc/README0000644000200100001440000000123407360675436013725 0ustar chasusersIn order to build the documentation just do: make my_favorite_doc_type Where my_favorite_doc_type is one of: html - HyperText Markup Language (HTML) txt - ASCII plain text rtf - Rich Text Format ps - Postscript pdf - Portable Document Format (PDF) SGMLtools-Lite (http://sgmltools-lite.sourceforge.net/) is used to create the HTML, text, and Postscript verions of the documentation as it does the best overall job of creating those document types. It won't work if you wish to create the RTF or PDF versions of the document. You will need the Cygnus DocBook Tools available from RedHat (http://www.redhat.com/) if you wish to create those document types. linux-atm-2.5.1/doc/README.CLP0000644000200100001440000000142607340275503014332 0ustar chasusersSetting the CLP (Cell Loss Priority) bit ======================================== At the socket API: Enabled via the socket option SO_SETCLP (in SOL_ATM). Default is off. Above the driver interface: before calling dev->ops->send on an skb, vcc->atm_options must be copied into skb->atm.atm_options. This is similar to the initialization of skb->atm.iovcnt. At the driver interface: Bit ATM_ATMOPT_CLP is set in skb->atm.atm_options at the time dev->ops->send is called. A driver is not required to honor ATM_ATMOPT_CLP. ATM_ATMOPT_CLP may only be applied to AAL5 at the moment. It may or may not work for AAL0. (In the future, attempting to set SO_SETCLP for AAL0 may yield an error.) Drivers currently supporting CLP: ENI and ZATM. Note that CLP support is completely untested yet. linux-atm-2.5.1/doc/README.tc0000644000200100001440000000577407360675436014347 0ustar chasusersBasic configuration ------------------- 1. When configuring the kernel, select at least the following options under "Networking options": - kernel/User netlink socket - QoS and/or fair queueing - ATM pseudoscheduler - Packet classifier API - Routing tables based classifier You may select additional schedulers/classifiers/etc. As usual, module support is not tested yet, so you should select "y", not "m". 2. Build the kernel. 3. Download iproute2-x.x.x-now-ssXXXXXX.tar.gz from ftp://ftp.inr.ac.ru/ip-routing/ or one of its mirrors. 4. Extract iproute2: - tar xvfz iproute2-x.x.x-now-ssXXXXXX.tar.gz 5. Build and install iproute2: - cd iproute2 - edit Config to enable the ATM queuing discipline: TC_CONFIG_ATM=y - make - cp tc/tc ip/ip /sbin 6. Run a little example. We first set up the ATM queuing discipline to intercept selected traffic through our Ethernet interface "eth0" and to forward this traffic over a PVC 0.100: # tc qdisc add dev eth0 handle 1: root atm # tc class add dev eth0 classid 1:1 atm pvc 0.100 Verify that the operation succeeded: % tc qdisc show dev eth0 qdisc atm 1: % tc class show dev eth0 class atm 1: parent 1: hdr . excess clp class atm 1:1 parent 1: pvc 0.0.100 hdr aa.aa.03.00.00.00.08.00 excess clp CONNECTED (The first class is used to send all traffic that isn't explicitly selected for ATM over the normal Ethernet interface. This class is automatically created when setting up the ATM queuing discipline.) Next, we add a filter and set up a route that selects it. If you have enabled other filters, you can also try to select flows via firewall rules, etc. # tc filter add dev eth0 protocol ip route to 1 flowid 1:1 # ip route add 10.0.0.0/8 dev eth0 realm 1 Test the redirection to ATM: % ping 10.0.0.1 Remove the ATM queuing discipline again: # tc qdisc del dev eth0 root Verify that the PVC has been removed: % cat /proc/net/atm/pvc Policing (UNTESTED !) -------- When adding policing, proceed as follows: 1. Enable in "Networking options" the item "Ingres traffic policing" 2. Specify policy along with the classifier (use u32 or rsvp) 3. Decide on policing action. There are three choices: - drop packet - send packet in different class (re-classify) - send packet in same class, with CLP=1 Note that policing is only done once, so it's not possible to re-classify a second time. Also note that dropping currently isn't supported by tc. 4. Set up the classifier and the class according to the choice made: Action Classifier/filter action Class ---------- ------------------------ -------------- drop drop (not yet supported) n/a reclassify reclassify (default) excess CLASSID CLP=1 reclassify (default) excess clp Example: # tc filter add dev eth0 parent 1:1 protocol ip route \ burst 100 rate 100 # tc class add dev eth0 classid 1:1 atm pvc 0.100 excess 1:0 linux-atm-2.5.1/doc/atm-linux-howto.sgml0000644000200100001440000017320007362667416017011 0ustar chasusers
ATM on Linux HOWTO Paul Schroeder B IBM Corporation
paulsch@us.ibm.com
This document describes how to install, setup, and configure the necessary drivers and tools to support ATM networking under Linux. For the latest information, please check the ATM on Linux home page. ATM support for Linux is currently in pre-alpha stage. There is an experimental release, which supports raw ATM connections (PVCs and SVCs), IP over ATM, LAN emulation, MPOA, Arequipa, and some other goodies. 2001-10-18 2.4.0 2001-10-18 PBS Converted from LaTeX to DocBook along with some other additions and changes.
Introduction Acknowledgements and Thanks This document is largely derived from the Usage Instructions document that was included with the ATM on Linux distribution up until version 0.79. That previous document was written by Werner Almesberger wa@almsesberger.net while he was at the Institute for computer Communications and Applications (ICA). The section was primarily written by Richard Jones rjones@imcl.com. Copyright Copyright 2001 IBM Corporation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license can be found at http://www.gnu.org/copyleft/fdl.html. A large portion of this document is derived from the Usage Instructions included with the ATM on Linux distribution up to version 0.79 which was released under the BSD License, GNU General Public License (GPL), and GNU Lesser General Public License (LGPL). Mailing List There is also a mailing list on which to discuss ATM on Linux. If you have any comments, questions, suggestions, or would just like to get involved, please join the list. You can subscribe and unsubscribe to it at http://lists.sourceforge.net/lists/listinfo/linux-atm-general. The mailing list is archived at http://www.geocrawler.com/lists/3/SourceForge/6487/0/. CVS Access Users are encouraged to continue to use the releases instead of automatically assuming they should grab the latest version out of CVS. However, if you like living on the edge, here is how to do it. First, log in anonymously: % cvs -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm login Just hit return when prompted for a password. Then, checkout the repository: % cvs -z6 -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm co -P linux-atm You may also specify a branch to check out specifically: % cvs -z6 -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm co -r V2_5_0 linux-atm In either case, this will create a directory called "linux-atm" with the latest sources in it. When working inside this directory you will not need to specify the '-d' option to CVS. For instance, you could just do % cvs -z6 up -d To grab any changes that have been put in the repository (the '-d' option in the above example is to the "up" sub-command and is different than the '-d' used to specify the CVS root directory) After you have checked out the source tree, you will need to run the autotools script in the top level directory before you can configure, build, and install from that source tree: # ./autotools Running aclocal... Running autoconf... Running autoheader... Running automake... automake: configure.in: installing `./install-sh' automake: configure.in: installing `./mkinstalldirs' automake: configure.in: installing `./missing' configure.in: 26: required file `./ltconfig' not found automake: Makefile.am: installing `./INSTALL' automake: configure.in: installing `src/lane/ylwrap' Finished... Now run './configure' and 'make'... If you wish to create a tarred, gzipped distribution file or a RPM distribution file, run make dist or make rpm respectively. The tarred, gzipped file will be placed in the top level of the source tree and the RPM file will be placed in the src/extra/RPMS directory. The CVS archive may also be browsed on the web at: http://cvs.linux-atm.sourceforge.net/cgi-bin/viewcvs.cgi/linux-atm/linux-atm/. Finally, if you would like to receive email including every diff that is committed to the repository as they go in, there is a mailing list called "linux-atm-commits": http://lists.sourceforge.net/lists/listinfo/linux-atm-commits. This mailing list should be treated as receive-only. NO discussion or questions are allowed (even of patches which are sent through that list). All discussion should be kept on the linux-atm-general mailing list. Installation In order to install this package, you'll need the package itself from http://linux-atm.sourceforge.net/dist.php the Linux kernel, version 2.4.x, e.g. from ftp://ftp.kernel.org/pub/linux/kernel/v2.4/ Perl, version 4 or 5 if you want memory debugging: MPR, e.g. from ftp://ibiblio.org/pub/Linux/devel/lang/c/ The Binary RPMs If you do not wish to futz with extracting and building the source yourself, the ATM tools are also distributed in RPM format. The RPM can be installed as follows: rpm -ivh linux-atm-x.x.x-x.rpm The Source Tree First, extract the ATM on Linux distribution: tar xzvf linux-atm-x.x.x.tar.gz When extracted the distribution will create the linux-atm-x.x.x/ directory with several sub-directories. The following sub-directories are of note: doc/ Documentation (including this HOWTO) in SGML DocBook format src/sigd/ UNI 3.0, UNI 3.1, and UNI 4.0 signaling demon: atmsigd src/saal/ Signaling AAL library (SSCOP, SSCF, and SAAL) src/qgen/ Q.2931-style message handling src/ilmid/ ILMI address registration demon: ilmid src/maint/ ATM maintenance programs: atmaddr, atmdiag, atmdump, atmloop, atmtcp, enitune, esi, sonetdiag, saaldump, and zntune src/test/ Test programs: align, aping, aread, awrite, br, bw, isp, ttcp_atm, window src/arpd/ ATMARP tools and demon: atmarp, atmarpd src/led/ LAN Emulation demon: zeppelin src/lane/ LAN Emulation servers: bus, lecs, les src/mpoad/ Multi-Protocol Over ATM demon: mpcd src/debug/ Debugging tools: delay, ed, encopy, endump, svctor, zndump, and znth src/lib/ Libraries for applications and demons src/man/ Miscellaneous man pages src/extra/ Extra packages and RPM spec files. src/config/ Configuration and rc file examples src/switch/ Switch fabric control (under construction) Kernel Configuration NOTE If you are not familiar with building and installing a new kernel, please see the The Linux Kernel HOWTO After unpacking the kernel distribution, do the usual make config, make menuconfig, or make xconfig in the top-level of your Linux kernel source tree. First, enable Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) You should then be able to find the following options: Asynchronous Transfer Mode (ATM, EXPERIMENTAL) (CONFIG_ATM) Use "new" skb structure (CONFIG_ATM_SKB) Classical IP over ATM (CONFIG_ATM_CLIP) Do NOT send ICMP if no neighbour (CONFIG_ATM_CLIP_NO_ICMP) LAN Emulation (LANE) support (CONFIG_ATM_LANE) Multi-Protocol Over ATM (MPOA) support (CONFIG_ATM_MPOA) ATM over TCP (CONFIG_ATM_TCP) Efficient Networks ENI155P (CONFIG_ATM_ENI) Enable extended debugging (CONFIG_ATM_ENI_DEBUG) Fine-tune burst settings (CONFIG_ATM_ENI_TUNE_BURST) Enable 16W TX bursts (discouraged) (CONFIG_ATM_ENI_BURST_TX_16W) Enable 8W TX bursts (recommended) (CONFIG_ATM_ENI_BURST_TX_8W) Enable 4W TX bursts (optional) (CONFIG_ATM_ENI_BURST_TX_4W) Enable 2W TX bursts (optional) (CONFIG_ATM_ENI_BURST_TX_2W) Enable 16W RX bursts (discouraged) (CONFIG_ATM_ENI_BURST_RX_16W) Enable 8W RX bursts (discouraged) (CONFIG_ATM_ENI_BURST_RX_8W) Enable 4W RX bursts (recommended) (CONFIG_ATM_ENI_BURST_RX_4W) Enable 2W RX bursts (optional) (CONFIG_ATM_ENI_BURST_RX_2W) ZeitNet ZN1221/ZN1225 (CONFIG_ATM_ZATM) Enable extended debugging (CONFIG_ATM_ZATM_DEBUG) Enable usec resolution timestamps (CONFIG_ATM_ZATM_EXACT_TS) IDT 77201 (NICStAR) (CONFIG_ATM_NICSTAR) Use suni PHY driver (155Mbps) (CONFIG_ATM_NICSTAR_USE_SUNI) Use IDT77015 PHY driver (25Mbps) (CONFIG_ATM_NICSTAR_USE_IDT77105) Madge Ambassador (Collage PCI 155 Server) (CONFIG_ATM_AMBASSADOR) Enable debugging messages (CONFIG_ATM_AMBASSADOR_DEBUG) Madge Horizon [Ultra] (Collage PCI 25 and Collage PCI 155 Client) Enable debugging messages (CONFIG_ATM_HORIZON_DEBUG) Interphase ATM PCI x575/x525/x531 (CONFIG_ATM_IA) Enable debugging messages (CONFIG_ATM_IA_DEBUG) The burst settings of the ENI driver can be fine-tuned. This may be necessary if the default settings lead to buffer overruns in the PCI chipset. See the on-line help on "CONFIG_ATM_ENI_TUNE_BURST" for a detailed discussion of the implications of changing the burst settings. Note that the file drivers/atm/nicstar.h contains a few configurable settings for the IDT 77201 driver. Some drivers can also be used with certain compatible cards. The latest information about compatible cards can be found at ATM on Linux information page. Then build your kernel and reboot. Driver Messages If you've configured the ENI155p-MF driver, you should see two lines like these (512kB for the -C version, 2048kB for the -S version.): eni(itf 0): rev.0,base=0xff400000,irq=10,mem=512kB (00-20-EA-00-07-56) eni(itf 0): FPGA,MMF If you've configured the ZN1221/ZN1225 driver, you will get something like: zatm(itf 0): rev.3,base=0xf800,irq=11,mem=128kB,MMF (00-20-D4-10-2A-80) zatm(itf 0): uPD98401 0.5 at 30.024 MHz zatm(itf 0): 16 shapers, 32 pools, 2048 RX, 3958 VCs Note that your board needs to be at least at revision level 3 if you want to use it in a Triton-based system. Note that if you've configured only the ATM over TCP driver, there are no messages at startup, because ATM over TCP devices are created later using the atmtcp command. Memory Debugging If you want to enable debugging for options for memory allocations, you need to install MPR before compiling the ATM tools. If you chose to download the binary RPM package, you can install MPR like so: rpm -ivh mpr-x.x-x.rpm If you chose to download the source, extract mpr-x.x.tar.gz like so: tar xzvf mpr-x.x.tar.gz Then do: cd mpr-x.x ./configure x86-linux make make install Detection of some general mis-use of malloc and free is automatically performed if the program was compiled with MPR present. Tracing of allocations is enabled by setting MPRPC and MPRFI. See doc/mpr.html or doc/mpr.ps in the MPR distribution for details. Only little run-time overhead is incurred if memory debugging is included, but those environment variables are not set. ATM Tools Now, as the final step, configure and build the ATM tools. Configuration is only necessary if your switch uses UNI 3.1 or 4.0, or if it has certain bugs. The configuration options selected by passing the appropriate options to the ./configure script in the linux-atm distribution. NOTE Issue ./configure --help from the top-level directory of the linux-atm distribution to view all possible options. The ATM tools are built with the following commands: cd linux-atm-x.x.x ./configure make make install Unless otherwise specified when invoking ./configure, make install will install executables in the directory /usr/local/bin and /usr/local/sbin, respectively. Configuration files (except for hosts.atm which is installed in /etc) are installed in /usr/local/etc. Libraries and header files are installed in /usr/local/lib and /usr/local/include, respectively. Man pages are installed in /usr/local/man. Extra Packages Some programs are based on large packages that are already distributed outside of the ATM context. For some packages, patches are contained in the ATM on Linux distribution. They are contained in the src/extra directory of the ATM on Linux distribution. Currently, the following extra packages are available: tcpdump dumps network traffic (enhanced for ATM) ANS ATM name server (based on named 4.9.5) Note that text2atm automatically uses ANS if available, so ans only needs to be installed on systems providing name server functionality or if ATM-aware maintenance tools nslookup, etc.) are needed. A script hosts2ans.pl to convert a /etc/hosts.atm file to ANS zone files are provided in the src/extra/ANS/ directory. Its use is described at the beginning of the file. Device Setup This section describes device-specific configuration operations, and general diagnostic procedures at the ATM or SONET level. Please see the adapter documentation for details on hardware installation and diagnosis. ATM Over TCP Setup If you have no real ATM hardware, you can still exercise the API by using the ATM over TCP ``driver''. It emulates ATM devices which are directly wired to remote devices (i.e. there is no VPI/VCI swapping). To establish one (bidirectional) ``wire'', become root on both systems (or run both sides on the same system to create two connected ``interfaces'') and run the following command on one of them (let's call it ``a''): # atmtcp virtual listen Then, on the other system (``b''), run # atmtcp virtual connect address_of_a Both atmtcps will report on their progress and the kernel should display messages like: Link 0: virtual interface 2 Link 1: incoming ATMTCP connection from 127.0.0.1 and Link 0: virtual interface 3 Link 1: ATMTCP connection to localhost on the two systems. Note that atmtcp keeps running and that interrupting it breaks the virtual wire. Multiple ``wires'' can be attached to the same machine by specifying a port number (default is 2812). Note that no AAL processing is performed. It is therefore not possible to receive data using a different AAL (e.g. AAL0) than the one with which the data was sent. ZN1221/ZN1225 Tuning The ZeitNet ZN1221 and ZN1225 adapters use pre-allocated pools of free memory buffers for receiving. Whenever a VC with a certain maximum SDU size is opened for receiving, the corresponding pool is filled with free buffers by the device driver. The adapter removes buffers while it receives data. When the number of remaining buffers falls below a certain threshold, the device driver replenishes the pool again. The lower and the upper limits for the number of free buffers, and the threshold for adapting to a new data offset (see below for details), can be set using the zntune program. Usage: zntune -l low_water -h high_water -t threshold itf pool The changes are applied to all pools if no pool number is specified. Pool 2 stores 64 bytes packets, pool 3 stores 128 bytes packets, etc. Pools 0 and 1 are currently unused. The current settings and some usage statistics can be obtained by invoking zntune without specifying new parameters: zntune -z itf pool The ``Size'' column shows the buffer size in Bytes. The ``Ref'' column shows the number of open VCs using that pool. The ``Alarm'' column shows how many times the number of free buffers has fallen below the low-water mark since the counters were reset. Similarly, the ``Under'' column shows how many times an incoming PDU had to be discarded because the corresponding pool was empty. The columns ``Offs'', ``NxOf'', ``Count'' and ``Thres'' show the alignment adaption status. ``Offs'' is the offset of user data the driver currently expects in incoming PDUs. For single-copy, receive buffers are aligned accordingly so that data is received at page boundaries. ``NxOf'' is the user data offset of the most recently received PDU, where the offset differs from the currently assumed offset. ``Count'' is the number of PDUs that have been received in sequence with an offset of ``NxOf''. Finally, ``Thres'' is the threshold value ``Count'' has to reach for ``NxOf'' to become the new current offset. Use the -z option to reset the ``Alarm'' and ``Under'' counters. Files in <filename class=directory>/proc/net/atm/</filename> Some status information about the ATM subsystem can be obtained through files in /proc/net/atm/. The file /proc/net/atm/arp contains information specific to Classical IP over ATM, see section . All active ATM devices are listed in /proc/net/atm/devices. For each device, the interface number, the type label, the end system identifier (ESI), and statistics are shown. The statistics correspond to the ones available via atmdiag. Individual ATM devices may register entries of the form type:number (e.g. eni:0) which contain device-specific information. The files /proc/net/atm/pvc and /proc/net/atm/svc list all PVC and SVC sockets. For both types of sockets, the interface, VPI and VCI numbers are shown. For PVCs, this is followed by the AAL and the traffic class and the selected PCR for the receive and the transmit direction. For SVCs, the SVC state and the address of the remote party are shown. SVCs with the interface number 999 are used for special control purposes as indicated in the ``State'' column. Furthermore, /proc/net/atm/vc shows buffer sizes and additional internal information for all ATM sockets. ATM Diagnostics Various counters of the ATM device drivers can be queried with the atmdiag program. See the corresponding man page for details. SONET Diagnostics The SONET diagnostics tool can be used to monitor link performance and to simulate errors. In order to get current SONET statistics, run it with the ATM interface number as the argument, e.g. % sonetdiag 0 The counters can be reset with the -z option: # sonetdiag -z 0 The following network failures can be simulated: Some adapters may only support a subset of this. sbip insert section errors (B1) lbip insert line errors (B2) pbip insert path errors (B3) frame force (RX) frame loss los insert loss of signal lais insert line alarm indication signal pais insert path alarm indication signal hcs insert header checksum errors A failure is enabled by adding the corresponding keyword on the command line. The failure is cleared by prefixing the keyword with a minus sign, e.g. a# sonetdiag -z 0 >/dev/null b# sonetdiag -z 0 >/dev/null a# sonetdiag 0 los a# sonetdiag 0 -los b# sonetdiag 0 | grep BIP Section BIP errors: 56200 Line BIP errors: 342 Path BIP errors: 152 a# sonetdiag 0 | grep FEBE Line FEBE: 342 Path FEBE: 152 If any diagnostic error insertions are active, their keywords are shown when sonetdiag is used to obtain statistics. Note that some error insertions may be automatically switched off by the hardware. Native ATM PVCs PVCs can be used for machines that are either connected back to back or via a switch. In the latter case, the cell forwarding has to be manually set up at the switch. Traffic Tools aread/awrite and br/bw are simple programs to access the ATM API. awrite sends the text string passed as its second argument in an AAL5 PDU. aread receives one AAL5 PDU and displays it in hex. Both programs also display the return values of the corresponding system calls and the current values of errno. bw either sends its standard input or a stream of blocks containing arbitrary data (if a number is passed as its fourth argument) in 8 kB AAL5 PDUs. br receives AAL5 PDUs and writes them to standard output. The first argument of aread, awrite, br and bw is always the PVC address, i.e. the ATM interface number, the VPI and the VCI number, with a dot between elements. The interface number can be omitted if it is zero. Example: % awrite 1.0.42 hi Note that some adapters only support VPI == 0. Also, the VCI range may be limited, e.g 0 to 1023. The interface number can be obtained from the initialization message the driver printed during startup. atm0 is interface 0, atm1 is interface 1, etc. If the system is equipped with a real ATM adapter (e.g. not only atmtcp), that adapter is normally at atm0. aping receives and sends small AAL5 PDUs on a PVC. It expects that messages it sends are either echoed back or that a similar program on the other side generates a stream of messages. aping reports an error if no messages are received for too long. aping is invoked by specifying the PVC, like aread. For "real" tests, you should use the modified version of ttcp that comes with this package. The original is available at ftp://ftp.sgi.com/sgi/src/ttcp/. The following options have been added: -a use native ATM instead of UDP/TCP. The address must be in the format [itf.]vpi.vci for PVCs, or a valid ATM end system address for SVCs. -P num use a CBR connection with a peak cell rate of num cells per second. Default is to use UBR. -C disable (UDP) checksums Example: %a ttcp_atm -r -a -s 0.90 %b ttcp_atm -t -a -s 0.90 Direct Cell Access On adapters where the device driver supports access to raw cells (``AAL0''), individual cells can be composed and received with the atmdump program. Here is an example: a% sleep 10; date | ./atmdump -t 1 -c 0.51 b% ./atmdump 0.51 825079645.192480: VPI=0 VCI=51, GFC=0x0, CLP=1, Data SDU 1 (PTI 1) 46 72 69 20 46 65 62 20 32 33 20 31 32 3a 34 37 3a 32 35 20 47 4d 54 20 31 39 39 36 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Signaling ATM Hosts File Because ATM addresses are inconvenient to use, most ATM tools also accept names instead of numeric addresses. The mapping between names and numbers is defined in the file /etc/hosts.atm. The structure of this file is similar to the /etc/hosts file: numeric_address name(s) e.g. 47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 pc2-a.fqdn pc2-a 47.0005.80FFE1000000F21A26D8.0020D4102A80.00 pc3-a.fqdn pc3-a The numeric address can be specified in any of the formats described in []. The numeric address(es) of a Linux system can be determined with the command atmaddr (see also section ). Many ATM tools also attempt to find the corresponding name when displaying an address. When translating from the numeric form to a name, the first applicable name in the file is used. In addition to ATM addresses for SVCs, also PVC addresses can be stored in /etc/hosts.atm. If different address types are stored under the same name, the first suitable one will be chosen, i.e. if an application explicitly requests only SVC addresses, any PVC addresses will be ignored. ANS If you have access to the ATM Name Service (ANS, e.g because you've installed the ANS extension), you can use it instead of or in addition to the hosts file by specifying the host that runs ANS in the /etc/resolv.conf file. For performing reverse lookups of E.164 addresses, the list of telephony country codes needs to be known. That list can be obtained from the International Telecommunications Union. The List of ITU-T Recommendation E.164 Assigned Country Codes is currently available in PDF and Word document formats. NOTE Should the URL become out of date, the document should easily be found by searching for the document's title at the ITU web site. The script src/lib/pdf2e164_cc.pl in the atm-linux distribution can be used to create the E.164 county codes table with the PDF version of the country code list, e.g. perl pdf2e164_cc.pl e164_xxx.pdf >/etc/e164_cc It should be noted that pdftotext needs to be available in order to run the script above. It can be obtained with xpdf. Signaling Demon Man pages: atmsigd8 atmsigd.conf4 Note that atmsigd's support for point-to-multipoint is very limited: only operation as a single leaf of a point-to-multipoint tree works. By default, atmsigd is configured to conform to dynamically configure the UNI version. It can be compiled for UNI 3.0, 3.1, or 4.0 specifically by passing the --with-uni=VERSION to the ./configure script in the top-level directory of the linux-atm source distribution. Note that atmsigd is configured to be paranoid. If it detects unusual problems, it frequently terminates. This will (obviously) change in the future. atmsigd also looks for a configuration file at the location specified with the -c option. The default location is /usr/local/etc/atmsigd.conf. ILMI Demon ILMI provides a mechanism for automatic address configuration. If there is no switch or if the switch doesn't support ILMI, the ATM addresses must be configured manually (see section ). Note that the ILMI demon should not be used on interfaces where addresses are manually configured. The ILMI demon is started as follows: ilmid -b -d -i local_ip -l log_file -q qos -u uni_version -v -x itf -b background. Run in a forked child process after initializing. -d enables debugging output. By default, ilmid is very quiet. -i local_ip IP address to tell switch when asked for one. Can be in either dotted decimal or textual format. By default, ilmid uses some heuristics to select a local IP address. -l logfile write diagnostic messages to the specified file instead of to standard error. The special name syslog is used to send diagnostics to the system logger. -q qos configures the ILMI VC to use the specified quality of service. By default, UBR at link speed is used on the ILMI VC. -u uni_version set UNI version. Possible values are 3.0, 3.1, and 4.0. The dot can be omitted. The default value depends on how ilmid was compiled. Typically, it is 3.0. -v enables extensive debugging output. -x disable inclusion of variable bindings in the ColdstartTrap. Some switches (e.g. the LS100) only work if this option is set. If no interface number is specified, ilmid serves interface 0. You can check whether address registration was successful with the atmaddr command (see below). The agent supports only the address registration procedures specified in section 5.8 of the ATM Forum's UNI 3.1 specification. These procedures involve the switch registering the network prefix on the host and the host registering the final ATM address back on the switch. The host accomplishes this by appending an ESI (End System Identifier) and a null selector byte to the network prefix registered by the switch. The ESI is the physical or MAC address of the ATM interface. Manual Address Configuration If your switch doesn't support ILMI, you have to set the ATM address manually on the switch and on the PC(s). On the Linux side, make sure that ilmid doesn't interfere, then use the atmaddr command to set the address(es). Man pages: atmaddr8 Manual configuration of ATM addresses on the switch depends on the brand. On a Fore ASX-200, it can be done with the following command: conf nsap route new nsap_addr 152 port vpi e.g. conf nsap route new 47000580ffe1000000f21510650020ea000ee000 152 1a2 0 |<---- NSAP prefix ----->||<--ESI--->|^^ SEL The entire NSAP address always has to have a length of 40 digits. Note that you can also use addresses with a different prefix and an ESI that doesn't correspond to any ESI your adapters have. The value of the selector byte (SEL) is ignored. Running Two ATM NICs Back-to-Back It is also possible to run with two ATM NICs connected back-to-back, and no switch in between. This is great for simple test environments. First, if you're using UTP or STP-5, you need a suitable cable. Our experience with standard 100Base-T back-to-back cables was not good. It appears that the pin-out they use is different. After some false starts, we found that the following cable works: RJ45 RJ45 1 ------------ 7 2 ------------ 8 7 ------------ 1 8 ------------ 2 Pins 3, 4, 5, 6 unconnected. A better way to illustrate this may be to show the proper color schemes for the RJ45 connectors at each end of the back-to-back cable. The first connector should use the following scheme: RJ45-1 1 - Brown 2 - White/Brown 3 - Unconnected 4 - Unconnected 5 - Unconnected 6 - Unconnected 7 - Orange 8 - White/Orange And the second connector should use this scheme: RJ45-2 1 - Orange 2 - White/Orange 3 - Unconnected 4 - Unconnected 5 - Unconnected 6 - Unconnected 7 - Brown 8 - White/Brown You can also make up a loopback cable with 1 -- 7 and 2 -- 8 connected for ultra-cheap setups. Here we have two machines called ``virgil'' and ``nestor''. Substitute your own names as necessary. One side of the ATM connection needs to use the network version of atmsigd and the other side should use the normal user version. So here on nestor we start atmsigd with: atmsigd -b -m network and on virgil with: atmsigd -b Without a switch, you won't be able to use ILMI. Instead, create a /etc/hosts.atm file containing two dummy addresses. Our ATM hosts file contains: 47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 nestor-atm 47.0005.80FFE1000000F21A26D8.0020D4102A80.00 virgil-atm These are completely spurious addresses, of course, but as long as you're not connected to a public or private ATM network, I don't think it matters. To set the address correctly in the driver, we use: atmaddr -a virgil-atm on virgil, and: atmaddr -a nestor-atm on nestor. Now start atmarpd on both machines in the normal way. Now you (should) have a working ATM set-up. To get IP over ATM working, just follow the instructions in section . Q.2931 Message Dumper The Q.2931 message compiler also generates a pretty-printer for Q.2931 messages. The executable is called q.dump is stored in the src/qgen directory. Note that it is not copied elsewhere by make install. q.dump expects a sequence of whitespace-separated hex bytes at standard input and outputs the message structure if the message can be parsed. Example: % echo 09 03 80 00 05 5A 80 00 06 08 80 00 02 81 83 00 48 \ 00 00 08 | ./q.dump _pdsc = 9 "Q.2931 user-network call/connection control message" _cr_len = 3 call_ref = 8388613 (0x800005) msg_type = 0x5a "RELEASE COMPLETE" _ext = 1 _flag = 0 "instruction field not significant" _action_ind = 0 "clear call" msg_len = 6 (0x6) _ie_id = 0x08 "Cause" _ext = 1 cause_cs = 0 "ITU-T standardized" _flag = 0 "instruction field not significant" _action_ind = 0 "clear call" _ie_len = 2 (0x2) _ext = 1 location = 1 "private network serving the local user" _ext = 1 cause = 3 "no route to destination" IP Over ATM IP over ATM is supported with Classical IP over ATM (CLIP, defined in RFC1577 [], LAN Emulation (LANE, defined in [] and []) and Multi-Protocol Over ATM (MPOA, client only, defined in []). CLIP A demon process is used to generate and answer ARP queries. The actual kernel part maintains a small lookup table only containing partial information. Man pages: atmarpd8, atmarp8 atmsigd and ilmid must already be running when atmarpd is started. Use the -b option to make sure they're properly synchronized, e.g. #!/bin/sh atmsigd -b ilmid -b atmarpd -b ... works, but #!/bin/sh atmsigd & ilmid & atmarpd & ... frequently doesn't (yet). The atmarp program is used to configure ATMARP. First, you have to start atmsigd, ilmid, and atmarpd, then create an IP interface and configure it: # atmarp -c interface_name # ifconfig atm0 local_address possibly_more_options up e.g. # atmarp -c atm0 # ifconfig atm0 10.0.0.3 up If only PVCs will be used, they can now be created with a command like # atmarp -s 10.0.0.4 0.0.70 NULL encapsulation is used if the null keyword is specified. Note that ARP requires LLC/SNAP encapsulation. NULL encapsulation can therefore only be used for PVCs. When using SVCs, some additional configuration work may be necessary. If the machine is acting as the ATMARP server on that LIS, no additional configuration is required. Otherwise, the ATM address of the ATMARP server has to be configured. This is done by creating an entry for the network address with the option arpsrv set, e.g. # atmarp -s \ 10.0.0.0 47.0005.80.ffe100.0000.f215.1065.0020EA000756.00 \ arpsrv Note that the ATMARP server currently has to be started and configured before any clients are configured. The kernel ATMARP table can be read via \path{/proc/net/atm/arp}. The table used by atmarpd is regularly printed on standard error if atmarpd is started with the -d option. If atmarpd is invoked without -d, the table is written to the file atmarpd.table in the dump directory (by default /var/run; can be changed with -D), and it can be read with atmarp -a. LAN Emulation Besides Classical IP over ATM, LAN Emulation (LANE) can be used to carry IP over ATM. LANE emulates the characteristics of legacy LAN technology, such as support for broadcasts. LANE server support is described in the src/lane/USAGE file in the linux-atm distribution. Man pages: bus8, lecs8, les8, and zeppelin8 If you plan to run more than one LANE clients, LANE service or LANE clients and LANE service, you need to specify different local ATM addresses for each demon. Since all the LANE demons use similar service access points (SAPs) they need different ATM addresses to differentiate between connections. Just as with CLIP, the LANE client consists of two parts: a demon process called zeppelin which takes care of the LANE protocol and kernel part which contains LANE ARP cache. atmsigd and ilmid must already be running when zeppelin is started. When zeppelin starts, the kernel creates a new interface which can then be configured: # zeppelin possibly_more_options & # ifconfig lec0 local_address possibly_more_options up In the example below, two LANE clients are started. The first client uses default interface lec0, default listen address and tries to join the default ELAN. The other LANE client gets interface lec2 assigned to it, binds to local address mybox3, tries to join ELAN called myelan and will bridge packets between ELAN and Ethernet segments. Address mybox3 is defined in /etc/hosts.atm. Rest of the bridging can be configured by reading the Bridging mini-HOWTO. [] # zeppelin & # ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \ broadcast 10.1.1.255 up # # zeppelin -i 2 -l mybox3 -n myelan -p & # ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \ broadcast 10.1.2.255 up By default, zeppelin uses interface lec0, binds to local ATM address using selector byte value 0, tries to contact LECS using Well-Known LECS address, joins the default ELAN as defined by the LECS, accepts the MTU size as defined by the LES and will not act as an proxy LEC. These parameters can be tailored with command line options which are defined in zeppelin8. zeppelin will automatically join any ELANs which use higher MTU than the default MTU of 1516 bytes. The MTU of the LANE interface will adjust itself according to the MTU of the current ELAN. The state of the LANE ARP cache entries can be monitored through /proc/net/atm/lec. For each entry the MAC and ATM addresses and status is listed. If the entry has an active connection, the connection identifiers are also listed. The LANE service ( lecs8, les8, and bus8) is configured using configuration files. The configuration file syntax is listed on the respective manual pages. A more detailed description of Linux LANE services is discussed in Marko Kiiskilä's Master's Thesis []. MPOA The Linux MPOA client continues the tradition of user space -- kernel divided ATM services. The demon process called mpcd processes MPOA control packets while the kernel holds MPOA ingress and egress caches and does the packet forwarding. Man page: mpcd8 atmsigd and ilmid must already be running when mpcd is started. Since MPOA detects IP layer flows from LANE traffic, you need to have zeppelin running before MPOA can function. However, the order in which zeppelin and mpcd is started is not fixed. You can kill any of the demons at your will and restart it later without need to restart the other demon. The easiest way to disable MPOA is to kill the running mpcd. Below is the example from Section which starts two LANE clients. The configuration has been augmented with two MPOA clients which the LANE clients will serve. # zeppelin & # ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \ broadcast 10.1.1.255 up # mpcd -s mybox1 -l mybox2 & # # zeppelin -i 2 -l mybox3 -n myelan -p & # ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \ broadcast 10.1.2.255 up # mpcd -i 2 -s mybox4 -l mybox5 & The MPOA demon needs two different local ATM addresses which it uses when initiating and receiving data and control connections. The addresses can be the same as with e.g. zeppelin but must be different among other mpcd demons. By default, mpcd does not retrieve configuration information from the LECS. The necessary command line options and an example of using LECS are shown on the mpcd manual page. The manual page also lists the rest of the available options. The contents of MPOA ingress and egress caches can be monitored through the /proc/net/atm/mpc file. The Linux MPOA client also supports CBR traffic class for shortcuts SVCs instead of default UBR. The QoS specifications for future shortcuts can be set and modified using /proc/net/atm/mpc. # echo add 130.230.54.146 tx=80000,1600 rx=tx > /proc/net/atm/mpc # # generate enough traffic to trigger a shortcut # cat /proc/net/atm/mpc QoS entries for shortcuts: IP address TX:max_pcr pcr min_pcr max_cdv max_sdu RX:max_pcr pcr min_pcr max_cdv max_sdu 130.230.54.146 80000 0 0 0 1600 80000 0 0 0 1600 Interface 2: Ingress Entries: IP address State Holding time Packets fwded VPI VCI 130.230.4.3 invalid 1160 0 130.230.54.146 resolved 542 151 0 109 ... The shortcut to IP address 130.230.54.146 was established with the parameters shown above. There also exist patches which extend the flow detection to fully support layer 4 flows. The layer 4 flows are expressed as a 5 tuple (proto, local addr, local port, remote addr, remote port) and they identify application to application flows. If you are interested, see ftp://sunsite.tut.fi/pub/Local/linux-atm/mpoa/ for the latest patch. Bibliography References Linux ATM API Werner Almesberger http://linux-atm.sourceforge.net/API/ July 1996 Classical IP and ARP over ATM (RFC1577) Mark Laubach January 1994 LAN Emulation Over ATM -- Version 1.0 ATM Forum February 1996 LAN Emulation Over ATM -- Version 2 -- LUNI Specification ATM Forum July 1997 Multi-Protocol Over ATM -- Version 1.0 ATM Forum July 1997 Bridging mini-Howto Christopher Cole http://www.linuxdoc.org/HOWTO/mini/Bridge.html March, 2001 Implementation of LAN Emulation Over ATM in Linux Marko Kiiskilä ftp://sunsite.tut.fi/pub/Local/linux-atm/misc/ October 1996
linux-atm-2.5.1/doc/atm-linux-howto.txt0000644000200100001440000012255107362667416016671 0ustar chasusersATM on Linux HOWTO Paul B Schroeder IBM Corporation paulsch@us.ibm.com ATM support for Linux is currently in pre-alpha stage. There is an experimental release, which supports raw ATM connections (PVCs and SVCs), IP over ATM, LAN emulation, MPOA, Arequipa, and some other goodies. 2001-10-18 Revision History Revision 2.4.0 2001-10-18 Revised by: PBS Converted from LaTeX to DocBook along with some other additions and changes. This document describes how to install, setup, and configure the necessary drivers and tools to support ATM networking under Linux. For the latest information, please check the ATM on Linux home page. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Introduction Acknowledgements and Thanks This document is largely derived from the Usage Instructions document that was included with the ATM on Linux distribution up until version 0.79. That previous document was written by Werner Almesberger while he was at the Institute for computer Communications and Applications (ICA). The section Running Two ATM NICs Back-to-Back was primarily written by Richard Jones . ------------------------------------------------------------------------------- Copyright Copyright 2001 IBM Corporation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license can be found at http://www.gnu.org/copyleft/fdl.html. A large portion of this document is derived from the Usage Instructions included with the ATM on Linux distribution up to version 0.79 which was released under the BSD License, GNU General Public License (GPL), and GNU Lesser General Public License (LGPL). ------------------------------------------------------------------------------- Mailing List There is also a mailing list on which to discuss ATM on Linux. If you have any comments, questions, suggestions, or would just like to get involved, please join the list. You can subscribe and unsubscribe to it at http:// lists.sourceforge.net/lists/listinfo/linux-atm-general. The mailing list is archived at http://www.geocrawler.com/lists/3/SourceForge/ 6487/0/. ------------------------------------------------------------------------------- CVS Access Users are encouraged to continue to use the releases instead of automatically assuming they should grab the latest version out of CVS. However, if you like living on the edge, here is how to do it. First, log in anonymously: % cvs -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm login Just hit return when prompted for a password. Then, checkout the repository: % cvs -z6 -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm co -P linux-atm You may also specify a branch to check out specifically: % cvs -z6 -d:pserver:anonymous@cvs.linux-atm.sourceforge.net.:/cvsroot/linux-atm co -r V2_5_0 linux-atm In either case, this will create a directory called "linux-atm" with the latest sources in it. When working inside this directory you will not need to specify the '-d' option to CVS. For instance, you could just do % cvs -z6 up -d To grab any changes that have been put in the repository (the '-d' option in the above example is to the "up" sub-command and is different than the '-d' used to specify the CVS root directory) After you have checked out the source tree, you will need to run the autotools script in the top level directory before you can configure, build, and install from that source tree: # ./autotools Running aclocal... Running autoconf... Running autoheader... Running automake... automake: configure.in: installing `./install-sh' automake: configure.in: installing `./mkinstalldirs' automake: configure.in: installing `./missing' configure.in: 26: required file `./ltconfig' not found automake: Makefile.am: installing `./INSTALL' automake: configure.in: installing `src/lane/ylwrap' Finished... Now run './configure' and 'make'... If you wish to create a tarred, gzipped distribution file or a RPM distribution file, run make dist or make rpm respectively. The tarred, gzipped file will be placed in the top level of the source tree and the RPM file will be placed in the src/extra/RPMS directory. The CVS archive may also be browsed on the web at: http:// cvs.linux-atm.sourceforge.net/cgi-bin/viewcvs.cgi/linux-atm/linux-atm/. Finally, if you would like to receive email including every diff that is committed to the repository as they go in, there is a mailing list called "linux-atm-commits": http://lists.sourceforge.net/lists/listinfo/ linux-atm-commits. This mailing list should be treated as receive-only. NO discussion or questions are allowed (even of patches which are sent through that list). All discussion should be kept on the linux-atm-general mailing list. ------------------------------------------------------------------------------- Installation In order to install this package, you'll need * the package itself from http://linux-atm.sourceforge.net/dist.php * the Linux kernel, version 2.4.x, e.g. from ftp://ftp.kernel.org/pub/linux/ kernel/v2.4/ * Perl, version 4 or 5 * if you want memory debugging: MPR, e.g. from ftp://ibiblio.org/pub/Linux/ devel/lang/c/ ------------------------------------------------------------------------------- The Binary RPMs If you do not wish to futz with extracting and building the source yourself, the ATM tools are also distributed in RPM format. The RPM can be installed as follows: rpm -ivh linux-atm-x.x.x-x.rpm ------------------------------------------------------------------------------- The Source Tree First, extract the ATM on Linux distribution: tar xzvf linux-atm-x.x.x.tar.gz When extracted the distribution will create the linux-atm-x.x.x/ directory with several sub-directories. The following sub-directories are of note: doc/ Documentation (including this HOWTO) in SGML DocBook format src/sigd/ UNI 3.0, UNI 3.1, and UNI 4.0 signaling demon: atmsigd src/saal/ Signaling AAL library (SSCOP, SSCF, and SAAL) src/qgen/ Q.2931-style message handling src/ilmid/ ILMI address registration demon: ilmid src/maint/ ATM maintenance programs: atmaddr, atmdiag, atmdump, atmloop, atmtcp, enitune, esi, sonetdiag, saaldump, and zntune src/test/ Test programs: align, aping, aread, awrite, br, bw, isp, ttcp_atm, window src/arpd/ ATMARP tools and demon: atmarp, atmarpd src/led/ LAN Emulation demon: zeppelin src/lane/ LAN Emulation servers: bus, lecs, les src/mpoad/ Multi-Protocol Over ATM demon: mpcd src/debug/ Debugging tools: delay, ed, encopy, endump, svctor, zndump, and znth src/lib/ Libraries for applications and demons src/man/ Miscellaneous man pages src/extra/ Extra packages and RPM spec files. src/config/ Configuration and rc file examples src/switch/ Switch fabric control (under construction) ------------------------------------------------------------------------------- Kernel Configuration NOTE: If you are not familiar with building and installing a new kernel, please see the The Linux Kernel HOWTO After unpacking the kernel distribution, do the usual make config, make menuconfig, or make xconfig in the top-level of your Linux kernel source tree. First, enable Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) You should then be able to find the following options: Asynchronous Transfer Mode (ATM, EXPERIMENTAL) (CONFIG_ATM) Use "new" skb structure (CONFIG_ATM_SKB) Classical IP over ATM (CONFIG_ATM_CLIP) Do NOT send ICMP if no neighbour (CONFIG_ATM_CLIP_NO_ICMP) LAN Emulation (LANE) support (CONFIG_ATM_LANE) Multi-Protocol Over ATM (MPOA) support (CONFIG_ATM_MPOA) ATM over TCP (CONFIG_ATM_TCP) Efficient Networks ENI155P (CONFIG_ATM_ENI) Enable extended debugging (CONFIG_ATM_ENI_DEBUG) Fine-tune burst settings (CONFIG_ATM_ENI_TUNE_BURST) Enable 16W TX bursts (discouraged) (CONFIG_ATM_ENI_BURST_TX_16W) Enable 8W TX bursts (recommended) (CONFIG_ATM_ENI_BURST_TX_8W) Enable 4W TX bursts (optional) (CONFIG_ATM_ENI_BURST_TX_4W) Enable 2W TX bursts (optional) (CONFIG_ATM_ENI_BURST_TX_2W) Enable 16W RX bursts (discouraged) (CONFIG_ATM_ENI_BURST_RX_16W) Enable 8W RX bursts (discouraged) (CONFIG_ATM_ENI_BURST_RX_8W) Enable 4W RX bursts (recommended) (CONFIG_ATM_ENI_BURST_RX_4W) Enable 2W RX bursts (optional) (CONFIG_ATM_ENI_BURST_RX_2W) ZeitNet ZN1221/ZN1225 (CONFIG_ATM_ZATM) Enable extended debugging (CONFIG_ATM_ZATM_DEBUG) Enable usec resolution timestamps (CONFIG_ATM_ZATM_EXACT_TS) IDT 77201 (NICStAR) (CONFIG_ATM_NICSTAR) Use suni PHY driver (155Mbps) (CONFIG_ATM_NICSTAR_USE_SUNI) Use IDT77015 PHY driver (25Mbps) (CONFIG_ATM_NICSTAR_USE_IDT77105) Madge Ambassador (Collage PCI 155 Server) (CONFIG_ATM_AMBASSADOR) Enable debugging messages (CONFIG_ATM_AMBASSADOR_DEBUG) Madge Horizon [Ultra] (Collage PCI 25 and Collage PCI 155 Client) Enable debugging messages (CONFIG_ATM_HORIZON_DEBUG) Interphase ATM PCI x575/x525/x531 (CONFIG_ATM_IA) Enable debugging messages (CONFIG_ATM_IA_DEBUG) The burst settings of the ENI driver can be fine-tuned. This may be necessary if the default settings lead to buffer overruns in the PCI chipset. See the on-line help on "CONFIG_ATM_ENI_TUNE_BURST" for a detailed discussion of the implications of changing the burst settings. Note that the file drivers/atm/nicstar.h contains a few configurable settings for the IDT 77201 driver. Some drivers can also be used with certain compatible cards. The latest information about compatible cards can be found at ATM on Linux information page. Then build your kernel and reboot. ------------------------------------------------------------------------------- Driver Messages If you've configured the ENI155p-MF driver, you should see two lines like these (512kB for the -C version, 2048kB for the -S version.): eni(itf 0): rev.0,base=0xff400000,irq=10,mem=512kB (00-20-EA-00-07-56) eni(itf 0): FPGA,MMF If you've configured the ZN1221/ZN1225 driver, you will get something like: zatm(itf 0): rev.3,base=0xf800,irq=11,mem=128kB,MMF (00-20-D4-10-2A-80) zatm(itf 0): uPD98401 0.5 at 30.024 MHz zatm(itf 0): 16 shapers, 32 pools, 2048 RX, 3958 VCs Note that your board needs to be at least at revision level 3 if you want to use it in a Triton-based system. Note that if you've configured only the ATM over TCP driver, there are no messages at startup, because ATM over TCP devices are created later using the atmtcp command. ------------------------------------------------------------------------------- Memory Debugging If you want to enable debugging for options for memory allocations, you need to install MPR before compiling the ATM tools. If you chose to download the binary RPM package, you can install MPR like so: rpm -ivh mpr-x.x-x.rpm If you chose to download the source, extract mpr-x.x.tar.gz like so: tar xzvf mpr-x.x.tar.gz Then do: cd mpr-x.x ./configure x86-linux make make install Detection of some general mis-use of malloc and free is automatically performed if the program was compiled with MPR present. Tracing of allocations is enabled by setting MPRPC and MPRFI. See doc/mpr.html or doc/mpr.ps in the MPR distribution for details. Only little run-time overhead is incurred if memory debugging is included, but those environment variables are not set. ------------------------------------------------------------------------------- ATM Tools Now, as the final step, configure and build the ATM tools. Configuration is only necessary if your switch uses UNI 3.1 or 4.0, or if it has certain bugs. The configuration options selected by passing the appropriate options to the ./ configure script in the linux-atm distribution. NOTE: Issue ./configure --help from the top-level directory of the linux-atm distribution to view all possible options. The ATM tools are built with the following commands: cd linux-atm-x.x.x ./configure make make install Unless otherwise specified when invoking ./configure, make install will install executables in the directory /usr/local/bin and /usr/local/sbin, respectively. Configuration files (except for hosts.atm which is installed in /etc) are installed in /usr/local/etc. Libraries and header files are installed in /usr/ local/lib and /usr/local/include, respectively. Man pages are installed in /usr /local/man. ------------------------------------------------------------------------------- Extra Packages Some programs are based on large packages that are already distributed outside of the ATM context. For some packages, patches are contained in the ATM on Linux distribution. They are contained in the src/extra directory of the ATM on Linux distribution. Currently, the following extra packages are available: tcpdump dumps network traffic (enhanced for ATM) ANS ATM name server (based on named 4.9.5) Note that text2atm automatically uses ANS if available, so ans only needs to be installed on systems providing name server functionality or if ATM-aware maintenance tools nslookup, etc.) are needed. A script hosts2ans.pl to convert a /etc/hosts.atm file to ANS zone files are provided in the src/extra/ANS/ directory. Its use is described at the beginning of the file. ------------------------------------------------------------------------------- Device Setup This section describes device-specific configuration operations, and general diagnostic procedures at the ATM or SONET level. Please see the adapter documentation for details on hardware installation and diagnosis. ------------------------------------------------------------------------------- ATM Over TCP Setup If you have no real ATM hardware, you can still exercise the API by using the ATM over TCP ``driver''. It emulates ATM devices which are directly wired to remote devices (i.e. there is no VPI/VCI swapping). To establish one (bidirectional) ``wire'', become root on both systems (or run both sides on the same system to create two connected ``interfaces'') and run the following command on one of them (let's call it ``a''): # atmtcp virtual listen Then, on the other system (``b''), run # atmtcp virtual connect address_of_a Both atmtcps will report on their progress and the kernel should display messages like: Link 0: virtual interface 2 Link 1: incoming ATMTCP connection from 127.0.0.1 and Link 0: virtual interface 3 Link 1: ATMTCP connection to localhost on the two systems. Note that atmtcp keeps running and that interrupting it breaks the virtual wire. Multiple ``wires'' can be attached to the same machine by specifying a port number (default is 2812). Note that no AAL processing is performed. It is therefore not possible to receive data using a different AAL (e.g. AAL0) than the one with which the data was sent. ------------------------------------------------------------------------------- ZN1221/ZN1225 Tuning The ZeitNet ZN1221 and ZN1225 adapters use pre-allocated pools of free memory buffers for receiving. Whenever a VC with a certain maximum SDU size is opened for receiving, the corresponding pool is filled with free buffers by the device driver. The adapter removes buffers while it receives data. When the number of remaining buffers falls below a certain threshold, the device driver replenishes the pool again. The lower and the upper limits for the number of free buffers, and the threshold for adapting to a new data offset (see below for details), can be set using the zntune program. Usage: zntune [-l low_water] [-h high_water] [-t threshold] itf [pool] The changes are applied to all pools if no pool number is specified. Pool 2 stores 64 bytes packets, pool 3 stores 128 bytes packets, etc. Pools 0 and 1 are currently unused. The current settings and some usage statistics can be obtained by invoking zntune without specifying new parameters: zntune [-z] itf [pool] The ``Size'' column shows the buffer size in Bytes. The ``Ref'' column shows the number of open VCs using that pool. The ``Alarm'' column shows how many times the number of free buffers has fallen below the low-water mark since the counters were reset. Similarly, the ``Under'' column shows how many times an incoming PDU had to be discarded because the corresponding pool was empty. The columns ``Offs'', ``NxOf'', ``Count'' and ``Thres'' show the alignment adaption status. ``Offs'' is the offset of user data the driver currently expects in incoming PDUs. For single-copy, receive buffers are aligned accordingly so that data is received at page boundaries. ``NxOf'' is the user data offset of the most recently received PDU, where the offset differs from the currently assumed offset. ``Count'' is the number of PDUs that have been received in sequence with an offset of ``NxOf''. Finally, ``Thres'' is the threshold value ``Count'' has to reach for ``NxOf'' to become the new current offset. Use the -z option to reset the ``Alarm'' and ``Under'' counters. ------------------------------------------------------------------------------- Files in /proc/net/atm/ Some status information about the ATM subsystem can be obtained through files in /proc/net/atm/. The file /proc/net/atm/arp contains information specific to Classical IP over ATM, see section CLIP. All active ATM devices are listed in /proc/net/atm/devices. For each device, the interface number, the type label, the end system identifier (ESI), and statistics are shown. The statistics correspond to the ones available via atmdiag. Individual ATM devices may register entries of the form type:number (e.g. eni: 0) which contain device-specific information. The files /proc/net/atm/pvc and /proc/net/atm/svc list all PVC and SVC sockets. For both types of sockets, the interface, VPI and VCI numbers are shown. For PVCs, this is followed by the AAL and the traffic class and the selected PCR for the receive and the transmit direction. For SVCs, the SVC state and the address of the remote party are shown. SVCs with the interface number 999 are used for special control purposes as indicated in the ``State'' column. Furthermore, /proc/net/atm/vc shows buffer sizes and additional internal information for all ATM sockets. ------------------------------------------------------------------------------- ATM Diagnostics Various counters of the ATM device drivers can be queried with the atmdiag program. See the corresponding man page for details. ------------------------------------------------------------------------------- SONET Diagnostics The SONET diagnostics tool can be used to monitor link performance and to simulate errors. In order to get current SONET statistics, run it with the ATM interface number as the argument, e.g. % sonetdiag 0 The counters can be reset with the -z option: # sonetdiag -z 0 The following network failures can be simulated:[1] sbip insert section errors (B1) lbip insert line errors (B2) pbip insert path errors (B3) frame force (RX) frame loss los insert loss of signal lais insert line alarm indication signal pais insert path alarm indication signal hcs insert header checksum errors A failure is enabled by adding the corresponding keyword on the command line. The failure is cleared by prefixing the keyword with a minus sign, e.g. a# sonetdiag -z 0 >/dev/null b# sonetdiag -z 0 >/dev/null a# sonetdiag 0 los a# sonetdiag 0 -los b# sonetdiag 0 | grep BIP Section BIP errors: 56200 Line BIP errors: 342 Path BIP errors: 152 a# sonetdiag 0 | grep FEBE Line FEBE: 342 Path FEBE: 152 If any diagnostic error insertions are active, their keywords are shown when sonetdiag is used to obtain statistics. Note that some error insertions may be automatically switched off by the hardware. ------------------------------------------------------------------------------- Native ATM PVCs PVCs can be used for machines that are either connected back to back or via a switch. In the latter case, the cell forwarding has to be manually set up at the switch. ------------------------------------------------------------------------------- Traffic Tools aread/awrite and br/bw are simple programs to access the ATM API. awrite sends the text string passed as its second argument in an AAL5 PDU. aread receives one AAL5 PDU and displays it in hex. Both programs also display the return values of the corresponding system calls and the current values of errno. bw either sends its standard input or a stream of blocks containing arbitrary data (if a number is passed as its fourth argument) in 8 kB AAL5 PDUs. br receives AAL5 PDUs and writes them to standard output. The first argument of aread, awrite, br and bw is always the PVC address, i.e. the ATM interface number, the VPI and the VCI number, with a dot between elements. The interface number can be omitted if it is zero. Example: % awrite 1.0.42 hi Note that some adapters only support VPI == 0. Also, the VCI range may be limited, e.g 0 to 1023. The interface number can be obtained from the initialization message the driver printed during startup. atm0 is interface 0, atm1 is interface 1, etc. If the system is equipped with a real ATM adapter (e.g. not only atmtcp), that adapter is normally at atm0. aping receives and sends small AAL5 PDUs on a PVC. It expects that messages it sends are either echoed back or that a similar program on the other side generates a stream of messages. aping reports an error if no messages are received for too long. aping is invoked by specifying the PVC, like aread. For "real" tests, you should use the modified version of ttcp that comes with this package. The original is available at ftp://ftp.sgi.com/sgi/src/ttcp/. The following options have been added: -a use native ATM instead of UDP/TCP. The address must be in the format [itf.] vpi.vci for PVCs, or a valid ATM end system address for SVCs. -P num use a CBR connection with a peak cell rate of num cells per second. Default is to use UBR. -C disable (UDP) checksums Example: %a ttcp_atm -r -a -s 0.90 %b ttcp_atm -t -a -s 0.90 ------------------------------------------------------------------------------- Direct Cell Access On adapters where the device driver supports access to raw cells (``AAL0''), individual cells can be composed and received with the atmdump program. Here is an example: a% sleep 10; date | ./atmdump -t 1 -c 0.51 b% ./atmdump 0.51 825079645.192480: VPI=0 VCI=51, GFC=0x0, CLP=1, Data SDU 1 (PTI 1) 46 72 69 20 46 65 62 20 32 33 20 31 32 3a 34 37 3a 32 35 20 47 4d 54 20 31 39 39 36 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ------------------------------------------------------------------------------- Signaling ATM Hosts File Because ATM addresses are inconvenient to use, most ATM tools also accept names instead of numeric addresses. The mapping between names and numbers is defined in the file /etc/hosts.atm. The structure of this file is similar to the /etc/ hosts file: numeric_address name(s) e.g. 47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 pc2-a.fqdn pc2-a 47.0005.80FFE1000000F21A26D8.0020D4102A80.00 pc3-a.fqdn pc3-a The numeric address can be specified in any of the formats described in [api]. The numeric address(es) of a Linux system can be determined with the command atmaddr -n (see also section Manual Address Configuration). Many ATM tools also attempt to find the corresponding name when displaying an address. When translating from the numeric form to a name, the first applicable name in the file is used. In addition to ATM addresses for SVCs, also PVC addresses can be stored in /etc /hosts.atm. If different address types are stored under the same name, the first suitable one will be chosen, i.e. if an application explicitly requests only SVC addresses, any PVC addresses will be ignored. ------------------------------------------------------------------------------- ANS If you have access to the ATM Name Service (ANS, e.g because you've installed the ANS extension), you can use it instead of or in addition to the hosts file by specifying the host that runs ANS in the /etc/resolv.conf file. For performing reverse lookups of E.164 addresses, the list of telephony country codes needs to be known. That list can be obtained from the International Telecommunications Union. The List of ITU-T Recommendation E.164 Assigned Country Codes is currently available in PDF and Word document formats. NOTE: Should the URL become out of date, the document should easily be found by searching for the document's title at the ITU web site. The script src/lib/pdf2e164_cc.pl in the atm-linux distribution can be used to create the E.164 county codes table with the PDF version of the country code list, e.g. perl pdf2e164_cc.pl e164_xxx.pdf >/etc/e164_cc It should be noted that pdftotext needs to be available in order to run the script above. It can be obtained with xpdf. ------------------------------------------------------------------------------- Signaling Demon Man pages: atmsigd(8) atmsigd.conf(4) Note that atmsigd's support for point-to-multipoint is very limited: only operation as a single leaf of a point-to-multipoint tree works. By default, atmsigd is configured to conform to dynamically configure the UNI version. It can be compiled for UNI 3.0, 3.1, or 4.0 specifically by passing the --with-uni=VERSION to the ./configure script in the top-level directory of the linux-atm source distribution. Note that atmsigd is configured to be paranoid. If it detects unusual problems, it frequently terminates. This will (obviously) change in the future. atmsigd also looks for a configuration file at the location specified with the -c option. The default location is /usr/local/etc/atmsigd.conf. ------------------------------------------------------------------------------- ILMI Demon ILMI provides a mechanism for automatic address configuration. If there is no switch or if the switch doesn't support ILMI, the ATM addresses must be configured manually (see section Manual Address Configuration). Note that the ILMI demon should not be used on interfaces where addresses are manually configured. The ILMI demon is started as follows: ilmid [-b] [-d] [-i local_ip] [-l log_file] [-q qos] [-u uni_version] [-v] [-x] [itf] -b background. Run in a forked child process after initializing. -d enables debugging output. By default, ilmid is very quiet. -i local_ip IP address to tell switch when asked for one. Can be in either dotted decimal or textual format. By default, ilmid uses some heuristics to select a local IP address. -l logfile write diagnostic messages to the specified file instead of to standard error. The special name syslog is used to send diagnostics to the system logger. -q qos configures the ILMI VC to use the specified quality of service. By default, UBR at link speed is used on the ILMI VC. -u uni_version set UNI version. Possible values are 3.0, 3.1, and 4.0. The dot can be omitted. The default value depends on how ilmid was compiled. Typically, it is 3.0. -v enables extensive debugging output. -x disable inclusion of variable bindings in the ColdstartTrap. Some switches (e.g. the LS100) only work if this option is set. If no interface number is specified, ilmid serves interface 0. You can check whether address registration was successful with the atmaddr command (see below). The agent supports only the address registration procedures specified in section 5.8 of the ATM Forum's UNI 3.1 specification. These procedures involve the switch registering the network prefix on the host and the host registering the final ATM address back on the switch. The host accomplishes this by appending an ESI (End System Identifier) and a null selector byte to the network prefix registered by the switch. The ESI is the physical or MAC address of the ATM interface. ------------------------------------------------------------------------------- Manual Address Configuration If your switch doesn't support ILMI, you have to set the ATM address manually on the switch and on the PC(s). On the Linux side, make sure that ilmid doesn't interfere, then use the atmaddr command to set the address(es). Man pages: atmaddr(8) Manual configuration of ATM addresses on the switch depends on the brand. On a Fore ASX-200, it can be done with the following command: conf nsap route new nsap_addr 152 port vpi e.g. conf nsap route new 47000580ffe1000000f21510650020ea000ee000 152 1a2 0 |<---- NSAP prefix ----->||<--ESI--->|^^ SEL The entire NSAP address always has to have a length of 40 digits. Note that you can also use addresses with a different prefix and an ESI that doesn't correspond to any ESI your adapters have. The value of the selector byte (SEL) is ignored. ------------------------------------------------------------------------------- Running Two ATM NICs Back-to-Back It is also possible to run with two ATM NICs connected back-to-back, and no switch in between. This is great for simple test environments. First, if you're using UTP or STP-5, you need a suitable cable. Our experience with standard 100Base-T back-to-back cables was not good. It appears that the pin-out they use is different. After some false starts, we found that the following cable works: RJ45 RJ45 1 ------------ 7 2 ------------ 8 7 ------------ 1 8 ------------ 2 Pins 3, 4, 5, 6 unconnected. A better way to illustrate this may be to show the proper color schemes for the RJ45 connectors at each end of the back-to-back cable. The first connector should use the following scheme: RJ45-1 1 - Brown 2 - White/Brown 3 - Unconnected 4 - Unconnected 5 - Unconnected 6 - Unconnected 7 - Orange 8 - White/Orange And the second connector should use this scheme: RJ45-2 1 - Orange 2 - White/Orange 3 - Unconnected 4 - Unconnected 5 - Unconnected 6 - Unconnected 7 - Brown 8 - White/Brown You can also make up a loopback cable with 1 -- 7 and 2 -- 8 connected for ultra-cheap setups. Here we have two machines called ``virgil'' and ``nestor''. Substitute your own names as necessary. One side of the ATM connection needs to use the network version of atmsigd and the other side should use the normal user version. So here on nestor we start atmsigd with: atmsigd -b -m network and on virgil with: atmsigd -b Without a switch, you won't be able to use ILMI. Instead, create a /etc/ hosts.atm file containing two dummy addresses. Our ATM hosts file contains: 47.0005.80FFE1000000F21A26D8.0020EA000EE0.00 nestor-atm 47.0005.80FFE1000000F21A26D8.0020D4102A80.00 virgil-atm These are completely spurious addresses, of course, but as long as you're not connected to a public or private ATM network, I don't think it matters. To set the address correctly in the driver, we use: atmaddr -a virgil-atm on virgil, and: atmaddr -a nestor-atm on nestor. Now start atmarpd on both machines in the normal way. Now you (should) have a working ATM set-up. To get IP over ATM working, just follow the instructions in section IP Over ATM. ------------------------------------------------------------------------------- Q.2931 Message Dumper The Q.2931 message compiler also generates a pretty-printer for Q.2931 messages. The executable is called q.dump is stored in the src/qgen directory. Note that it is not copied elsewhere by make install. q.dump expects a sequence of whitespace-separated hex bytes at standard input and outputs the message structure if the message can be parsed. Example: % echo 09 03 80 00 05 5A 80 00 06 08 80 00 02 81 83 00 48 \ 00 00 08 | ./q.dump _pdsc = 9 "Q.2931 user-network call/connection control message" _cr_len = 3 call_ref = 8388613 (0x800005) msg_type = 0x5a "RELEASE COMPLETE" _ext = 1 _flag = 0 "instruction field not significant" _action_ind = 0 "clear call" msg_len = 6 (0x6) _ie_id = 0x08 "Cause" _ext = 1 cause_cs = 0 "ITU-T standardized" _flag = 0 "instruction field not significant" _action_ind = 0 "clear call" _ie_len = 2 (0x2) _ext = 1 location = 1 "private network serving the local user" _ext = 1 cause = 3 "no route to destination" ------------------------------------------------------------------------------- IP Over ATM IP over ATM is supported with Classical IP over ATM (CLIP, defined in RFC1577 [ RFC1577], LAN Emulation (LANE, defined in [lanev1] and [lanev2]) and Multi-Protocol Over ATM (MPOA, client only, defined in [mpoav1]). ------------------------------------------------------------------------------- CLIP A demon process is used to generate and answer ARP queries. The actual kernel part maintains a small lookup table only containing partial information. Man pages: atmarpd(8), atmarp(8) atmsigd and ilmid must already be running when atmarpd is started. Use the -b option to make sure they're properly synchronized, e.g. #!/bin/sh atmsigd -b ilmid -b atmarpd -b ... works, but #!/bin/sh atmsigd & ilmid & atmarpd & ... frequently doesn't (yet). The atmarp program is used to configure ATMARP. First, you have to start atmsigd, ilmid, and atmarpd, then create an IP interface and configure it: # atmarp -c interface_name # ifconfig atm0 local_address possibly_more_options up e.g. # atmarp -c atm0 # ifconfig atm0 10.0.0.3 up If only PVCs will be used, they can now be created with a command like # atmarp -s 10.0.0.4 0.0.70 NULL encapsulation is used if the null keyword is specified. Note that ARP requires LLC/SNAP encapsulation. NULL encapsulation can therefore only be used for PVCs. When using SVCs, some additional configuration work may be necessary. If the machine is acting as the ATMARP server on that LIS, no additional configuration is required. Otherwise, the ATM address of the ATMARP server has to be configured. This is done by creating an entry for the network address with the option arpsrv set, e.g. # atmarp -s \ 10.0.0.0 47.0005.80.ffe100.0000.f215.1065.0020EA000756.00 \ arpsrv Note that the ATMARP server currently has to be started and configured before any clients are configured. The kernel ATMARP table can be read via \path{/proc/net/atm/arp}. The table used by atmarpd is regularly printed on standard error if atmarpd is started with the -d option. If atmarpd is invoked without -d, the table is written to the file atmarpd.table in the dump directory (by default /var/run; can be changed with -D), and it can be read with atmarp -a. ------------------------------------------------------------------------------- LAN Emulation Besides Classical IP over ATM, LAN Emulation (LANE) can be used to carry IP over ATM. LANE emulates the characteristics of legacy LAN technology, such as support for broadcasts. LANE server support is described in the src/lane/USAGE file in the linux-atm distribution. Man pages: bus(8), lecs(8), les(8), and zeppelin(8) If you plan to run more than one LANE clients, LANE service or LANE clients and LANE service, you need to specify different local ATM addresses for each demon. Since all the LANE demons use similar service access points (SAPs) they need different ATM addresses to differentiate between connections. Just as with CLIP, the LANE client consists of two parts: a demon process called zeppelin which takes care of the LANE protocol and kernel part which contains LANE ARP cache. atmsigd and ilmid must already be running when zeppelin is started. When zeppelin starts, the kernel creates a new interface which can then be configured: # zeppelin possibly_more_options & # ifconfig lec0 local_address possibly_more_options up In the example below, two LANE clients are started. The first client uses default interface lec0, default listen address and tries to join the default ELAN. The other LANE client gets interface lec2 assigned to it, binds to local address mybox3, tries to join ELAN called myelan and will bridge packets between ELAN and Ethernet segments. Address mybox3 is defined in /etc/ hosts.atm. Rest of the bridging can be configured by reading the Bridging mini-HOWTO. [bridge-howto] # zeppelin & # ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \ broadcast 10.1.1.255 up # # zeppelin -i 2 -l mybox3 -n myelan -p & # ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \ broadcast 10.1.2.255 up By default, zeppelin uses interface lec0, binds to local ATM address using selector byte value 0, tries to contact LECS using Well-Known LECS address, joins the default ELAN as defined by the LECS, accepts the MTU size as defined by the LES and will not act as an proxy LEC. These parameters can be tailored with command line options which are defined in zeppelin(8). zeppelin will automatically join any ELANs which use higher MTU than the default MTU of 1516 bytes. The MTU of the LANE interface will adjust itself according to the MTU of the current ELAN. The state of the LANE ARP cache entries can be monitored through /proc/net/atm/ lec. For each entry the MAC and ATM addresses and status is listed. If the entry has an active connection, the connection identifiers are also listed. The LANE service ( lecs(8), les(8), and bus(8)) is configured using configuration files. The configuration file syntax is listed on the respective manual pages. A more detailed description of Linux LANE services is discussed in Marko Kiiskilä's Master's Thesis [kiis]. ------------------------------------------------------------------------------- MPOA The Linux MPOA client continues the tradition of user space -- kernel divided ATM services. The demon process called mpcd processes MPOA control packets while the kernel holds MPOA ingress and egress caches and does the packet forwarding. Man page: mpcd(8) atmsigd and ilmid must already be running when mpcd is started. Since MPOA detects IP layer flows from LANE traffic, you need to have zeppelin running before MPOA can function. However, the order in which zeppelin and mpcd is started is not fixed. You can kill any of the demons at your will and restart it later without need to restart the other demon. The easiest way to disable MPOA is to kill the running mpcd. Below is the example from Section LAN Emulation which starts two LANE clients. The configuration has been augmented with two MPOA clients which the LANE clients will serve. # zeppelin & # ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \ broadcast 10.1.1.255 up # mpcd -s mybox1 -l mybox2 & # # zeppelin -i 2 -l mybox3 -n myelan -p & # ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \ broadcast 10.1.2.255 up # mpcd -i 2 -s mybox4 -l mybox5 & The MPOA demon needs two different local ATM addresses which it uses when initiating and receiving data and control connections. The addresses can be the same as with e.g. zeppelin but must be different among other mpcd demons. By default, mpcd does not retrieve configuration information from the LECS. The necessary command line options and an example of using LECS are shown on the mpcd manual page. The manual page also lists the rest of the available options. The contents of MPOA ingress and egress caches can be monitored through the / proc/net/atm/mpc file. The Linux MPOA client also supports CBR traffic class for shortcuts SVCs instead of default UBR. The QoS specifications for future shortcuts can be set and modified using /proc/net/atm/mpc. # echo add 130.230.54.146 tx=80000,1600 rx=tx > /proc/net/atm/mpc # # generate enough traffic to trigger a shortcut # cat /proc/net/atm/mpc QoS entries for shortcuts: IP address TX:max_pcr pcr min_pcr max_cdv max_sdu RX:max_pcr pcr min_pcr max_cdv max_sdu 130.230.54.146 80000 0 0 0 1600 80000 0 0 0 1600 Interface 2: Ingress Entries: IP address State Holding time Packets fwded VPI VCI 130.230.4.3 invalid 1160 0 130.230.54.146 resolved 542 151 0 109 ... The shortcut to IP address 130.230.54.146 was established with the parameters shown above. There also exist patches which extend the flow detection to fully support layer 4 flows. The layer 4 flows are expressed as a 5 tuple (proto, local addr, local port, remote addr, remote port) and they identify application to application flows. If you are interested, see ftp://sunsite.tut.fi/pub/Local /linux-atm/mpoa/ for the latest patch. Bibliography References [api] Linux ATM API, Werner Almesberger, http://linux-atm.sourceforge.net/API/ , July 1996. [RFC1577] Classical IP and ARP over ATM (RFC1577), Mark Laubach, January 1994. [lanev1] LAN Emulation Over ATM -- Version 1.0, ATM Forum, February 1996. [lanev2] LAN Emulation Over ATM -- Version 2 -- LUNI Specification, ATM Forum, July 1997. [mpoav1] Multi-Protocol Over ATM -- Version 1.0, ATM Forum, July 1997. [bridge-howto] Bridging mini-Howto, Christopher Cole, http://www.linuxdoc.org/ HOWTO/mini/Bridge.html , March, 2001. [kiis] Implementation of LAN Emulation Over ATM in Linux, Marko Kiiskilä, ftp:/ /sunsite.tut.fi/pub/Local/linux-atm/misc/ , October 1996. Notes [1] Some adapters may only support a subset of this. linux-atm-2.5.1/doc/Makefile.in0000644000200100001440000002401611304770374015103 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = doc DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = README.CLP README.tc atm-linux-howto.sgml atm-linux-howto.txt HOWTO = atm-linux-howto.sgml all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf-am: ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am atm-linux-howto/atm-linux-howto.html: ${HOWTO} sgmltools --backend=html ${HOWTO} html: atm-linux-howto/atm-linux-howto.html atm-linux-howto.txt: ${HOWTO} sgmltools --backend=txt ${HOWTO} txt: atm-linux-howto.txt atm-linux-howto.ps: ${HOWTO} sgmltools --backend=ps ${HOWTO} ps: atm-linux-howto.ps atm-linux-howto.pdf: ${HOWTO} db2pdf ${HOWTO} pdf: atm-linux-howto.pdf atm-linux-howto.rtf: ${HOWTO} db2rtf ${HOWTO} rtf: atm-linux-howto.rtf clean: -rm -rf atm-linux-howto/ *.ps *.pdf *.rtf *.out # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/0000755000200100001440000000000011304770374013055 5ustar chasuserslinux-atm-2.5.1/src/CVS/0000755000200100001440000000000011304767140013505 5ustar chasuserslinux-atm-2.5.1/src/CVS/Root0000644000200100001440000000007411304767137014362 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/CVS/Repository0000644000200100001440000000001611304767137015612 0ustar chasuserslinux-atm/src linux-atm-2.5.1/src/CVS/Entries0000644000200100001440000000053111304767140015040 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:26 2007//TV2_5_1 /Makefile.am/1.2.2.2.2.1/Mon Aug 3 20:36:56 2009//TV2_5_1 D/arpd//// D/br2684//// D/config//// D/debug//// D/extra//// D/ilmid//// D/include//// D/lane//// D/led//// D/lib//// D/maint//// D/man//// D/mpoad//// D/oamd//// D/q2931//// D/qgen//// D/saal//// D/sigd//// D/switch//// D/test//// linux-atm-2.5.1/src/CVS/Tag0000644000200100001440000000001011304767137014140 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/.cvsignore0000644000200100001440000000002510666025262015051 0ustar chasusersMakefile Makefile.in linux-atm-2.5.1/src/Makefile.am0000644000200100001440000000017711235645150015112 0ustar chasusersSUBDIRS = include lib test debug qgen q2931 saal sigd maint arpd ilmid man led lane \ mpoad oamd switch config extra br2684 linux-atm-2.5.1/src/arpd/0000755000200100001440000000000011304770375014004 5ustar chasuserslinux-atm-2.5.1/src/arpd/CVS/0000755000200100001440000000000011304767137014441 5ustar chasuserslinux-atm-2.5.1/src/arpd/CVS/Root0000644000200100001440000000007411304767137015310 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/arpd/CVS/Repository0000644000200100001440000000002311304767137016536 0ustar chasuserslinux-atm/src/arpd linux-atm-2.5.1/src/arpd/CVS/Entries0000644000200100001440000000150111304767137015772 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:26 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /arp.c/1.2.2.1/Wed Jul 11 15:27:15 2007//TV2_5_1 /arp.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atmarp.8/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atmarp.c/1.2.4.1/Wed Aug 5 01:00:06 2009//TV2_5_1 /atmarp.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atmarpd.8/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atmarpd.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atmarpd.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /io.c/1.2.2.1.2.1/Mon Aug 3 14:30:13 2009//TV2_5_1 /io.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /itf.c/1.2.2.1/Wed Jul 11 15:27:15 2007//TV2_5_1 /itf.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /table.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /table.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 D linux-atm-2.5.1/src/arpd/CVS/Tag0000644000200100001440000000001011304767137015066 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/arpd/.cvsignore0000644000200100001440000000006010666025262015776 0ustar chasusersMakefile Makefile.in .deps .libs atmarp atmarpd linux-atm-2.5.1/src/arpd/Makefile-0.790000644000200100001440000000056707360675442016055 0ustar chasusersLIBS=-latmd LIBDEPS=../lib/libatmd.a #LIBS=-lfl # lex may want -ll here #INCLUDES= OBJS=atmarpd.o arp.o io.o itf.o table.o BOOTPGMS=atmarp atmarpd MAN8=atmarp.8 atmarpd.8 SYSHDR=atmarp.h atmarpd.h include ../Rules.make atmarp: atmarp.o $(CC) $(LDFLAGS) -o atmarp atmarp.o $(LIBS) $(LDLIBS) atmarpd: $(OBJS) $(CC) $(LDFLAGS) -o atmarpd $(OBJS) $(LIBS) $(LDLIBS) linux-atm-2.5.1/src/arpd/Makefile.am0000644000200100001440000000047607360675442016055 0ustar chasusersLDADD = $(top_builddir)/src/lib/libatm.la sbin_PROGRAMS = atmarp atmarpd atmarp_SOURCES = atmarp.c atmarp.h atmarpd.h atmarpd_SOURCES = atmarpd.c atmarpd.h arp.c arp.h io.c io.h itf.c itf.h \ table.c table.h atmarp.h include_HEADERS = atmarp.h atmarpd.h man_MANS = atmarp.8 atmarpd.8 EXTRA_DIST = $(man_MANS) linux-atm-2.5.1/src/arpd/arp.c0000644000200100001440000007250710645173323014742 0ustar chasusers/* arp.c - ARP state machine */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include /* for linux/if_arp.h */ #include /* for ntohs, etc. */ #define _LINUX_NETDEVICE_H /* very crude hack for glibc2 */ #include #include #include #include #include #include #include "atmd.h" #include "atmarp.h" #include "atmarpd.h" #include "table.h" #include "itf.h" #include "io.h" #include "arp.h" #define COMPONENT "ARP" #define SEC 1000000 #define T_REPLY (1*SEC) /* 1 sec */ #define R_REPLY 5 /* 5 retries */ #ifdef FREQUENT_REVAL #define T_CREVAL (30*SEC) /* 30 sec, client */ #define T_SREVAL (35*SEC) /* 35 sec, server */ #else #define T_CREVAL (600*SEC) /* 10 min, client (RFC1577: <= 15 min) */ #define T_SREVAL (1500*SEC) /* 25 min, server (RFC1577: >= 20 min) */ #endif #define R_CREVAL 0 /* no retries */ #define R_SREVAL 0 /* no retries */ #define T_RETRY (1*SEC) /* 1 sec */ #define R_RETRY 25000 /* enough try keep trying during a long weekend */ #define T_REGISTER (5*SEC) /* 5 sec, registration with ATMARP server */ #define R_REGISTER 0 /* no explicit retries */ #define MAX_DELAY (300*SEC) /* never wait more than 5 min for anything */ #define ENTER_TIMER_HANDLER(entry) entry->timer = NULL #define START_TIMER(entry,tmr) ({ \ if (entry->timer) stop_timer(entry->timer); \ entry->timeout = T_##tmr; \ entry->timer = start_timer(entry->timeout,timer_expiration,entry); \ entry->retries = R_##tmr; }) #define STOP_TIMER(entry) ({ \ if (entry->timer) { \ stop_timer(entry->timer); \ entry->timer = NULL; \ } }) static void discard_vcc(VCC *vcc) { if (do_close(vcc->fd)) diag(COMPONENT,DIAG_ERROR,"close: %s",strerror(errno)); if (vcc->entry) Q_REMOVE(vcc->entry->vccs,vcc); else Q_REMOVE(unidirectional_vccs,vcc); free(vcc); } void discard_vccs(ENTRY *entry) { VCC *vcc,*next; for (vcc = entry->vccs; vcc; vcc = next) { next = vcc->next; discard_vcc(vcc); } } void discard_entry(ENTRY *entry) { if (entry->notify) diag(COMPONENT,DIAG_FATAL,"discard_entry: entry %p had notifications"); STOP_TIMER(entry); discard_vccs(entry); if (!entry->itf) Q_REMOVE(unknown_incoming,entry); else { if (entry == entry->itf->arp_srv) entry->itf->arp_srv = NULL; Q_REMOVE(entry->itf->table,entry); } if (entry->addr) free(entry->addr); free(entry); } /* * Returns: * <0 there's no ARP server * 0 ARP server connection establishment in progress * >0 ready to send ARP_REQUEST */ static int want_arp_srv(const ITF *itf) { VCC *vcc; int fd; if (!itf->arp_srv) return -1; for (vcc = itf->arp_srv->vccs; vcc; vcc = vcc->next) if (!vcc->connecting) return 1; if (itf->arp_srv->vccs) return 0; if ((fd = connect_vcc((struct sockaddr *) itf->arp_srv->addr, &itf->arp_srv->qos,itf->arp_srv->sndbuf,CLIP_DEFAULT_IDLETIMER)) < 0) return 0; vcc = alloc_t(VCC); vcc->active = 1; vcc->connecting = 1; vcc->fd = fd; vcc->entry = itf->arp_srv; Q_INSERT_HEAD(itf->arp_srv->vccs,vcc); return 0; } static void timer_expiration(void *user); void vcc_detach(ENTRY *entry) { ENTRY *walk; /* immediately try to bring it up again if this was the connection to the ATMARP server and we still need it. Should delay this in case the ARP server has a real problem. @@@ */ /* UPDATE: the delay might work now ... */ if (entry->itf && entry->itf->arp_srv == entry) for (walk = entry->itf->table; walk; walk = walk->next) { if (walk->state == as_resolv) break; if (walk) { if (entry->state == as_valid) START_TIMER(entry,REGISTER); /* (void) want_arp_srv(entry->itf); */ return; } } if (!entry->vccs && entry->state == as_invalid && !(entry->flags & ATF_PERM)) discard_entry(entry); } static void put_ip(unsigned char **here,uint32_t ip,unsigned char *len) { if (!ip) { *len = 0; return; } /*ip = htonl(ip); - no keep 'em in network byte order */ memcpy(*here,&ip,4); *len = 4; (*here) += 4; } static void put_addr(unsigned char **here,struct sockaddr_atmsvc *addr, unsigned char *num_tl,unsigned char *sub_tl) { if (!addr) return; if (addr->sas_family != AF_ATMSVC) return; if (!*addr->sas_addr.pub) *sub_tl = 0; else { *num_tl = strlen(addr->sas_addr.pub) | TL_E164; memcpy(*here,addr->sas_addr.pub,*num_tl & TL_LEN); (*here) += *num_tl & TL_LEN; num_tl = sub_tl; } if (!*addr->sas_addr.prv) *num_tl = 0; else { *num_tl = ATM_ESA_LEN; memcpy(*here,addr->sas_addr.prv,ATM_ESA_LEN); (*here) += ATM_ESA_LEN; } } static const unsigned char llc_oui_arp[] = { 0xaa, /* DSAP: non-ISO */ 0xaa, /* SSAP: non-ISO */ 0x03, /* Ctrl: Unnumbered Information Command PDU */ 0x00, /* OUI: EtherType */ 0x00, 0x00, 0x08, /* ARP protocol */ 0x06 }; static void send_arp(int fd,unsigned short op,uint32_t local_ip, struct sockaddr_atmsvc *local_addr,uint32_t remote_ip, struct sockaddr_atmsvc *remote_addr) { struct sockaddr_atmsvc local; struct atmarphdr *hdr; unsigned char *buffer,*here; if (!local_addr) { if (get_local(fd,&local) < 0) return; local_addr = &local; } buffer = alloc(MAX_ATMARP_SIZE+RFC1483LLC_LEN); memcpy(buffer,llc_oui_arp,RFC1483LLC_LEN); hdr = (struct atmarphdr *) (buffer+RFC1483LLC_LEN); memset(hdr,0,MAX_ATMARP_SIZE); hdr->ar_hrd = htons(ARPHRD_ATM); hdr->ar_pro = htons(ETH_P_IP); hdr->ar_op = htons(op); here = hdr->data; put_addr(&here,local_addr,&hdr->ar_shtl,&hdr->ar_sstl); put_ip(&here,local_ip,&hdr->ar_spln); put_addr(&here,remote_addr,&hdr->ar_thtl,&hdr->ar_tstl); put_ip(&here,remote_ip,&hdr->ar_tpln); send_packet(fd,buffer,here-buffer); free(buffer); } static void arp_request(ITF *itf,uint32_t ip) { VCC *vcc; diag(COMPONENT,DIAG_DEBUG,"sending ARP request"); if (!itf->arp_srv) { diag(COMPONENT,DIAG_ERROR,"no ARP server"); return; } for (vcc = itf->arp_srv->vccs; vcc; vcc = vcc->next) if (!vcc->connecting) break; if (!vcc) { diag(COMPONENT,DIAG_ERROR,"ARP server has no usable VCC"); return; } send_arp(vcc->fd,ARPOP_REQUEST,itf->local_ip,NULL,ip,NULL); } static void inarp_for_itf(const VCC *vcc,const ITF *itf) { if (itf->local_ip) { diag(COMPONENT,DIAG_DEBUG," for itf %d",itf->number); assert(vcc->entry); send_arp(vcc->fd,ARPOP_InREQUEST,itf->local_ip,NULL,0, vcc->entry->svc ? vcc->entry->addr : NULL); } } static void inarp_request(ENTRY *entry) { VCC *vcc; ITF *itf; diag(COMPONENT,DIAG_DEBUG,"sending an InARP request for each IP interface"); for (vcc = entry->vccs; vcc; vcc = vcc->next) { if (vcc->connecting) continue; if (entry->itf) inarp_for_itf(vcc,entry->itf); else for (itf = itfs; itf; itf = itf->next) inarp_for_itf(vcc,itf); } } static void arp_nak(VCC *vcc,uint32_t src_ip,uint32_t tgt_ip, struct sockaddr_atmsvc *tgt_addr) { diag(COMPONENT,DIAG_DEBUG,"sending ARP NAK"); send_arp(vcc->fd,ARPOP_NAK,tgt_ip,tgt_addr,src_ip,NULL); } static void arp_reply(VCC *vcc,uint32_t src_ip, struct sockaddr_atmsvc *src_addr,uint32_t tgt_ip, struct sockaddr_atmsvc *tgt_addr) { diag(COMPONENT,DIAG_DEBUG,"sending ARP reply"); send_arp(vcc->fd,ARPOP_REPLY,src_ip,src_addr,tgt_ip,tgt_addr); } static void inarp_reply(VCC *vcc,uint32_t ip,struct sockaddr_atmsvc *addr) { ITF *itf; diag(COMPONENT,DIAG_DEBUG,"sending InARP reply"); itf = lookup_itf_by_ip(ip); if (!itf) { diag(COMPONENT,DIAG_ERROR,"InARP request is unroutable"); return; } send_arp(vcc->fd,ARPOP_InREPLY,itf->local_ip,NULL,ip,addr); } static void send_notifications(ENTRY *entry,int success) { NOTIFY *this; while ((this = entry->notify)) { entry->notify = this->next; notify(&this->ctx,entry->ip,success ? entry : NULL); free(this); } } static void revalidate(ENTRY *entry) { entry->state = as_resolv; if (want_arp_srv(entry->itf) <= 0) return; arp_request(entry->itf,entry->ip); START_TIMER(entry,REPLY); } static void timer(ENTRY *entry) { switch (entry->state) { case as_resolv: arp_request(entry->itf,entry->ip); break; case as_invalid: if (entry->vccs) inarp_request(entry); else if (!(entry->flags & ATF_ARPSRV)) diag(COMPONENT,DIAG_INFO,"as_invalid, no VCCs, but not " "ARP server entry"); /* this is a valid condition if we're the ATMARP server and the remote disconnected */ else if (!want_arp_srv(entry->itf)) STOP_TIMER(entry); break; case as_valid: if (entry->flags & ATF_ARPSRV) { if (!want_arp_srv(entry->itf)) STOP_TIMER(entry); break; } /* fall through */ default: diag(COMPONENT,DIAG_FATAL,"timer in state %d",entry->state); } } static void timeout(ENTRY *entry) { VCC *vcc,*next; entry->timer = NULL; switch (entry->state) { case as_resolv: send_notifications(entry,0); if ((entry->flags & ATF_ARPSRV) && !entry->vccs) { if (entry->itf) want_arp_srv(entry->itf); break; } if (!entry->vccs && !(entry->flags & (ATF_PERM | ATF_ARPSRV))) discard_entry(entry); else entry->state = as_invalid; break; case as_valid: if (!entry->vccs && !(entry->flags & (ATF_PERM | ATF_ARPSRV)) && entry->itf->arp_srv) { discard_entry(entry); break; } for (vcc = entry->vccs; vcc; vcc = next) { next = vcc->next; if (!vcc->connecting) if (set_ip(vcc->fd,0) < 0) { diag(COMPONENT,DIAG_ERROR,"set_ip(0): %s", strerror(errno)); disconnect_vcc(vcc); } } if (entry->svc && entry->itf->arp_srv && !(entry->flags & ATF_ARPSRV)) revalidate(entry); else { inarp_request(entry); START_TIMER(entry,REPLY); entry->state = as_invalid; } break; case as_invalid: if (!entry->svc) { inarp_request(entry); START_TIMER(entry,REPLY); } else if ((!entry->itf || !entry->itf->arp_srv) && !(entry->flags & ATF_PERM)) discard_entry(entry); break; default: diag(COMPONENT,DIAG_FATAL,"timed out in state %s", entry_state_name[entry->state]); } } static void timer_expiration(void *user) { ENTRY *entry; unsigned char *ipp; entry = user; ipp = (unsigned char *) &entry->ip; diag(COMPONENT,DIAG_DEBUG,"TIMEOUT (entry %d.%d.%d.%d), %d retries",ipp[0], ipp[1],ipp[2],ipp[3],entry->retries); if (!entry->retries) { entry->timer = NULL; timeout(entry); } else { entry->retries--; entry->timeout *= 2; if (entry->timeout > MAX_DELAY) entry->timeout = MAX_DELAY; entry->timer = start_timer(entry->timeout,timer_expiration,entry); timer(entry); } } static void connect_me(ENTRY *entry) { VCC *vcc; int fd; assert(entry->addr->sas_family == AF_ATMSVC); if ((fd = connect_vcc((struct sockaddr *) entry->addr,&entry->qos, entry->sndbuf,CLIP_DEFAULT_IDLETIMER)) < 0) return; vcc = alloc_t(VCC); vcc->active = 1; vcc->connecting = 1; vcc->fd = fd; vcc->entry = entry; Q_INSERT_HEAD(entry->vccs,vcc); } static void adjust_qos(ITF *itf,struct atm_qos *qos,int null_encap) { if (!qos->txtp.max_sdu) qos->txtp.max_sdu = RFC1626_MTU+(null_encap ? 0 : RFC1483LLC_LEN); if (!qos->rxtp.max_sdu) qos->rxtp.max_sdu = RFC1626_MTU+(null_encap ? 0 : RFC1483LLC_LEN); } /* * Return -1 if VCC has been closed */ static int learn(VCC *vcc,uint32_t ip,struct sockaddr_atmsvc *addr) { ENTRY *entry; ITF *itf; VCC *walk,*next; unsigned char *ipp; int result = 0; if (!ip) return 0; ipp = (unsigned char *) &ip; itf = lookup_itf_by_ip(ip); if (!itf) { diag(COMPONENT,DIAG_ERROR,"got unroutable IP address %d.%d.%d.%d", ipp[0],ipp[1],ipp[2],ipp[3]); return 0; } entry = lookup_ip(itf,ip); assert(!vcc || vcc->entry); /* * If the entry on which we received the update isn't dangling but it * doesn't correspond to the one with the address, ... */ if (entry && vcc && vcc->entry->itf && entry != vcc->entry) { diag(COMPONENT,DIAG_DEBUG,"collision on %d.%d.%d.%d",ipp[0],ipp[1], ipp[2],ipp[3]); return 0; } /* * If the entry on which we received the update is dangling and we found * an entry that already describes that IP address, ... */ if (entry && vcc && !vcc->entry->itf) { if (!entry->svc) { diag(COMPONENT,DIAG_ERROR,"attempt to overwrite PVC for IP " "%d.%d.%d.%d",ipp[0],ipp[1],ipp[2],ipp[3]); return 0; } STOP_TIMER(vcc->entry); Q_REMOVE(unknown_incoming,vcc->entry); free(vcc->entry); vcc->entry = entry; Q_INSERT_HEAD(entry->vccs,vcc); set_sndbuf(vcc); entry->flags &= ~ATF_NOVC; assert(!vcc->connecting); if (set_ip(vcc->fd,ip) < 0) { diag(COMPONENT,DIAG_ERROR,"set_ip: %s",strerror(errno)); disconnect_vcc(vcc); vcc = NULL; result = -1; } } /* * If we still don't have an entry, we try to use the entry that already * belongs to the VCC (InARP), or we create a new one (ARP). */ if (!entry) { if (vcc) { entry = vcc->entry; if (!entry->itf) { Q_REMOVE(unknown_incoming,entry); entry->sndbuf = itf->sndbuf; set_sndbuf(vcc); } else if (entry->ip && entry->ip != ip && (entry->flags & ATF_PERM) && !(entry->flags & ATF_ARPSRV)) { diag(COMPONENT,DIAG_ERROR,"ignoring attempt to change IP " "address of permanent entry (to %d.%d.%d.%d)",ipp[0], ipp[1],ipp[2],ipp[3]); return result; } } else { entry = alloc_entry(1); entry->flags = ATF_PUBL; } } if (!atmsvc_addr_in_use(*addr)) addr = NULL; if (entry->addr && addr && (entry->flags & ATF_PERM) && !atm_equal((struct sockaddr *) entry->addr,(struct sockaddr *) addr,0,0)) { diag(COMPONENT,DIAG_ERROR,"ignoring attempt to change ATM address of " "permanent entry"); return result; } if (entry->state == as_valid && entry->ip == ip && (!addr || (entry->addr && atm_equal((struct sockaddr *) entry->addr,(struct sockaddr *) addr,0, 0)))) return result; /* no news */ STOP_TIMER(entry); if (entry->ip != ip) send_notifications(entry,0); entry->ip = ip; if (!entry->itf) { entry->itf = itf; /* @@@ * Need to fix this is in case we allow entries without a valid IP * address but with a pre-set QOS, e.g. a VC on a given PVC with an * unknown remote end. */ entry->qos = entry->itf->qos; adjust_qos(entry->itf,&entry->qos,0); Q_INSERT_HEAD(itf->table,entry); } if (entry->itf != itf) diag(COMPONENT,DIAG_ERROR,"interesting, interface has changed ... " "(%d -> %d)",entry->itf->number,itf->number); if (addr) { if (!entry->addr) entry->addr = alloc(sizeof(*addr)); *entry->addr = *addr; if (merge) { ENTRY *incoming; while ((incoming = lookup_incoming(addr))) { STOP_TIMER(incoming); Q_REMOVE(unknown_incoming,incoming); incoming->vccs->entry = entry; Q_INSERT_HEAD(entry->vccs,incoming->vccs); set_sndbuf(incoming->vccs); free(incoming); } } } for (walk = entry->vccs; walk; walk = next) { next = walk->next; if (!walk->connecting) if (set_ip(walk->fd,ip) < 0) { diag(COMPONENT,DIAG_ERROR,"set_ip: %s",strerror(errno)); disconnect_vcc(walk); if (walk == vcc) result = -1; } } if (entry->state != as_valid) { if (!entry->vccs && itf->arp_srv && !(entry->flags & ATF_NOVC)) connect_me(entry); send_notifications(entry,1); } if ((entry->flags & ATF_ARPSRV) || !(entry->flags & ATF_PERM)) { if (entry->itf->arp_srv) START_TIMER(entry,CREVAL); else START_TIMER(entry,SREVAL); } entry->state = as_valid; return result; } static void learn_nak(uint32_t ip) { ITF *itf; ENTRY *entry; if (!ip) return; itf = lookup_itf_by_ip(ip); if (!itf) return; entry = lookup_ip(itf,ip); if (!entry || entry->state != as_resolv) return; send_notifications(entry,0); if (entry->flags & ATF_PERM) return; if (entry->vccs) entry->state = as_invalid; else discard_entry(entry); } /* * Returns: * <0 resolution is not possible (*entry may be clobbered) * 0 resolution has succeeded (entry in *entry) * >0 resolution is proceeding (entry in *entry) */ static int resolve(ITF *itf,uint32_t ip,ENTRY **entry,int want_vc) { *entry = lookup_ip(itf,ip); if ((!*entry || (*entry)->state != as_valid) && !itf->arp_srv) return -1; /* bad luck - no ARP server when we need one */ if (*entry) { if (want_vc) (*entry)->flags &= ~ATF_NOVC; switch ((*entry)->state) { case as_resolv: return 1; /* somebody else is already taking care of that */ case as_valid: if (!(*entry)->vccs && !((*entry)->flags & ATF_NOVC)) connect_me(*entry); return 0; case as_invalid: if ((*entry)->svc && (*entry)->itf && (*entry)->itf->arp_srv && !((*entry)->flags & ATF_ARPSRV)) break; return -1; default: diag(COMPONENT,DIAG_FATAL,"bad state %d",(*entry)->state); } } else { *entry = alloc_entry(1); (*entry)->flags = ATF_PUBL | (want_vc ? 0 : ATF_NOVC); (*entry)->ip = ip; (*entry)->itf = itf; Q_INSERT_HEAD(itf->table,*entry); (*entry)->qos = itf->qos; } revalidate(*entry); return 1; } void need_ip(int itf_num,uint32_t ip) { ITF *itf; ENTRY *entry; diag(COMPONENT,DIAG_DEBUG,"itf %d needs %d.%d.%d.%d",itf_num, ((unsigned char *) &ip)[0],((unsigned char *) &ip)[1], ((unsigned char *) &ip)[2],((unsigned char *) &ip)[3]); if (!(itf = lookup_itf(itf_num))) { diag(COMPONENT,DIAG_ERROR,"itf %d not found",itf_num); return; } (void) resolve(itf,ip,&entry,1); } void query_ip(const UN_CTX *ctx,uint32_t ip) { ITF *itf; ENTRY *entry; NOTIFY *notifier; int result; diag(COMPONENT,DIAG_DEBUG,"query for %d.%d.%d.%d", ((unsigned char *) &ip)[0],((unsigned char *) &ip)[1], ((unsigned char *) &ip)[2],((unsigned char *) &ip)[3]); if (!(itf = lookup_itf_by_ip(ip))) { diag(COMPONENT,DIAG_WARN,"itf for %d.%d.%d.%d not found", ((unsigned char *) &ip)[0],((unsigned char *) &ip)[1], ((unsigned char *) &ip)[2],((unsigned char *) &ip)[3]); notify(ctx,ip,NULL); return; } result = resolve(itf,ip,&entry,0); if (result < 0) { notify(ctx,ip,NULL); return; } if (!result) { notify(ctx,ip,entry); return; } notifier = alloc_t(NOTIFY); notifier->ctx = *ctx; notifier->next = entry->notify; entry->notify = notifier; } static void *get_addr(unsigned char **here,int len) { if (!len) return NULL; (*here) += len; return *here-len; } static void set_addr(struct sockaddr_atmsvc *addr,void *num,void *sub, int num_tl,int sub_tl) { memset(addr,0,sizeof(struct sockaddr_atmsvc)); addr->sas_family = AF_ATMSVC; if (num_tl & TL_E164) if ((num_tl & TL_LEN) > ATM_E164_LEN) diag(COMPONENT,DIAG_ERROR,"bad E.164 length (%d)",num_tl & TL_LEN); else { memcpy(addr->sas_addr.pub,num,num_tl & TL_LEN); if (sub) { if (sub_tl != ATM_ESA_LEN) { diag(COMPONENT,DIAG_ERROR,"bad ESA length (%d)",sub_tl); *addr->sas_addr.pub = 0; } else memcpy(addr->sas_addr.prv,sub,ATM_ESA_LEN); } } else if (num) { if (num_tl != ATM_ESA_LEN) diag(COMPONENT,DIAG_ERROR,"bad ESA length (%d)",num_tl); else memcpy(addr->sas_addr.prv,num,ATM_ESA_LEN); } } static uint32_t get_ip(unsigned char *ptr) { if (!ptr) return 0; /* awkward, but this way we avoid bus errors on architectures that don't support mis-aligned accesses */ return htonl((ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3]); } void incoming_arp(VCC *vcc,struct atmarphdr *hdr,int len) { ITF *itf; ENTRY *entry; void *sha,*ssa,*spa,*tha,*tsa,*tpa; struct sockaddr_atmsvc source,target; uint32_t src_ip,tgt_ip; unsigned char *here; if (len < hdr->data-(unsigned char *) hdr) { diag(COMPONENT,DIAG_ERROR,"got truncated ARP packet (%d bytes)",len); return; } if (hdr->ar_hrd != htons(ARPHRD_ATM)) { diag(COMPONENT,DIAG_ERROR,"unknown hw protocol 0x%04x", ntohs(hdr->ar_hrd)); return; } if (hdr->ar_pro != htons(ETH_P_IP)) { diag(COMPONENT,DIAG_ERROR,"unknown upper protocol 0x%04x", ntohs(hdr->ar_pro)); return; } if (!(hdr->ar_shtl & TL_LEN)) hdr->ar_shtl = 0; /* paranoia */ if (!(hdr->ar_thtl & TL_LEN)) hdr->ar_thtl = 0; here = hdr->data; sha = get_addr(&here,hdr->ar_shtl & TL_LEN); ssa = get_addr(&here,hdr->ar_sstl & TL_LEN); spa = get_addr(&here,hdr->ar_spln); tha = get_addr(&here,hdr->ar_thtl & TL_LEN); tsa = get_addr(&here,hdr->ar_tstl & TL_LEN); tpa = get_addr(&here,hdr->ar_tpln); if (here-(unsigned char *) hdr > len) { diag(COMPONENT,DIAG_ERROR,"message too short (got %d, need %d)",len, here-(unsigned char *) hdr); return; } set_addr(&source,sha,ssa,hdr->ar_shtl,hdr->ar_sstl); set_addr(&target,tha,tsa,hdr->ar_thtl,hdr->ar_tstl); src_ip = get_ip(spa); tgt_ip = get_ip(tpa); { unsigned char *ipp; char buffer[MAX_ATM_ADDR_LEN+1]; ipp = (unsigned char *) &src_ip; diag(COMPONENT,DIAG_DEBUG," SRC IP: %d.%d.%d.%d",ipp[0],ipp[1],ipp[2], ipp[3]); if (atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) &source,pretty) >= 0) diag(COMPONENT,DIAG_DEBUG," SRC ATM: %s",buffer); ipp = (unsigned char *) &tgt_ip; diag(COMPONENT,DIAG_DEBUG," DST IP: %d.%d.%d.%d",ipp[0],ipp[1],ipp[2], ipp[3]); if (atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) &target,pretty) >= 0) diag(COMPONENT,DIAG_DEBUG," DST ATM: %s",buffer); } switch (ntohs(hdr->ar_op)) { case ARPOP_REQUEST: diag(COMPONENT,DIAG_DEBUG,"got ARP_REQ"); if (learn(vcc,src_ip,&source)) break; entry = NULL; itf = lookup_itf_by_ip(tgt_ip); entry = itf ? lookup_ip(itf,tgt_ip) : NULL; if (entry && entry->state == as_valid && (entry->flags & ATF_PUBL)) { if (entry->addr) arp_reply(vcc,tgt_ip,entry->addr,src_ip,&source); else arp_nak(vcc,tgt_ip,src_ip,&source); } else { if (itf && itf->local_ip == tgt_ip) arp_reply(vcc,tgt_ip,NULL,src_ip,&source); else arp_nak(vcc,tgt_ip,src_ip,&source); } break; case ARPOP_REPLY: diag(COMPONENT,DIAG_DEBUG,"got ARP_REP"); if (!vcc->entry || !(vcc->entry->flags & ATF_ARPSRV)) { diag(COMPONENT,DIAG_ERROR,"got ARP response from charlatan"); break; } (void) learn(NULL,src_ip,&source); break; case ARPOP_InREQUEST: diag(COMPONENT,DIAG_DEBUG,"got InARP_REQ"); if (!learn(vcc,src_ip,&source)) inarp_reply(vcc,src_ip,&source); break; case ARPOP_InREPLY: diag(COMPONENT,DIAG_DEBUG,"got InARP_REP"); (void) learn(vcc,src_ip,&source); break; case ARPOP_NAK: diag(COMPONENT,DIAG_DEBUG,"got ARP_NAK"); if (!vcc->entry || !(vcc->entry->flags & ATF_ARPSRV)) { diag(COMPONENT,DIAG_ERROR,"got ARP response from charlatan"); break; } learn_nak(tgt_ip); break; default: diag(COMPONENT,DIAG_ERROR,"unrecognized ARP op 0x%x", ntohs(hdr->ar_op)); } } static int ioctl_set_pvc(ITF *itf,uint32_t ip,struct sockaddr_atmpvc *addr, const struct atm_qos *qos,int sndbuf,int flags) { ENTRY *entry; VCC *vcc; int fd,result; if (lookup_ip(itf,ip)) return -EEXIST; if ((fd = connect_vcc((struct sockaddr *) addr,qos,sndbuf,0)) < 0) return fd; if ((result = set_ip(fd,ip)) < 0) { do_close(fd); return result; } if (flags & ATF_NULL) { if ((result = set_encap(fd,0)) < 0) return result; flags |= ATF_PERM; } entry = alloc_entry(0); entry->state = as_valid; entry->ip = ip; entry->qos = *qos; entry->sndbuf = sndbuf; entry->flags = flags; entry->itf = itf; vcc = alloc_t(VCC); vcc->active = 1; vcc->connecting = 0; vcc->fd = fd; vcc->entry = entry; if (!(flags & ATF_PERM)) START_TIMER(entry,CREVAL); Q_INSERT_HEAD(entry->vccs,vcc); Q_INSERT_HEAD(itf->table,entry); return 0; } static int ioctl_set_svc(ITF *itf,uint32_t ip,struct sockaddr_atmsvc *addr, const struct atm_qos *qos,int sndbuf,int flags) { ENTRY *entry; if (flags & ATF_ARPSRV) flags |= ATF_PERM; if (lookup_ip(itf,ip)) return -EEXIST; entry = alloc_entry(1); entry->state = as_valid; entry->ip = ip; entry->addr = alloc_t(struct sockaddr_atmsvc); *entry->addr = *addr; entry->qos = *qos; entry->sndbuf = sndbuf; entry->flags = flags; if (!(flags & ATF_PERM) || (flags & ATF_ARPSRV)) { if (itf->arp_srv) START_TIMER(entry,CREVAL); else START_TIMER(entry,SREVAL); } entry->itf = itf; Q_INSERT_HEAD(itf->table,entry); if (!(flags & ATF_ARPSRV)) return 0; entry->state = as_invalid; itf->arp_srv = entry; (void) want_arp_srv(itf); return 0; } static int ioctl_delete(ITF *itf,uint32_t ip,int flags) { ENTRY *entry,*walk,*next; if (!(entry = lookup_ip(itf,ip))) { diag(COMPONENT,DIAG_WARN,"ioctl_delete didn't find entry"); return -ENOENT; } if ((flags ^ entry->flags) & ATF_ARPSRV) return -EINVAL; send_notifications(entry,0); if ((entry->flags & ATF_ARPSRV) && entry->itf) for (walk = entry->itf->table; walk; walk = next) { next = walk->next; if (walk != entry && walk->state == as_resolv) { send_notifications(walk,0); if (!walk->vccs && !(walk->flags & ATF_PERM)) /* PERM is rather unlikely here, since this would be a second ARP server (only ARP servers can go as_resolv if PERM), but we'll check for it anyway. */ discard_entry(walk); else { STOP_TIMER(walk); walk->state = as_invalid; } } } discard_entry(entry); return 0; } static int qos_present(const struct atm_qos *qos) { return qos->txtp.traffic_class || qos->rxtp.traffic_class; } int arp_ioctl(struct atmarp_req *req) { ITF *itf; char buffer[MAX_ATM_ADDR_LEN+1]; unsigned char *ipp; diag(COMPONENT,DIAG_DEBUG,"arp_ioctl %d",req->type); itf = lookup_itf_by_ip(req->ip); if (!itf) return -EHOSTUNREACH; if (!(req->ip & ~itf->netmask) && !(req->flags & ATF_ARPSRV) && req->type != art_qos) return -EADDRNOTAVAIL; ipp = (unsigned char *) &req->ip; switch (req->type) { case art_qos: diag(COMPONENT,DIAG_DEBUG,"got art_qos for itf %d",itf->number); if (qos_present(&req->qos)) itf->qos = req->qos; if (req->sndbuf) itf->sndbuf = req->sndbuf; return 0; case art_set: if (atm2text(buffer,MAX_ATM_ADDR_LEN+1, (struct sockaddr *) &req->addr,pretty) < 0) { diag(COMPONENT,DIAG_ERROR,"a2t fails on art_set"); return -EINVAL; } diag(COMPONENT,DIAG_DEBUG,"got art_set for itf %d, IP %d.%d.%d.%d" ", ATM %s, flags 0x%x",itf->number,ipp[0],ipp[1],ipp[2],ipp[3], buffer,req->flags); if (!qos_present(&req->qos)) req->qos = itf->qos; if (!req->sndbuf) req->sndbuf = itf->sndbuf; switch (req->addr.sas_family) { case AF_ATMPVC: adjust_qos(itf,&req->qos,req->flags & ATF_NULL); return ioctl_set_pvc(itf,req->ip, (struct sockaddr_atmpvc *) &req->addr,&req->qos, req->sndbuf,req->flags); case AF_ATMSVC: adjust_qos(itf,&req->qos,0); return ioctl_set_svc(itf,req->ip, (struct sockaddr_atmsvc *) &req->addr,&req->qos, req->sndbuf,req->flags); default: /* not reached - atm2text complains before */ diag(COMPONENT,DIAG_ERROR,"art_set: bad HA AF 0x%x", req->addr.sas_family); return -EINVAL; } case art_delete: diag(COMPONENT,DIAG_DEBUG,"got art_delete for itf %d, IP " "%d.%d.%d.%d",itf->number,ipp[0],ipp[1],ipp[2],ipp[3]); return ioctl_delete(itf,req->ip,req->flags); default: diag(COMPONENT,DIAG_ERROR,"unrecognized type %d",req->type); return -EINVAL; } } void vcc_failed(VCC *vcc) { ENTRY *entry,*next; diag(COMPONENT,DIAG_DEBUG,"failed VCC 0x%p",vcc); Q_REMOVE(vcc->entry->vccs,vcc); if (!(vcc->entry->flags & ATF_ARPSRV) || vcc->entry->vccs) { /* VCC is already closed */ vcc_detach(vcc->entry); free(vcc); return; } for (entry = vcc->entry->itf->table; entry; entry = next) { next = entry->next; if (entry == vcc->entry || entry->state != as_resolv) continue; if (entry->vccs || (entry->flags & ATF_PERM)) entry->state = as_invalid; else discard_entry(entry); } START_TIMER(vcc->entry,RETRY); free(vcc); } void vcc_connected(VCC *vcc) { ENTRY *entry; diag(COMPONENT,DIAG_DEBUG,"connected VCC 0x%p",vcc); if (!vcc->connecting) diag(COMPONENT,DIAG_FATAL,"non-connecting VCC connected"); vcc->connecting = 0; if (vcc->entry->flags & ATF_ARPSRV) for (entry = vcc->entry->itf->table; entry; entry = entry->next) if (entry->state == as_resolv) { START_TIMER(entry,REPLY); arp_request(entry->itf,entry->ip); } inarp_request(vcc->entry); if (vcc->entry->state == as_valid) if (set_ip(vcc->fd,vcc->entry->ip) < 0) { diag(COMPONENT,DIAG_ERROR,"can't set IP (%s)",strerror(errno)); disconnect_vcc(vcc); } } void disconnect_vcc(VCC *vcc) { ENTRY *entry; diag(COMPONENT,DIAG_DEBUG,"disconnected VCC 0x%p",vcc); entry = vcc->entry; discard_vcc(vcc); if (entry) vcc_detach(entry); } void incoming_call(VCC *vcc) { diag(COMPONENT,DIAG_DEBUG,"incoming VCC 0x%p",vcc); START_TIMER(vcc->entry,REPLY); inarp_request(vcc->entry); } void incoming_unidirectional(VCC *vcc) { diag(COMPONENT,DIAG_DEBUG,"incoming unidirectional VCC 0x%p",vcc); /* don't put it into ATMARP table */ } linux-atm-2.5.1/src/arpd/arp.h0000644000200100001440000000127407360675442014751 0ustar chasusers/* arp.h - ARP state machine */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef ARP_H #define ARP_H #include #include #include "atmd.h" #include "atmarp.h" #include "atmarpd.h" #include "table.h" void discard_vccs(ENTRY *entry); void discard_entry(ENTRY *entry); void vcc_detach(ENTRY *entry); void need_ip(int itf_num,uint32_t ip); void query_ip(const UN_CTX *ctx,uint32_t ip); void incoming_arp(VCC *vcc,struct atmarphdr *hdr,int len); int arp_ioctl(struct atmarp_req *req); void vcc_connected(VCC *vcc); void vcc_failed(VCC *vcc); void disconnect_vcc(VCC *vcc); void incoming_call(VCC *vcc); void incoming_unidirectional(VCC *vcc); #endif linux-atm-2.5.1/src/arpd/atmarp.80000644000200100001440000000602507360675442015372 0ustar chasusers.TH ATMARP 8 "April 26, 2000" "Linux" "Maintenance Commands" .SH NAME atmarp \- administer classical IP over ATM connections .SH SYNOPSIS .ad l .B atmarp .B \-a .br .B atmarp .B \-c .RB [[atm]\fInumber\fP] .br .B atmarp .B \-q .RB \fIip_addr\fP .RB [ qos\ \fIqos\fP ] .RB [ sndbuf\ \fIbytes\fP ] .br .B atmarp .B \-s .RB \fIip_addr\fP .RB [\fIitf\fP.]\fIvpi\fP.\fIvci\fP .RB [ qos\ \fIqos\fP ] .RB [ sndbuf\ \fIbytes\fP ] .RB [ temp ] .RB [ pub ] .RB [ null ] .br .B atmarp .B \-s .RB \fIip_addr\fP .RB \fIatm_addr\fP .RB [ qos\ \fIqos\fP ] .RB [ sndbuf\ \fIbytes\fP ] .RB [ temp ] .RB [ pub ] .RB [ arpsrv ] .br .B atmarp .B \-d .RB \fIip_addr\fP .RB [ arpsrv ] .br .B atmarp .B \-V .ad b .SH DESCRIPTION \fBatmarp\fP is used to maintain the ATMARP table of the ATMARP demon. The table can be listed, new PVC and SVC entries can be added, and existing entries can be deleted. In addition to that, \fBatmarp\fP is also used to create new IP over ATM interfaces. .P Note that the kernel has its own ATMARP table containing only entries for destinations to which a connection exists. The table of \fBatmarpd\fP can also contain currently unused entries. .SH OPTIONS .IP \fB\-a\fP list the current ATMARP table. .IP \fB\-c\fP create the specified IP interface. If the interface number is omitted, the operating system assigns the next free number and \fBatmarp\fP prints the resulting interface name (e.g. `atm0') on standard output. .IP \fB\-q\fP sets the QOS and the send buffer size to use as the default for all VCs generated for that IP network (\fIip_addr\fP must be the address of the network). .IP \fB\-s\fP set up a PVC or create an SVC entry. The following options are recognized: .RS .IP \fBqos\fP\ \fIqos\fP uses the specified quality of service (see qos(7) for the syntax). UBR at link speed is used by default. .IP \fBsndbuf\fP\ \fIbytes\fP tries to set the send buffer to the specified number of bytes. A system default value is used if \fBsndbuf\fP is not specified. .IP \fBtemp\fP does not mark the entry as permanent, i.e. it will time out and then be removed. .IP \fBpub\fP publishes the entry (only relevant for ATMARP server). ATMARP requests for entries not marked for publishing yield an ATMARP_NAK response. .IP \fBnull\fP uses NULL encapsulation instead of LLC/SNAP encapsulation on the PVC. This option is not available for SVCs, because the LLC/SNAP header is required to identify ATMARP packets. \fBnull\fP also implies that the entry is permanent. .IP \fBarpsrv\fP identifies the entry pointing to the ATMARP server. Note that the node acting as the ATMARP server must have no ATMARP server entry in its ATMARP table. .RE .IP \fB\-d\fP delete the specified ARP entry. In order to prevent accidental deletion of the ATMARP server entry, the \fBarpsrv\fP flag must be specified when deleting it. .RE .IP \fB\-V\fP print the version number of \fBatmarp\fP on standard output and exit. .SH FILES .PD 0 .TP 25 .B /var/run/atmarpd.table ATMARP table .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" atmarpd(8), clip(8), qos(7) .\"{{{}}} linux-atm-2.5.1/src/arpd/atmarp.c0000644000200100001440000001455211236154626015442 0ustar chasusers/* atmarp.c - RFC1577 ATMARP control */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "atm.h" #include "atmd.h" #include "atmarpd.h" #define BUF_SIZE 4096 static int query_result(struct atmarp_req *reply) { unsigned char *ipp = (unsigned char *) &reply->ip; char buf[MAX_ATM_ADDR_LEN+1]; int error; printf("IP: %d.%d.%d.%d\n",ipp[0],ipp[1],ipp[2],ipp[3]); if (!atmsvc_addr_in_use(reply->addr)) return 0; error = atm2text(buf,sizeof(buf),(struct sockaddr *) &reply->addr, A2T_PRETTY | A2T_NAME) < 0; if (error) strcpy(buf,""); printf("ATM: %s\n",buf); return error ? 1 : 0; } static int send_request(struct atmarp_req *req) { struct atmarp_req reply; int s,len; s = un_attach(ATMARP_SOCKET_PATH); if (s < 0) { perror("un_attach"); exit(1); } if (write(s,req,sizeof(*req)) < 0) { perror("write"); exit(1); } len = read(s,&reply,sizeof(reply)); if (len < 0) { perror("read"); exit(1); } if (req->type == art_query) return query_result(&reply); if (len != sizeof(int)) { fprintf(stderr,"bad read: %d != %d\n",len,sizeof(int)); exit(1); } if (*(int *) &reply < 0) { fprintf(stderr,"atmarp: %s\n",strerror(-*(int *) &reply)); exit(1); } return *(int *) &reply; } static int print_table(void) { char buffer[BUF_SIZE]; int fd,size; if ((fd = open(ATMARP_DUMP_DIR "/" ATMARP_DUMP_FILE,O_RDONLY)) < 0) { perror("open " ATMARP_DUMP_DIR "/" ATMARP_DUMP_FILE); return 1; } while ((size = read(fd,buffer,BUF_SIZE))) { if (size < 0) { perror("read " ATMARP_DUMP_DIR "/" ATMARP_DUMP_FILE); return 1; } if (write(1,buffer,size) < 0) { perror("write stdout"); return 1; } } return 0; } static void usage(const char *name) { fprintf(stderr,"usage: %s -a\n",name); fprintf(stderr,"%6s %s -c [[atm]N]\n","",name); fprintf(stderr,"%6s %s -q ip_addr [qos qos_spec] [sndbuf bytes]\n","",name); fprintf(stderr,"%6s %s -s ip_addr [itf.]vpi.vci [pcr value] [qos spec] " "[sndbuf bytes]\n%8s [temp] [pub] [null]\n","",name,""); fprintf(stderr,"%6s %s -s ip_addr atm_addr [pcr value] [qos spec] " "[sndbuf bytes] [temp]\n%8s [pub] [arpsrv]\n","",name,""); fprintf(stderr,"%6s %s -d ip_addr [arpsrv]\n","",name); #if 0 /* undocumented */ fprintf(stderr,"%6s %s -Q ip_addr\n","",name); #endif fprintf(stderr,"%6s %s -V\n","",name); exit(1); } int main(int argc,char **argv) { struct atmarp_req req; int c,i,num; char *here,*end; req.type = 0; while ((c = getopt(argc,argv,"acdqQsV")) != EOF) switch (c) { case 'a': if (argc != optind || req.type) usage(argv[0]); req.type = art_table; /* (void) send_request(&req); @@@ fix this later */ return print_table(); case 'c': if (req.type) usage(argv[0]); req.type = art_create; break; case 'd': if (req.type) usage(argv[0]); req.type = art_delete; break; case 'q': if (req.type) usage(argv[0]); req.type = art_qos; break; case 'Q': if (req.type) usage(argv[0]); req.type = art_query; break; case 's': if (req.type) usage(argv[0]); req.type = art_set; break; case 'V': printf("%s\n",VERSION); return 0; default: usage(argv[0]); } switch (req.type) { case art_create: if (argc == optind) req.itf = -1; else { if (argc != optind+1) usage(argv[0]); here = argv[optind]; if (strlen(here) > 3 && !strncmp(here,"atm",3)) here += 3; req.itf = strtoul(here,&end,10); if (*end || (here[0] == '0' && here[1])) { usage(argv[0]); return 1; } } num = send_request(&req); if (req.itf == -1) printf("atm%d\n",num); return 0; case art_qos: if (argc < optind+1) usage(argv[0]); /* fall through */ case art_set: if (argc < optind+2) usage(argv[0]); break; case art_query: if (argc != optind+1) usage(argv[0]); break; case art_delete: if (argc < optind+1) usage(argv[0]); break; default: usage(argv[0]); } req.ip = text2ip(argv[optind],NULL,T2I_NAME | T2I_ERROR); if (req.ip == INADDR_NONE) return 1; req.flags = ATF_PERM; if (req.type == art_qos) { memset(&req.qos,0,sizeof(req.qos)); req.sndbuf = 0; for (i = optind+1; i < argc; i++) if (!strcmp(argv[i],"qos")) { if (++i >= argc) usage(argv[0]); if (text2qos(argv[i],&req.qos,0)) usage(argv[0]); } else if (!strcmp(argv[i],"sndbuf")) { if (++i >= argc) usage(argv[0]); req.sndbuf = strtol(argv[i],&end,0); if (*end) usage(argv[0]); } else if (i != optind+1 || argc != optind+2 || text2qos(argv[optind+1],&req.qos,0)) usage(argv[0]); } if (req.type == art_set) { memset(&req.qos,0,sizeof(req.qos)); req.sndbuf = 0; for (i = optind+2; i < argc; i++) if (!strcmp(argv[i],"temp")) req.flags &= ~ATF_PERM; else if (!strcmp(argv[i],"pub")) req.flags |= ATF_PUBL; else if (!strcmp(argv[i],"null")) req.flags |= ATF_NULL; else if (!strcmp(argv[i],"arpsrv")) req.flags |= ATF_ARPSRV; else if (!strcmp(argv[i],"qos")) { if (++i >= argc) usage(argv[0]); if (text2qos(argv[i],&req.qos,0)) usage(argv[0]); } else if (!strcmp(argv[i],"sndbuf")) { if (++i >= argc) usage(argv[0]); req.sndbuf = strtol(argv[i],&end,0); if (*end) usage(argv[0]); } else if (!strcmp(argv[i],"pcr")) { if (++i >= argc) usage(argv[0]); req.qos.txtp.traffic_class = req.qos.rxtp.traffic_class = ATM_CBR; req.qos.txtp.max_pcr = req.qos.rxtp.max_pcr = strtol(argv[i],&end,0); if (*end) usage(argv[0]); } else usage(argv[0]); if (text2atm(argv[optind+1],(struct sockaddr *) &req.addr, sizeof(req.addr),T2A_NAME) < 0) { fprintf(stderr,"%s: invalid ATM address\n",argv[optind+1]); return 1; } } if (req.type == art_delete && optind+1 < argc) { if (optind+2 < argc || strcmp(argv[optind+1],"arpsrv")) usage(argv[0]); req.flags |= ATF_ARPSRV; } if (!req.qos.aal) req.qos.aal = ATM_AAL5; send_request(&req); return 0; } linux-atm-2.5.1/src/arpd/atmarp.h0000644000200100001440000000175707360675442015461 0ustar chasusers/* atmarp.h - ATM ARP protocol definitions */ /* Written 1995-1998 by Werner Almesberger, EPFL LRC/ICA */ #ifndef _ATMARP_H #define _ATMARP_H #include /* RFC 1577 ATM ARP header */ struct atmarphdr { uint16_t ar_hrd; /* Hardware type */ uint16_t ar_pro; /* Protocol type */ uint8_t ar_shtl;/* Type & length of source ATM number (q) */ uint8_t ar_sstl;/* Type & length of source ATM subaddress (r) */ uint16_t ar_op; /* Operation code (request, reply, or NAK) */ uint8_t ar_spln;/* Length of source protocol address (s) */ uint8_t ar_thtl;/* Type & length of target ATM number (x) */ uint8_t ar_tstl;/* Type & length of target ATM subaddress (y) */ uint8_t ar_tpln;/* Length of target protocol address (z) */ /* ar_sha, at_ssa, ar_spa, ar_tha, ar_tsa, ar_tpa */ unsigned char data[1]; }; #define TL_LEN 0x3f /* ATMARP Type/Length field structure */ #define TL_E164 0x40 #define MAX_ATMARP_SIZE (sizeof(struct atmarphdr)-1+2*(ATM_E164_LEN+ \ ATM_ESA_LEN+4)) #endif linux-atm-2.5.1/src/arpd/atmarpd.80000644000200100001440000000526207360675442015540 0ustar chasusers.TH ATMARPD 8 "April 26, 2000" "Linux" "Maintenance Commands" .SH NAME atmarpd \- ATMARP demon .SH SYNOPSIS .B atmarpd .RB [ \-b ] .RB [ \-d ] .RB [ \-D\ \fIdirectory\fP ] .RB [ \-l\ \fIlogfile\fP ] .RB [ \-m ] .RB [ \-n ] .br .B atmarpd .B \-V .SH DESCRIPTION \fBatmarpd\fP implements the ATMARP protocol as specified in RFC1577 and RFC1755. Address resolution requests are sent from the kernel (using a comparably simple protocol) to the ATMARP demon, which then performs the dialog with the network. .P \fBatmarpd\fP can operate as an ATMARP client and as an ATMARP server. If also supports the concurrent use of several IP over ATM interfaces. .P \fBatmarpd\fP is configured from the command line using the \fBatmarp\fP program. Unless debugging is enabled, the ATMARP table is written after every change to the file \fB/var/run/atmarpd.table\fP (or to a file with the same name in a different directory, if the \fB\-D\fP option is used). .P Note that \fBatmarpd\fP disables support for SVCs if signaling is not available at start time, i.e. if \fBatmsigd\fP is not running. .SH OPTIONS .IP \fB\-b\fP Run in background (i.e. in a forked child process) after initializing. .IP \fB\-d\fP Enables (lots of) debugging output. By default, \fBatmarpd\fP is comparably quiet. .IP \fB\-D\ \fIdump_dir\fP Changes the directory where \fBatmarpd\fP writes its table (\fBatmarpd.table\fP). By default, \fB/var/run\fP is used. .IP \fB\-l\ \fIlogfile\fP Write diagnostic messages to the specified file instead of to standard error. The special name \fBsyslog\fP is used to send diagnostics to the system logger. .IP \fB\-m\fP Enables merging of incoming calls if the address is known. An incoming connection on which no InARP reply has been received yet, but which originates from an ATM address for which an ATMARP entry already exists, is automatically added to that entry. This assumes that there is a 1:1 mapping between IP addresses and ATMARP addresses. By default, this assumption is not made, which frequently results in the setup of duplicate connections. Note that RFC1577 requires that an ATMARP server sends an InARP request on an incoming connection. Merging may therefore violate RFC1577 in this case. .IP \fB\-n\fP Prints addresses in numeric format only, i.e. no address to name translation is attempted. .IP \fB\-V\fP Prints the version number of \fBatmarpd\fP on standard output and exits. .SH FILES .PD 0 .TP 25 .B /var/run/atmarpd.table ATMARP table .TP 25 .B /proc/atm/arp table of currently active IP over ATM VCs .PD .SH BUGS \fBatmarpd\fP removes ATMARP entries from the kernel table while refreshing them. .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" atmarp(8), atmsigd(8) .\"{{{}}} linux-atm-2.5.1/src/arpd/atmarpd.c0000644000200100001440000000416207360675442015611 0ustar chasusers/* atmarpd.c - ATMARP demon */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "atm.h" #include "atmd.h" #include "atmarpd.h" #include "io.h" #include "table.h" #ifndef NULL #define NULL ((void *) 0) #endif #define COMPONENT "ARPD" ITF *itfs = NULL; ENTRY *unknown_incoming = NULL; VCC *unidirectional_vccs = NULL; int debug; int pretty = A2T_PRETTY | A2T_NAME | A2T_LOCAL; int merge = 0; static void usage(const char *name) { fprintf(stderr,"usage: %s [ -b ] [ -d ] [ -l logfile ] [ -m [ -m ] ] " "[ -n ]\n",name); fprintf(stderr,"%6s %s -V\n","",name); exit(1); } int main(int argc,char **argv) { const char *dump_dir; int c,background; set_application("atmarpd"); set_verbosity(NULL,DIAG_INFO); dump_dir = ATMARP_DUMP_DIR; background = 0; while ((c = getopt(argc,argv,"bdD:l:mnpV")) != EOF) switch (c) { case 'b': background = 1; break; case 'd': set_verbosity(NULL,DIAG_DEBUG); debug = 1; break; case 'D': dump_dir = optarg; break; case 'l': set_logfile(optarg); break; case 'm': merge = 1; break; case 'n': /* @@@ was planned for NSAP matching */ pretty = A2T_PRETTY; break; case 'V': printf("%s\n",VERSION); return 0; case 'p': /* paranoid anti-firewall-tunneling mode @@@ */ default: usage(argv[0]); } if (argc != optind) usage(argv[0]); diag(COMPONENT,DIAG_INFO,"Linux ATM ARP, version " VERSION); if (chdir(dump_dir) < 0) diag(COMPONENT,DIAG_ERROR,"chdir %s: %s",dump_dir,strerror(errno)); if (debug) (void) unlink(ATMARP_TMP_DUMP_FILE); /* avoid confusion */ open_all(); if (background) { pid_t pid; pid = fork(); if (pid < 0) diag(COMPONENT,DIAG_FATAL,"fork: %s",strerror(errno)); if (pid) { diag(COMPONENT,DIAG_DEBUG,"Backgrounding (PID %d)",pid); exit(0); } } (void) table_update(); /* erase old table, if any */ poll_loop(); close_all(); return 0; } linux-atm-2.5.1/src/arpd/atmarpd.h0000644000200100001440000000264607360675442015623 0ustar chasusers/* atmarpd.h - ATMARP demon command interface */ /* Written 1998,1999 by Werner Almesberger, EPFL ICA */ #ifndef _ATMARPD_H #define _ATMARPD_H #include #include #define ATMARP_SOCKET_PATH "/dev/atmarp" /* it seems awfully silly to put this socket into /dev, but since that's what syslogd and lpd are doing too, ... */ #define ATMARP_DUMP_DIR "/var/run" /* ATMARP table file location */ #define ATMARP_DUMP_FILE "atmarpd.table" /* ATMARP table file name */ #define ATMARP_TMP_DUMP_FILE "~atmarpd.table"/* name during creation */ #define ATF_NULL 0x1000 /* use NULL encapsulation */ #define ATF_ARPSRV 0x2000 /* entry describes ARP server */ #define ATF_NOVC 0x4000 /* query only; do not create a VC */ enum atmarp_req_type { art_invalid, /* catch uninitialized structures */ art_create, /* create an interface */ art_qos, /* set the default QoS */ art_set, /* create or change an entry */ art_delete, /* delete an entry */ art_table, /* update the ATMARP table file */ art_query /* request resolution without VC setup */ }; struct atmarp_req { enum atmarp_req_type type; /* request type */ int itf; /* interface number; art_create only */ uint32_t ip; /* IP address */ struct sockaddr_atmsvc addr; /* PVC or SVC address */ int flags; /* ARP flags */ struct atm_qos qos; /* requested QOS */ int sndbuf; /* send buffer; 0 if default */ }; #endif linux-atm-2.5.1/src/arpd/io.c0000644000200100001440000004066411235572165014571 0ustar chasusers/* io.c - I/O operations */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* for CLIP_DEFAULT_IDLETIMER */ #include #define _LINUX_NETDEVICE_H /* glibc2 */ #include #include #include "atmd.h" #include "atmarpd.h" #include "table.h" #include "arp.h" #include "itf.h" #include "io.h" #define COMPONENT "IO" struct timeval now; static int kernel,incoming,inet,unix_sock; /* ----- kernel interface -------------------------------------------------- */ static void open_kernel(void) { struct sockaddr_atmsvc addr; struct atm_qos qos; struct atm_sap sap; if ((kernel = socket(PF_ATMSVC,SOCK_DGRAM,0)) < 0) diag(COMPONENT,DIAG_FATAL,"socket: %s",strerror(errno)); if (ioctl(kernel,ATMARPD_CTRL,0) < 0) diag(COMPONENT,DIAG_FATAL,"ioctl ATMARPD_CTRL: %s",strerror(errno)); if ((incoming = socket(PF_ATMSVC,SOCK_DGRAM,0)) < 0) diag(COMPONENT,DIAG_FATAL,"socket: %s",strerror(errno)); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.rxtp.traffic_class = qos.txtp.traffic_class = ATM_ANYCLASS; if (setsockopt(incoming,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) diag(COMPONENT,DIAG_FATAL,"setsockopt SO_ATMQOS: %s",strerror(errno)); memset(&sap,0,sizeof(sap)); sap.blli[0].l2_proto = ATM_L2_ISO8802; sap.blli[0].l3_proto = ATM_L3_NONE; if (setsockopt(incoming,SOL_ATM,SO_ATMSAP,&sap,sizeof(sap)) < 0) diag(COMPONENT,DIAG_FATAL,"setsockopt SO_ATMSAP: %s",strerror(errno)); memset(&addr,0,sizeof(addr)); addr.sas_family = AF_ATMSVC; if (bind(incoming,(struct sockaddr *) &addr,sizeof(addr)) >= 0) { if (listen(incoming,5) < 0) diag(COMPONENT,DIAG_FATAL,"listen: %s",strerror(errno)); } else { if (errno != EUNATCH) diag(COMPONENT,DIAG_FATAL,"bind: %s",strerror(errno)); diag(COMPONENT,DIAG_WARN,"SVCs are not available"); (void) close(incoming); incoming = -1; } if ((inet = socket(PF_INET,SOCK_DGRAM,0)) < 0) diag(COMPONENT,DIAG_FATAL,"socket: %s",strerror(errno)); } static void recv_kernel(void) { struct atmarp_ctrl ctrl; int size; size = read(kernel,&ctrl,sizeof(ctrl)); if (size < 0) { diag(COMPONENT,DIAG_ERROR,"read kernel: %s",strerror(errno)); return; } switch (ctrl.type) { case act_need: need_ip(ctrl.itf_num,ctrl.ip); break; case act_up: itf_up(ctrl.itf_num); break; case act_down: itf_down(ctrl.itf_num); break; case act_change: itf_change(ctrl.itf_num); break; default: diag(COMPONENT,DIAG_ERROR,"invalid control msg type 0x%x", ctrl.type); } } static void close_kernel(void) { if (incoming >= 0) (void) close(incoming); (void) close(kernel); /* may get major complaints from the kernel ... */ (void) close(inet); } /* ----- atmarp (maintenance) interface ------------------------------------ */ static void open_unix(void) { unix_sock = un_create(ATMARP_SOCKET_PATH,0600); if (unix_sock < 0) diag(COMPONENT,DIAG_FATAL,"un_create: %s",strerror(errno)); } void notify(const UN_CTX *ctx,uint32_t ip,const ENTRY *entry) { struct atmarp_req reply; memset(&reply,0,sizeof(reply)); reply.type = art_query; reply.ip = ip; if (entry && entry->addr) reply.addr = *entry->addr; if (un_send(ctx,&reply,sizeof(reply)) < 0) diag(COMPONENT,DIAG_WARN,"notify: %s",strerror(errno)); } static void recv_unix(void) { UN_CTX ctx; struct atmarp_req req; int len,reply; len = un_recv(&ctx,unix_sock,&req,sizeof(req)); if (len < 0) { diag(COMPONENT,DIAG_ERROR,"recv_unix: %s",strerror(errno)); return; } if (len != sizeof(req)) { diag(COMPONENT,DIAG_ERROR,"bad unix read: %d != %d",len,sizeof(req)); return; } switch (req.type) { case art_create: reply = ioctl(kernel,SIOCMKCLIP,req.itf); if (reply >= 0) itf_create(reply); break; case art_qos: case art_set: case art_delete: reply = arp_ioctl(&req); break; case art_table: reply = table_update(); break; case art_query: query_ip(&ctx,req.ip); return; default: diag(COMPONENT,DIAG_ERROR,"invalid request msg type 0x%x",req.type); reply = -EINVAL; } if (un_send(&ctx,&reply,sizeof(reply)) < 0) diag(COMPONENT,DIAG_ERROR,"un_send: %s",strerror(errno)); } static void close_unix(void) { (void) close(unix_sock); (void) unlink(ATMARP_SOCKET_PATH); } /* ----- common part ------------------------------------------------------- */ #define MAX_BUFFER 1024 static fd_set rset,cset; int do_close(int fd) { int result; result = close(fd); FD_CLR(fd,&rset); /* we might open a new fd with the same number, so ... */ FD_CLR(fd,&cset); return result; } static void recv_vcc(VCC *vcc) { unsigned char buffer[MAX_BUFFER]; int size; size = read(vcc->fd,buffer,MAX_BUFFER); if (!size) { disconnect_vcc(vcc); return; } if (size < 0) { diag(COMPONENT,DIAG_ERROR,"read vcc: %s",strerror(errno)); disconnect_vcc(vcc); return; } if (debug) { int i; for (i = 0; i < size; i++) printf("%02X ",buffer[i]); printf("\n"); } incoming_arp(vcc,(struct atmarphdr *) buffer,size); } static void drain_vcc(VCC *vcc) { unsigned char buffer[MAX_BUFFER]; char line[80]; /* actually, it's only 7+16*3+1 */ int size; int i; size = read(vcc->fd,buffer,MAX_BUFFER); if (!size) { disconnect_vcc(vcc); return; } if (size < 0) { diag(COMPONENT,DIAG_ERROR,"read vcc: %s",strerror(errno)); disconnect_vcc(vcc); return; } diag(COMPONENT,DIAG_WARN,"drain_vcc: unexpected message on " "unidirectional (RSVP?) VCC %p:",vcc); for (i = 0; i < size; i++) { if (!(i & 15)) { if (i) diag(COMPONENT,DIAG_WARN,"%s",line); sprintf(line," %04x:",i); *line = 0; } sprintf(strchr(line,0)," %02x",buffer[i]); } diag(COMPONENT,DIAG_WARN,"%s",line); } static void accept_new(void) { char buffer[MAX_ATM_ADDR_LEN+1]; struct sockaddr_atmsvc addr; struct atm_qos qos; ENTRY *entry; VCC *vcc; int fd,len,size,error; len = sizeof(addr); if ((fd = accept(incoming,(struct sockaddr *) &addr,&len)) < 0) { error = errno; diag(COMPONENT,DIAG_ERROR,"accept: %s",strerror(errno)); if (error == EUNATCH) { diag(COMPONENT,DIAG_WARN,"disabling SVCs"); (void) close(incoming); incoming = -1; } return; } /* the following code probably belongs to arp.c ... */ if (atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) &addr,pretty) < 0) strcpy(buffer,""); diag(COMPONENT,DIAG_DEBUG,"Incoming call from %s",buffer); size = sizeof(qos); if (getsockopt(fd,SOL_ATM,SO_ATMQOS,&qos,&size) < 0) diag(COMPONENT,DIAG_FATAL,"getsockopt SO_ATMQOS: %s",strerror(errno)); if (size != sizeof(qos)) diag(COMPONENT,DIAG_FATAL,"SO_ATMQOS: size %d != %d",size,sizeof(qos)); if (ioctl(fd,ATMARP_MKIP,qos.txtp.traffic_class == ATM_NONE ? 0 : CLIP_DEFAULT_IDLETIMER) < 0) { diag(COMPONENT,DIAG_ERROR,"ioctl ATMARP_MKIP: %s",strerror(errno)); (void) do_close(fd); return; } vcc = alloc_t(VCC); vcc->active = 0; vcc->connecting = 0; vcc->fd = fd; if (qos.txtp.traffic_class == ATM_NONE) { vcc->entry = NULL; incoming_unidirectional(vcc); Q_INSERT_HEAD(unidirectional_vccs,vcc); return; } if (merge) { ITF *itf; for (itf = itfs; itf; itf = itf->next) { entry = lookup_addr(itf,&addr); if (entry) { vcc->entry = entry; Q_INSERT_HEAD(entry->vccs,vcc); if (entry->state == as_valid) { if (set_ip(vcc->fd,entry->ip) < 0) { diag(COMPONENT,DIAG_ERROR,"set_ip: %s", strerror(errno)); disconnect_vcc(vcc); } else set_sndbuf(vcc); } return; } } } entry = alloc_entry(1); entry->state = as_invalid; entry->addr = alloc_t(struct sockaddr_atmsvc); *entry->addr = addr; entry->flags = ATF_PUBL; Q_INSERT_HEAD(unknown_incoming,entry); vcc->entry = entry; Q_INSERT_HEAD(entry->vccs,vcc); incoming_call(vcc); } int connect_vcc(struct sockaddr *remote,const struct atm_qos *qos,int sndbuf, int timeout) { int fd,error,flags; if (remote->sa_family == AF_ATMSVC && incoming < 0) return -EUNATCH; if ((fd = socket(remote->sa_family,SOCK_DGRAM,0)) < 0) { error = -errno; diag(COMPONENT,DIAG_ERROR,"socket: %s",strerror(errno)); return error; } if (setsockopt(fd,SOL_ATM,SO_ATMQOS,qos,sizeof(*qos)) < 0) { error = -errno; diag(COMPONENT,DIAG_ERROR,"setsockopt SO_ATMQOS: %s",strerror(errno)); return error; } if (sndbuf) if (setsockopt(fd,SOL_SOCKET,SO_SNDBUF,&sndbuf,sizeof(sndbuf)) < 0) { error = -errno; diag(COMPONENT,DIAG_ERROR,"setsockopt SO_SNDBUF: %s", strerror(errno)); return error; } if ((flags = fcntl(fd,F_GETFL)) < 0) { error = -errno; diag(COMPONENT,DIAG_ERROR,"fcntl F_GETFL: %s",strerror(errno)); return error; } flags |= O_NONBLOCK; if (fcntl(fd,F_SETFL,flags) < 0) { error = -errno; diag(COMPONENT,DIAG_ERROR,"fcntl F_GETFL: %s",strerror(errno)); return error; } if (remote->sa_family == AF_ATMSVC) { /* @@@ that's cheating */ struct atm_sap sap; memset(&sap,0,sizeof(sap)); sap.blli[0].l2_proto = ATM_L2_ISO8802; sap.blli[0].l3_proto = ATM_L3_NONE; if (setsockopt(fd,SOL_ATM,SO_ATMSAP,&sap,sizeof(sap)) < 0) { error = -errno; diag(COMPONENT,DIAG_ERROR,"setsockopt SO_ATMSAP: %s", strerror(errno)); return error; } } /* PVC connect never blocks */ if (connect(fd,remote,remote->sa_family == AF_ATMPVC ? sizeof(struct sockaddr_atmpvc) : sizeof(struct sockaddr_atmsvc)) < 0) { if (errno != EINPROGRESS) { error = -errno; diag(COMPONENT,DIAG_ERROR,"[1]connect: %s",strerror(errno)); return error; } return fd; } if (ioctl(fd,ATMARP_MKIP,timeout) < 0) { error = -errno; diag(COMPONENT,DIAG_ERROR,"ioctl ATMARP_MKIP: %s",strerror(errno)); (void) do_close(fd); return error; } return fd; } int set_ip(int fd,int ip) { int error; if (ioctl(fd,ATMARP_SETENTRY,ip) >= 0) return 0; error = -errno; diag(COMPONENT,DIAG_ERROR,"ioctl ATMARP_SETENTRY: %s",strerror(errno)); return error; } int set_encap(int fd,int mode) { int error; if (ioctl(fd,ATMARP_ENCAP,mode) >= 0) return 0; error = -errno; diag(COMPONENT,DIAG_ERROR,"ioctl ATMARP_ENCAP: %s",strerror(errno)); (void) do_close(fd); return error; } void set_sndbuf(VCC *vcc) { if (setsockopt(vcc->fd,SOL_SOCKET,SO_SNDBUF,&vcc->entry->sndbuf, sizeof(int)) >= 0) return; diag(COMPONENT,DIAG_ERROR,"setsockopt SO_SNDBUF: %s",strerror(errno)); } static void complete_connect(VCC *vcc) { struct sockaddr_atmsvc dummy; if (!vcc->connecting) diag(COMPONENT,DIAG_FATAL,"connecting non-connecting VCC 0x%p",vcc); memset(&dummy,0,sizeof(dummy)); if (!connect(vcc->fd,(struct sockaddr *) &dummy,sizeof(dummy))) { if (ioctl(vcc->fd,ATMARP_MKIP,CLIP_DEFAULT_IDLETIMER) < 0) { diag(COMPONENT,DIAG_ERROR,"ioctl ATMARP_MKIP: %s",strerror(errno)); (void) do_close(vcc->fd); vcc_failed(vcc); } vcc_connected(vcc); } else { diag(COMPONENT,DIAG_INFO,"[2]connect: %s",strerror(errno)); (void) do_close(vcc->fd); vcc_failed(vcc); } } void poll_loop(void) { ITF *itf,*next_itf; ENTRY *entry,*next_entry; VCC *vcc,*next_vcc; int fds,ret; gettimeofday(&now,NULL); while (1) { FD_ZERO(&rset); FD_ZERO(&cset); FD_SET(kernel,&rset); FD_SET(unix_sock,&rset); if (incoming >= 0) FD_SET(incoming,&rset); fds = incoming+1; if (kernel >= fds) fds = kernel+1; if (unix_sock >= fds) fds = unix_sock+1; for (itf = itfs; itf; itf = itf->next) for (entry = itf->table; entry; entry = entry->next) for (vcc = entry->vccs; vcc; vcc = vcc->next) { if (vcc->connecting) FD_SET(vcc->fd,&cset); else FD_SET(vcc->fd,&rset); if (vcc->fd >= fds) fds = vcc->fd+1; } for (entry = unknown_incoming; entry; entry = entry->next) { if (!entry->vccs || entry->vccs->next) { diag(COMPONENT,DIAG_ERROR,"internal error: bad unknown entry"); continue; } FD_SET(entry->vccs->fd,&rset); if (entry->vccs->fd >= fds) fds = entry->vccs->fd+1; } for (vcc = unidirectional_vccs; vcc; vcc = vcc->next) { FD_SET(vcc->fd,&rset); if (vcc->fd >= fds) fds = vcc->fd+1; } ret = select(fds,&rset,&cset,NULL,next_timer()); /* * Now here's something strange: < 0.32 needed the exception mask to be NULL * in order to work, due to a bug in atm_select. In 0.32, this has been fixed. * Also, 2.1 kernels use the poll mechanism and not select, so select is * emulated on top of poll. Now the funny bit is that, as soon as the exception * set is non-NULL, when a non-blocking connect finishes, select returns one * but has none if the possible bits set in either rset or cset. To make things * even stranger, no exception is actually found in sys_select, so this must be * some very odd side-effect ... The work-around for now is to simply pass NULL * for the exception mask (which is the right thing to do anyway, but it'd be * nice if doing a perfectly valid variation wouldn't blow up the system ...) */ #if 0 { int i; for (i = 0; i < sizeof(rset); i++) fprintf(stderr,"%02x:%02x ",((unsigned char *) &rset)[i], ((unsigned char *) &cset)[i]); fprintf(stderr,"\n"); } #endif if (ret < 0) { if (errno != EINTR) perror("select"); } else { diag(COMPONENT,DIAG_DEBUG,"----------"); gettimeofday(&now,NULL); if (FD_ISSET(kernel,&rset)) recv_kernel(); if (FD_ISSET(unix_sock,&rset)) recv_unix(); if (incoming >= 0 && FD_ISSET(incoming,&rset)) accept_new(); for (itf = itfs; itf; itf = next_itf) { next_itf = itf->next; for (entry = itf->table; entry; entry = next_entry) { next_entry = entry->next; for (vcc = entry->vccs; vcc; vcc = next_vcc) { next_vcc = vcc->next; if (FD_ISSET(vcc->fd,&rset)) recv_vcc(vcc); else if (FD_ISSET(vcc->fd,&cset)) complete_connect(vcc); } } } for (entry = unknown_incoming; entry; entry = next_entry) { next_entry = entry->next; if (FD_ISSET(entry->vccs->fd,&rset)) recv_vcc(entry->vccs); } for (vcc = unidirectional_vccs; vcc; vcc = next_vcc) { next_vcc = vcc->next; if (FD_ISSET(vcc->fd,&rset)) drain_vcc(vcc); } expire_timers(); /* expire timers after handling messages to make sure we don't time out unnecessarily because of scheduling delays */ } table_changed(); } } void send_packet(int fd,void *data,int length) { int wrote; if (debug) { int i; for (i = 0; i < length; i++) printf("%02X ",((unsigned char *) data)[i]); printf("\n"); } if ((wrote = write(fd,data,length)) == length) return; if (wrote < 0) diag(COMPONENT,DIAG_ERROR,"write: %s",strerror(errno)); else diag(COMPONENT,DIAG_ERROR,"short write: %d < %d",wrote,length); } int ip_itf_info(int number,uint32_t *ip,uint32_t *netmask,int *mtu) { struct ifreq req; unsigned char *p1,*p2; sprintf(req.ifr_ifrn.ifrn_name,"atm%d",number); if (ioctl(inet,SIOCGIFADDR,&req) < 0) { diag(COMPONENT,DIAG_ERROR,"ioctl SIOCGIFADDR: %s",strerror(errno)); return -1; } *ip = ((struct sockaddr_in *) &req.ifr_ifru.ifru_addr)->sin_addr.s_addr; if (ioctl(inet,SIOCGIFNETMASK,&req) < 0) { diag(COMPONENT,DIAG_ERROR,"ioctl SIOCGIFNETMASK: %s",strerror(errno)); return -1; } *netmask = ((struct sockaddr_in *) &req.ifr_ifru.ifru_netmask)-> sin_addr.s_addr; if (ioctl(inet,SIOCGIFMTU,&req) < 0) { diag(COMPONENT,DIAG_ERROR,"ioctl SIOCGIFMTU: %s",strerror(errno)); return -1; } *mtu = req.ifr_ifru.ifru_mtu; p1 = (unsigned char *) ip; p2 = (unsigned char *) netmask; diag(COMPONENT,DIAG_DEBUG,"ip %d.%d.%d.%d mask %d.%d.%d.%d mtu %d", p1[0],p1[1],p1[2],p1[3],p2[0],p2[1],p2[2],p2[3],*mtu); return 0; } int get_local(int fd,struct sockaddr_atmsvc *addr) { int length,result; length = sizeof(struct sockaddr_atmsvc); result = getsockname(fd,(struct sockaddr *) addr,&length); if (result < 0) diag(COMPONENT,DIAG_ERROR,"getsockname: %s",strerror(errno)); return result; } void open_all(void) { open_kernel(); open_unix(); } void close_all(void) { close_kernel(); close_unix(); } linux-atm-2.5.1/src/arpd/io.h0000644000200100001440000000142307360675442014572 0ustar chasusers/* io.h - I/O operations */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef IO_H #define IO_H #include #include /* for struct sockaddr */ #include /* for struct sockaddr_atmsvc */ #include #include "table.h" void open_all(void); void close_all(void); void notify(const UN_CTX *ctx,uint32_t ip,const ENTRY *entry); int do_close(int fd); void poll_loop(void); int connect_vcc(struct sockaddr *remote,const struct atm_qos *qos,int sndbuf, int timeout); int set_ip(int fd,int ip); int set_encap(int fd,int mode); void set_sndbuf(VCC *vcc); void send_packet(int fd,void *data,int length); int ip_itf_info(int number,uint32_t *ip,uint32_t *netmask,int *mtu); int get_local(int fd,struct sockaddr_atmsvc *addr); #endif linux-atm-2.5.1/src/arpd/itf.c0000644000200100001440000000564310645173323014737 0ustar chasusers/* itf.c - IP interface registry */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #define _LINUX_NETDEVICE_H /* glibc2 */ #include #include #include "atmd.h" #include "table.h" #include "io.h" #include "itf.h" #include "arp.h" #define COMPONENT "ITF" ITF *lookup_itf(int number) { ITF *itf; for (itf = itfs; itf; itf = itf->next) if (itf->number == number) break; return itf; } ITF *lookup_itf_by_ip(uint32_t ip) { ITF *itf; for (itf = itfs; itf; itf = itf->next) if (!((itf->local_ip ^ ip) & itf->netmask)) break; return itf; } void itf_create(int number) { diag(COMPONENT,DIAG_DEBUG,"ITF CREATE %d",number); } void itf_up(int number) { ITF *itf; diag(COMPONENT,DIAG_DEBUG,"ITF UP %d",number); if (lookup_itf(number)) { diag(COMPONENT,DIAG_ERROR,"interface is already active"); return; } itf = alloc_t(ITF); if (ip_itf_info(number,&itf->local_ip,&itf->netmask,&itf->mtu) < 0) { free(itf); return; } itf->number = number; memset(&itf->qos,0,sizeof(struct atm_qos)); itf->qos.aal = ATM_AAL5; itf->qos.txtp.traffic_class = ATM_UBR; itf->qos.txtp.max_sdu = RFC1483LLC_LEN+RFC1626_MTU; itf->qos.rxtp = itf->qos.txtp; itf->sndbuf = 0; /* use system default */ itf->table = itf->arp_srv = NULL; Q_INSERT_HEAD(itfs,itf); } static void itf_bring_down(ITF *itf) { ENTRY *entry,*next; for (entry = itf->table; entry; entry = next) { next = entry->next; discard_entry(entry); } Q_REMOVE(itfs,itf); free(itf); } void itf_down(int number) { ITF *itf; diag(COMPONENT,DIAG_DEBUG,"ITF DOWN %d",number); itf = lookup_itf(number); if (!itf) { diag(COMPONENT,DIAG_ERROR,"no such interface (%d)",number); return; } itf_bring_down(itf); } void itf_change(int number) { ITF *itf; ENTRY *entry,*next,*disconnected; uint32_t local_ip,netmask; int mtu; diag(COMPONENT,DIAG_DEBUG,"ITF CHANGE %d",number); itf = lookup_itf(number); if (!itf) { diag(COMPONENT,DIAG_DEBUG,"no interface to change (%d)",number); return; } if (ip_itf_info(number,&local_ip,&netmask,&mtu) < 0) { itf_bring_down(itf); return; } disconnected = NULL; for (entry = itf->table; entry; entry = next) { next = entry->next; if ((entry->flags & ATF_PERM) && !((entry->ip ^ local_ip) & (netmask | itf->netmask))) continue; if ((entry->flags & ATF_ARPSRV) && !((entry->ip ^ local_ip) & netmask)) { disconnected = entry; discard_vccs(entry); /* @@@ should adjust max_sdu if mtu changed */ continue; } discard_entry(entry); } itf->local_ip = local_ip; itf->netmask = netmask; itf->mtu = mtu; if (disconnected) vcc_detach(disconnected); } linux-atm-2.5.1/src/arpd/itf.h0000644000200100001440000000054207360675442014746 0ustar chasusers/* itf.h - IP interface registry */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef ITF_H #define ITF_H #include #include "table.h" ITF *lookup_itf(int number); ITF *lookup_itf_by_ip(uint32_t ip); void itf_create(int number); void itf_up(int number); void itf_down(int number); void itf_change(int number); #endif linux-atm-2.5.1/src/arpd/table.c0000644000200100001440000001451607360675442015254 0ustar chasusers/* table.c - ATMARP table */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include "atm.h" #include "atmd.h" #include "atmarpd.h" #include "table.h" #define COMPONENT "TABLE" const char *entry_state_name[] = { "NONE","RESOLV","INVALID","VALID" }; ENTRY *alloc_entry(int svc) { ENTRY *entry; entry = alloc_t(ENTRY); entry->state = as_none; entry->svc = svc; entry->ip = 0; entry->addr = NULL; entry->flags = 0; entry->timer = NULL; entry->vccs = NULL; entry->notify = NULL; entry->itf = NULL; return entry; } ENTRY *lookup_ip(const ITF *itf,uint32_t ip) { ENTRY *walk; for (walk = itf->table; walk; walk = walk->next) if (walk->ip == ip) break; return walk; } ENTRY *lookup_addr(const ITF *itf,const struct sockaddr_atmsvc *addr) { ENTRY *walk; for (walk = itf->table; walk; walk = walk->next) if (walk->addr && atm_equal((struct sockaddr *) walk->addr, (struct sockaddr *) addr,0,0)) break; return walk; } ENTRY *lookup_incoming(const struct sockaddr_atmsvc *addr) { ENTRY *walk; for (walk = unknown_incoming; walk; walk = walk->next) if (walk->addr && atm_equal((struct sockaddr *) walk->addr, (struct sockaddr *) addr,0,0)) break; return walk; } static int table_uptodate = 0; /* ATMARP table file is up to date */ static FILE *out_file = NULL; static int out_error = 0; static void output(const char *fmt,...) { va_list ap; va_start(ap,fmt); if (!out_file) vdiag(COMPONENT,DIAG_DEBUG,fmt,ap); else if (vfprintf(out_file,fmt,ap) < 0 || putc('\n',out_file) < 0) out_error = errno; va_end(ap); } static void dump_vcc(VCC *vcc) { struct sockaddr_atmsvc addr; char addr_buf[MAX_ATM_ADDR_LEN+1]; char qos_buf[MAX_ATM_QOS_LEN+1]; struct atm_qos qos; int size,sndbuf; size = sizeof(addr); if (getpeername(vcc->fd,(struct sockaddr *) &addr,&size) < 0) { diag(COMPONENT,DIAG_ERROR,"getpeername: %s",strerror(errno)); strcpy(addr_buf,""); } else { #if 0 int i; for (i = 0; i < size; i++) printf("%02X ",((unsigned char *) &addr)[i]); printf("\n"); #endif if (atm2text(addr_buf,sizeof(addr_buf),(struct sockaddr *) &addr, pretty) < 0) strcpy(addr_buf,""); } output(" %s%s",addr_buf,vcc->connecting ? ", connecting" : !vcc->entry || !vcc->entry->svc ? "" : vcc->active ? " (active)" : " (passive)"); if (vcc->connecting) return; size = sizeof(qos); if (getsockopt(vcc->fd,SOL_ATM,SO_ATMQOS,&qos,&size) < 0) output(" QOS: ",strerror(errno)); else if (!vcc->entry || !qos_equal(&vcc->entry->qos,&qos)) { if (qos2text(qos_buf,sizeof(qos_buf),&qos,0) < 0) strcpy(qos_buf,""); output(" QOS: %s",qos_buf); } size = sizeof(sndbuf); if (getsockopt(vcc->fd,SOL_SOCKET,SO_SNDBUF,&sndbuf,&size) < 0) output(" Send buffer: ",strerror(errno)); else if (!vcc->entry || vcc->entry->sndbuf != sndbuf) output(" Send buffer: %d",sndbuf); } static void dump_vccs(VCC *vcc) { while (vcc) { dump_vcc(vcc); vcc = vcc->next; } } static void dump_entries(ENTRY *list) { static const char *flag_name[] = { "???", "com", "PERM", "PUBL", /* 0x0001-0x0008 */ "trailers", "netmask", "dontpub", "magic", /* 0x0010-0x0080 */ "???", "???", "???", "???", /* 0x0100-0x0800 */ "NULL", "ARPSRV", "NOVC", "???" }; /* 0x1000-0x8000 */ /* lower case flags are not used by ATMARP */ ENTRY *entry; char addr_buf[MAX_ATM_ADDR_LEN+1]; char qos_buf[MAX_ATM_QOS_LEN+1]; char tmp[100]; /* large enough for all flags */ unsigned char *ipp; int i; for (entry = list; entry ; entry = entry->next) { if (!entry->addr) strcpy(addr_buf,""); else if (atm2text(addr_buf,MAX_ATM_ADDR_LEN+1, (struct sockaddr *) entry->addr,pretty) < 0) strcpy(addr_buf,""); ipp = (unsigned char *) &entry->ip; *tmp = 0; for (i = 0; i < 16; i++) if (entry->flags & (1 << i)) { if (*tmp) strcat(tmp,","); strcat(tmp,flag_name[i]); } output("IP %d.%d.%d.%d, state %s, addr %s, flags 0x%x<%s>",ipp[0], ipp[1],ipp[2],ipp[3],entry_state_name[entry->state],addr_buf, entry->flags,tmp); if (entry->itf && !qos_equal(&entry->itf->qos,&entry->qos)) { if (qos2text(qos_buf,sizeof(qos_buf),&entry->qos,0) < 0) strcpy(qos_buf,""); output(" QOS: %s",qos_buf); } if (entry->itf && entry->sndbuf && entry->sndbuf != entry->itf->sndbuf) output(" Send buffer: %d",entry->sndbuf); if (entry->notify) { NOTIFY *notify; int count; count = 0; for (notify = entry->notify; notify; notify = notify->next) count++; output(" %d quer%s pending",count,count == 1 ? "y" : "ies"); } dump_vccs(entry->vccs); } } static void dump_itf(ITF *itf) { unsigned char *ipp,*nmp; char buf[MAX_ATM_QOS_LEN+1]; ipp = (unsigned char *) &itf->local_ip; nmp = (unsigned char *) &itf->netmask; output("----- Itf %d (%d.%d.%d.%d, netmask %d.%d.%d.%d) -----",itf->number, ipp[0],ipp[1],ipp[2],ipp[3],nmp[0],nmp[1],nmp[2],nmp[3]); if (qos2text(buf,sizeof(buf),&itf->qos,0) < 0) strcpy(buf,""); output("Default QOS: %s",buf); if (itf->sndbuf) output("Default send buffer: %d",itf->sndbuf); dump_entries(itf->table); } static void dump_all(void) { ITF *itf; for (itf = itfs; itf; itf = itf->next) dump_itf(itf); output("----- Unknown incoming connections -----"); dump_entries(unknown_incoming); output("----- Incoming unidirectional connections -----"); dump_vccs(unidirectional_vccs); output("----- End of dump -----"); } void table_changed(void) { table_uptodate = 0; table_update(); /* @@@ sigh, fix this later */ if (debug) { out_file = 0; dump_all(); } } int table_update(void) { if (table_uptodate) return 0; out_file = fopen(ATMARP_TMP_DUMP_FILE,"w"); out_error = 0; dump_all(); if (fclose(out_file) < 0) out_error = errno; if (!out_error) { if (rename(ATMARP_TMP_DUMP_FILE,ATMARP_DUMP_FILE) < 0) out_error = errno; else table_uptodate = 1; } unlink(ATMARP_TMP_DUMP_FILE); return out_error; } linux-atm-2.5.1/src/arpd/table.h0000644000200100001440000000374607360675442015264 0ustar chasusers/* table.h - ATMARP table */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef TABLE_H #define TABLE_H #include #include #include #include "atmd.h" typedef struct _vcc { int connecting; int active; /* indicate direction - for user entertainment only */ int fd; struct _entry *entry; struct _vcc *prev,*next; } VCC; typedef enum { as_none, /* invalid */ as_resolv, /* waiting for resolver response */ as_invalid, /* invalid, waiting for all VCs to be closed */ as_valid, /* valid */ } ADDR_STATE; typedef struct _notify { UN_CTX ctx; /* peer to send reply to */ struct _notify *next; } NOTIFY; typedef struct _entry { ADDR_STATE state; int svc; uint32_t ip; struct sockaddr_atmsvc *addr; /* NULL if none */ struct atm_qos qos; int sndbuf; int flags; TIMER *timer; /* currently active timer or NULL */ int timeout; /* current interval - only necessary if using retries */ int retries; VCC *vccs; NOTIFY *notify; struct _itf *itf; struct _entry *prev,*next; /* undefined if itf == NULL */ } ENTRY; typedef struct _itf { uint32_t local_ip; /* @@@ */ uint32_t netmask; int number; int mtu; struct atm_qos qos; /* default QOS */ int sndbuf; /* default send buffer */ ENTRY *table; ENTRY *arp_srv; /* NULL is none */ struct _itf *prev,*next; } ITF; /* * May want to consider using one big unified table instead of lots of small * tables (one per interface). */ extern const char *entry_state_name[]; extern const char *vcc_state_name[]; extern ITF *itfs; extern ENTRY *unknown_incoming; extern VCC *unidirectional_vccs; extern int pretty,merge; ENTRY *alloc_entry(int svc); ENTRY *lookup_ip(const ITF *itf,uint32_t ip); ENTRY *lookup_addr(const ITF *itf,const struct sockaddr_atmsvc *addr); ENTRY *lookup_incoming(const struct sockaddr_atmsvc *addr); void table_changed(void); int table_update(void); #endif linux-atm-2.5.1/src/arpd/Makefile.in0000644000200100001440000005212411304770375016055 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ sbin_PROGRAMS = atmarp$(EXEEXT) atmarpd$(EXEEXT) subdir = src/arpd DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" \ "$(DESTDIR)$(includedir)" PROGRAMS = $(sbin_PROGRAMS) am_atmarp_OBJECTS = atmarp.$(OBJEXT) atmarp_OBJECTS = $(am_atmarp_OBJECTS) atmarp_LDADD = $(LDADD) atmarp_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_atmarpd_OBJECTS = atmarpd.$(OBJEXT) arp.$(OBJEXT) io.$(OBJEXT) \ itf.$(OBJEXT) table.$(OBJEXT) atmarpd_OBJECTS = $(am_atmarpd_OBJECTS) atmarpd_LDADD = $(LDADD) atmarpd_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(atmarp_SOURCES) $(atmarpd_SOURCES) DIST_SOURCES = $(atmarp_SOURCES) $(atmarpd_SOURCES) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) HEADERS = $(include_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ LDADD = $(top_builddir)/src/lib/libatm.la atmarp_SOURCES = atmarp.c atmarp.h atmarpd.h atmarpd_SOURCES = atmarpd.c atmarpd.h arp.c arp.h io.c io.h itf.c itf.h \ table.c table.h atmarp.h include_HEADERS = atmarp.h atmarpd.h man_MANS = atmarp.8 atmarpd.8 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/arpd/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/arpd/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list atmarp$(EXEEXT): $(atmarp_OBJECTS) $(atmarp_DEPENDENCIES) @rm -f atmarp$(EXEEXT) $(LINK) $(atmarp_OBJECTS) $(atmarp_LDADD) $(LIBS) atmarpd$(EXEEXT): $(atmarpd_OBJECTS) $(atmarpd_DEPENDENCIES) @rm -f atmarpd$(EXEEXT) $(LINK) $(atmarpd_OBJECTS) $(atmarpd_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmarp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmarpd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/itf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man8: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" @list=''; test -n "$(man8dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(includedir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-sbinPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS uninstall-man \ uninstall-sbinPROGRAMS uninstall-man: uninstall-man8 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-sbinPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-includeHEADERS install-info \ install-info-am install-man install-man8 install-pdf \ install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-includeHEADERS uninstall-man uninstall-man8 \ uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/br2684/0000755000200100001440000000000011304770375014005 5ustar chasuserslinux-atm-2.5.1/src/br2684/CVS/0000755000200100001440000000000011304767137014442 5ustar chasuserslinux-atm-2.5.1/src/br2684/CVS/Root0000644000200100001440000000007411304767137015311 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/br2684/CVS/Repository0000644000200100001440000000002511304767137016541 0ustar chasuserslinux-atm/src/br2684 linux-atm-2.5.1/src/br2684/CVS/Entries0000644000200100001440000000033611304767137016000 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:26 2007//TV2_5_1 /Makefile.am/1.1.2.2/Wed Apr 20 16:55:03 2005//TV2_5_1 /br2684ctl.8/1.1.2.7/Sat Dec 29 21:05:03 2007//TV2_5_1 /br2684ctl.c/1.1.2.13/Sat Dec 29 20:59:49 2007//TV2_5_1 D linux-atm-2.5.1/src/br2684/CVS/Tag0000644000200100001440000000001011304767137015067 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/br2684/.cvsignore0000644000200100001440000000005310666025262016001 0ustar chasusersMakefile Makefile.in .deps .libs br2684ctl linux-atm-2.5.1/src/br2684/Makefile.am0000644000200100001440000000023110231504547016027 0ustar chasuserssbin_PROGRAMS = br2684ctl LDADD = $(top_builddir)/src/lib/libatm.la br2684ctl_SOURCES = br2684ctl.c man_MANS = br2684ctl.8 EXTRA_DIST = $(man_MANS) linux-atm-2.5.1/src/br2684/br2684ctl.80000644000200100001440000000475010735533177015542 0ustar chasusers.\" .TH br2684ctl 8 "7 Jul 2003" .SH NAME br2684ctl \- RFC1483/2684 Bridge Daemon .SH SYNOPSIS .B br2684ctl [ .BI \-b ] [[ .BI \-c\ n ] [ .BI \-e\ 0|1 ] [ .BI \-p\ 0|1 ] [ .BI \-s\ sndbuf ] [ .BI \-a\ [itf].vpi.vci ]] ... .SH PARAMETERS .TP 15 .BI \-a\ [itf].vpi.vci ATM PVC number, VPI and VCI. (Required) .TP 15 .BI \-b Puts the process in the background. .TP 15 .BI \-c\ n br2684 interface number such as 0, 1, ... (Required) .TP 15 .BI \-e\ 0|1 Encapsulation method: 0=LLC, 1=VC mux (the default is 0 or LLC) .TP 15 .BI \-p\ 0|1 Payload method: 0=Routed, 1=Bridged (the default is 1 or Bridged) .TP 15 .BI \-s\ sndbuf Send buffer size. Default is 8192. .SH DESCRIPTION br2684ctl handles RFC1483/2684 bridged PDUs. This is most often used in ADSL scenarios where .I usually the subscribers' ethernet traffic is encapsulated in ATM AAL5 (by bridging ADSL modems) according to RFC2684. The subscriber-side ADSL modem can be external with an ethernet connector or an internal ADSL card in a PC. RFC1483 has been obsoleted by RFC2684. For example it is possible to set up your Linux box to handle several ATM PVC's with bridged-1483 (sometimes referred as SNAP) encapsulation. The Linux network stack might provide DHCP, IP masquerading, IP firewall services or bridge the Ethernet frames just like it had several ethernet interfaces. In fact it can have several (logical) ethernet interfaces, where ATM is just used as a carrier. .SH USAGE br2684ctl creates a new network interface named nas[n] which is bound to an specific ATM PVC. It requires two mandatory arguments: -c, the interface number, and -a, the ATM PVC. It should be noted that the order of the command arguments matter; -c should be followed by -a. You can create as many interfaces as necessary in one go, just make a long command line ;) For example, following command will create a nas0 interface which uses the ATM PVC with VPI=0 and VCI=401. You need to configure the PVC connection 0.401 on the ATM switch manually. % br2684ctl -c 0 -a 0.401 The command will only create a new interface nas0. Next step is to assign an IP address and netmask to the interface nas0 using the ifconfig command. Using ifconfig, you can also assign a Ethernet MAC address to the interface nas0, if necessary. % ifconfig nas0 192.168.2.1 netmask 255.255.255.0 Messages are logged to the LOCAL2 syslog facility. .SH FILES /var/run/br2684ctl-.pid .SH NOTES This man page is based on a tutorial by by Joonbum Byun .SH SEE ALSO .BR qos (7) linux-atm-2.5.1/src/br2684/br2684ctl.c0000644000200100001440000001740510735532505015610 0ustar chasusers#include #include #include #include #include #include #include #include #include #include #include #include #ifndef BR2684_FLAG_ROUTED #warning "Kernel missing routed support for br2684" #define BR2684_FLAG_ROUTED (1<<16) /* payload is routed, not bridged */ #endif /* Written by Marcell GAL to make use of the */ /* ioctls defined in the br2684... kernel patch */ /* Compile with cc -o br2684ctl br2684ctl.c -latm */ /* Modified feb 2001 by Stephen Aaskov (saa@lasat.com) - Added daemonization code - Added syslog TODO: Delete interfaces after exit? */ #define LOG_NAME "br2684ctl" #define LOG_OPTION LOG_PERROR|LOG_PID #define LOG_FACILITY LOG_LOCAL2 struct br2684_params { int itfnum; int encap; int sndbuf; int payload; char *astr; /* temporary */ struct atm_qos reqqos; }; int lastsock, lastitf; void fatal(const char *str, int err) { syslog (LOG_ERR,"Fatal: %s; %s", str, strerror(err)); exit(-2); }; void exitFunc(void) { syslog (LOG_NOTICE,"Daemon terminated"); } void int_signal(int dummy) { syslog (LOG_INFO,"Killed by a signal"); exit(0); } int create_pidfile(int num) { FILE *pidfile = NULL; char name[32]; if (num < 0) return -1; snprintf(name, 32, "/var/run/br2684ctl-nas%d.pid", num); pidfile = fopen(name, "w"); if (pidfile == NULL) return -1; fprintf(pidfile, "%d", getpid()); fclose(pidfile); return 0; } int create_br(int itfnum, int payload) { int err; if(lastsock<0) { lastsock = socket(PF_ATMPVC, SOCK_DGRAM, ATM_AAL5); } if (lastsock<0) { syslog(LOG_ERR, "socket creation failed: %s",strerror(errno)); } else { /* create the device with ioctl: */ if( itfnum>=0 && itfnum<1234567890){ struct atm_newif_br2684 ni; ni.backend_num = ATM_BACKEND_BR2684; ni.media = BR2684_MEDIA_ETHERNET; #ifdef BR2684_FLAG_ROUTED if (payload == 0) ni.media |= BR2684_FLAG_ROUTED; #endif ni.mtu = 1500; sprintf(ni.ifname, "nas%d", itfnum); err=ioctl (lastsock, ATM_NEWBACKENDIF, &ni); if (err == 0) syslog(LOG_NOTICE, "Interface \"%s\" created sucessfully",ni.ifname); else syslog(LOG_INFO, "Interface \"%s\" could not be created, reason: %s", ni.ifname, strerror(errno)); lastitf=itfnum; /* even if we didn't create, because existed, assign_vcc wil want to know it! */ } else { syslog(LOG_ERR,"err: strange interface number %d", itfnum ); } } return 0; } int assign_vcc(char *astr, int encap, int payload, int bufsize, struct atm_qos qos) { int err; struct sockaddr_atmpvc addr; int fd; struct atm_backend_br2684 be; memset(&addr, 0, sizeof(addr)); err=text2atm(astr,(struct sockaddr *)(&addr), sizeof(addr), T2A_PVC); if (err!=0) syslog(LOG_ERR,"Could not parse ATM parameters (error=%d)",err); syslog(LOG_NOTICE,"Communicating over ATM %d.%d.%d, encapsulation: %s", addr.sap_addr.itf, addr.sap_addr.vpi, addr.sap_addr.vci, encap?"VC mux":"LLC"); if ((fd = socket(PF_ATMPVC, SOCK_DGRAM, ATM_AAL5)) < 0) syslog(LOG_ERR,"failed to create socket %d, reason: %s", errno,strerror(errno)); if (qos.aal == 0) { qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = 1524; qos.txtp.pcr = ATM_MAX_PCR; qos.rxtp = qos.txtp; } if ( (err=setsockopt(fd,SOL_SOCKET,SO_SNDBUF, &bufsize ,sizeof(bufsize))) ) syslog(LOG_ERR,"setsockopt SO_SNDBUF: (%d) %s",err, strerror(err)); if (setsockopt(fd, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) syslog(LOG_ERR,"setsockopt SO_ATMQOS %d", errno); err = connect(fd, (struct sockaddr*)&addr, sizeof(struct sockaddr_atmpvc)); if (err < 0) fatal("failed to connect on socket", errno); /* attach the vcc to device: */ be.backend_num = ATM_BACKEND_BR2684; be.ifspec.method = BR2684_FIND_BYIFNAME; sprintf(be.ifspec.spec.ifname, "nas%d", lastitf); be.fcs_in = BR2684_FCSIN_NO; be.fcs_out = BR2684_FCSOUT_NO; be.fcs_auto = 0; be.encaps = encap ? BR2684_ENCAPS_VC : BR2684_ENCAPS_LLC; be.has_vpiid = 0; be.send_padding = 0; be.min_size = 0; err=ioctl (fd, ATM_SETBACKEND, &be); if (err == 0) syslog (LOG_INFO,"Interface configured"); else { syslog (LOG_ERR,"Could not configure interface:%s",strerror(errno)); exit(2); } return fd ; } void start_interface(struct br2684_params* params) { if (params->astr==NULL) { syslog(LOG_ERR, "Required ATM parameters not specified."); exit(1); } create_br(params->itfnum, params->payload); assign_vcc(params->astr, params->encap, params->payload, params->sndbuf, params->reqqos); } void usage(char *s) { printf("usage: %s [-b] [[-c number] [-e 0|1] [-s sndbuf] [-q qos] [-p 0|1] " "[-a [itf.]vpi.vci]*]*\n", s); printf(" encapsulations: 0=llc, 1=vcmux\n payloads: 0=routed, 1=bridged\n"); exit(1); } int main (int argc, char **argv) { int c, background=0; struct br2684_params params; params.itfnum=-1; params.encap=0; params.sndbuf=8192; params.payload=1; params.astr=NULL; memset(¶ms.reqqos, 0, sizeof(params.reqqos)); lastsock=-1; lastitf=0; /* st qos to 0 */ openlog (LOG_NAME,LOG_OPTION,LOG_FACILITY); if (argc>1) while ((c = getopt(argc, argv,"q:a:bc:e:s:p:?h")) !=EOF) switch (c) { case 'q': printf ("optarg : %s",optarg); if (text2qos(optarg,¶ms.reqqos,0)) fprintf(stderr,"QOS parameter invalid\n"); break; case 'a': params.astr=optarg; break; case 'b': background=1; break; case 'c': /* temporary, to make it work with multiple interfaces: */ if (params.itfnum>=0) start_interface(¶ms); params.itfnum= atoi(optarg); break; case 'e': params.encap=(atoi(optarg)); if(params.encap<0){ syslog (LOG_ERR, "invalid encapsulation: %s:",optarg); params.encap=0; } break; case 's': params.sndbuf=(atoi(optarg)); if(params.sndbuf<0){ syslog(LOG_ERR, "Invalid sndbuf: %s, using size of 8192 instead", optarg); params.sndbuf=8192; } break; case 'p': /* payload type: routed (0) or bridged (1) */ #ifdef BR2684_FLAG_ROUTED params.payload = atoi(optarg); break; #else syslog(LOG_ERR, "payload option not supported."); #endif case '?': case 'h': default: usage(argv[0]); } else usage(argv[0]); if (argc != optind) usage(argv[0]); start_interface(¶ms); if(lastsock>=0) close(lastsock); if (background) { pid_t pid; pid=fork(); if (pid < 0) { fprintf(stderr,"Error detaching\n"); exit(2); } else if (pid) exit(0); // This is the parent // Become a process group and session group leader if (setsid()<0) { fprintf (stderr,"Could not set process group\n"); exit(2); } // Fork again to let process group leader exit pid = fork(); if (pid < 0) { fprintf(stderr,"Error detaching during second fork\n"); exit(2); } else if (pid) exit(0); // This is the parent // Now we're ready for buisness chdir("/"); // Don't keep directories in use close(0); close(1); close(2); // Close stdin, -out and -error /* Note that this implementation does not keep an open stdout/err. If we need them they can be opened now */ } create_pidfile(params.itfnum); signal(SIGINT, int_signal); signal(SIGTERM, int_signal); syslog (LOG_INFO, "RFC 1483/2684 bridge daemon started"); atexit (exitFunc); while (1) pause(); /* to keep the sockets... */ return 0; } linux-atm-2.5.1/src/br2684/Makefile.in0000644000200100001440000004635611304770375016070 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ sbin_PROGRAMS = br2684ctl$(EXEEXT) subdir = src/br2684 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" PROGRAMS = $(sbin_PROGRAMS) am_br2684ctl_OBJECTS = br2684ctl.$(OBJEXT) br2684ctl_OBJECTS = $(am_br2684ctl_OBJECTS) br2684ctl_LDADD = $(LDADD) br2684ctl_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(br2684ctl_SOURCES) DIST_SOURCES = $(br2684ctl_SOURCES) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ LDADD = $(top_builddir)/src/lib/libatm.la br2684ctl_SOURCES = br2684ctl.c man_MANS = br2684ctl.8 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/br2684/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/br2684/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list br2684ctl$(EXEEXT): $(br2684ctl_OBJECTS) $(br2684ctl_DEPENDENCIES) @rm -f br2684ctl$(EXEEXT) $(LINK) $(br2684ctl_OBJECTS) $(br2684ctl_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/br2684ctl.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man8: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" @list=''; test -n "$(man8dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) installdirs: for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-sbinPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-sbinPROGRAMS uninstall-man: uninstall-man8 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-sbinPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man8 install-pdf install-pdf-am install-ps \ install-ps-am install-sbinPROGRAMS install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-man uninstall-man8 \ uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/config/0000755000200100001440000000000011304770375014323 5ustar chasuserslinux-atm-2.5.1/src/config/CVS/0000755000200100001440000000000011304767140014752 5ustar chasuserslinux-atm-2.5.1/src/config/CVS/Root0000644000200100001440000000007411304767137015627 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/config/CVS/Repository0000644000200100001440000000002511304767137017057 0ustar chasuserslinux-atm/src/config linux-atm-2.5.1/src/config/CVS/Entries0000644000200100001440000000026411304767140016310 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /Makefile.am/1.2.2.1.2.2/Mon Aug 3 14:30:14 2009//TV2_5_1 /hosts.atm/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 D/init-redhat//// linux-atm-2.5.1/src/config/CVS/Tag0000644000200100001440000000001011304767137015405 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/config/.cvsignore0000644000200100001440000000002510666025263016317 0ustar chasusersMakefile Makefile.in linux-atm-2.5.1/src/config/Makefile.am0000644000200100001440000000040611235572166016360 0ustar chasusersEXTRA_DIST = hosts.atm init-redhat/README init-redhat/atm init-redhat/atm-sysconfig \ init-redhat/ifcfg-atm0 init-redhat/ifcfg-lec0 init-redhat/ifcfg-nas0 install-exec-local: -cp hosts.atm /etc uninstall-local: -rm /etc/hosts.atm sysconf_DATA = hosts.atm linux-atm-2.5.1/src/config/hosts.atm0000644000200100001440000000014607360675442016175 0ustar chasusers# # hosts.atm - Example # # ## 47.0005.80FFE1000000F21A26D8.0020ea001146.00 lrcpcs-a.epfl.ch lrcpcs-a linux-atm-2.5.1/src/config/init-redhat/0000755000200100001440000000000011304767137016535 5ustar chasuserslinux-atm-2.5.1/src/config/init-redhat/CVS/0000755000200100001440000000000011304767137017170 5ustar chasuserslinux-atm-2.5.1/src/config/init-redhat/CVS/Root0000644000200100001440000000007411304767137020037 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/config/init-redhat/CVS/Repository0000644000200100001440000000004111304767137021265 0ustar chasuserslinux-atm/src/config/init-redhat linux-atm-2.5.1/src/config/init-redhat/CVS/Entries0000644000200100001440000000056011304767137020525 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /README/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atm/1.2.2.4/Sat Dec 29 20:38:26 2007//TV2_5_1 /atm-sysconfig/1.2.2.2/Fri Dec 28 15:11:51 2007//TV2_5_1 /ifcfg-atm0/1.1.2.1/Sun Dec 23 22:33:19 2007//TV2_5_1 /ifcfg-lec0/1.2.2.1/Sun Dec 23 22:33:19 2007//TV2_5_1 /ifcfg-nas0/1.1.2.1/Sun Dec 23 22:33:19 2007//TV2_5_1 D linux-atm-2.5.1/src/config/init-redhat/CVS/Tag0000644000200100001440000000001011304767137017615 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/config/init-redhat/.cvsignore0000644000200100001440000000002510666025263020527 0ustar chasusersMakefile Makefile.in linux-atm-2.5.1/src/config/init-redhat/README0000644000200100001440000000125507360675442017424 0ustar chasusersThis is a quick readme on how to setup ATM on linux. This script will work in conjuction with the /etc/rc.d/init.d/network script to startup LANE services and interfaces. I have tested it with LANE but your mileage may vary with other configurations. - Copy atm-sysconfig to /etc/sysconfig/atm - Copy atm to /etc/rc.d/init.d/ - Link atm to your favorite runlevel to start on boot, but remember atmsigd and other services need to start before networking. - Copy ifcfg-lec0 to /etc/sysconfig/network-scripts (change it to suit your needs such as the correct ELAN and selector byte) That's about the basics, if you need help email me at john@strangeness.org and I'll be glad to help. linux-atm-2.5.1/src/config/init-redhat/atm0000755000200100001440000000723310735530102017234 0ustar chasusers#!/bin/sh # # /etc/rc.d/init.d/atm - Bring up/down ATM # # chkconfig: 2345 09 91 # description: Loads/Unloads ATM drivers and starts/stops basic services # ### BEGIN INIT INFO # Provides: atm # Required-Start: $local_fs dbus haldaemon # Should-Start: # Required-Stop: # Should-Stop: # Default-Start: 2 3 5 # Default-Stop: # Description: Loads/Unloads ATM drivers and starts/stops basic services ### END INIT INFO # Source function library. # source function library if [ -f /etc/init.d/functions ]; then . /etc/init.d/functions alias start_daemon=daemon elif [ -f /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions alias start_daemon=daemon elif [ -f /lib/lsb/init-functions ]; then . /lib/lsb/init-functions elif [ -f /sbin/startproc ]; then alias start_daemon=/sbin/startproc else exit 0 fi if [ -f /etc/rc.status ]; then . /etc/rc.status else rc_reset() { RETVAL=0; } rc_failed() { if [ -z "$1" ]; then RETVAL=1; elif [ "$1" -ne 0 ]; then RETVAL=$1; fi } rc_check() { rc_failed $?; } rc_exit() { exit $RETVAL; } rc_status() { if [ "$?" = "-v" ]; then [ $RETVAL -eq 0 ] && success || failure fi } fi rc_reset if [ ! -f /etc/sysconfig/atm ]; then rc_failed 6 rc_exit fi . /etc/sysconfig/atm [ "$ATM" != yes ] && exit 0 if [ -d /etc/sysconfig/network-scripts ]; then cd /etc/sysconfig/network-scripts elif [ -d /etc/sysconfig/network ]; then cd /etc/sysconfig/network else rc_failed rc_status -v rc_exit fi clipinterfaces=$(ls ifcfg-atm[0-9] 2> /dev/null | sed -e 's/^ifcfg-//g') laneinterfaces=$(ls ifcfg-lec[0-9] 2> /dev/null | sed -e 's/^ifcfg-//g') nasinterfaces=$(ls ifcfg-nas[0-9] 2> /dev/null | sed -e 's/^ifcfg-//g') case "$1" in start) echo -n "Starting ATM demons" [ -z "$ATMMODULES" ] || /sbin/modprobe "$ATMMODULES" start_daemon /usr/sbin/atmsigd -b -u uni31 -l syslog -D /var/tmp -t 20 -c /etc/atmsigd.conf rc_check start_daemon /usr/sbin/ilmid -b -u 3.1 -l syslog ${ILMIQOS:+ -q $ILMIQOS} rc_check if [ "$IPATM" = yes ]; then start_daemon /usr/sbin/atmarpd -b -l syslog -m rc_check for i in $clipinterfaces; do /usr/sbin/atmarp -c $i rc_check done fi if [ "$BR2684" = yes ]; then for i in $nasinterfaces; do (. ifcfg-$i ITF=`echo $i | sed -e 's/nas//'` start_daemon /usr/sbin/br2684ctl -b \ -c $ITF \ ${PAYLOAD:+ -p $PAYLOAD } \ ${ENCAPSULATION:+ -e $ENCAPSULATION} \ ${QOS:+ -q $QOS} \ ${VPIVCI:+ -a $VPIVCI} rc_check ) done fi if [ "$LANE" = yes ]; then for i in $laneinterfaces; do (. ifcfg-$i ITF=`echo $i | sed -e 's/lec//'` start_daemon /usr/sbin/zeppelin -b \ -i $ITF -l $ITF \ ${VLAN:+ -n $VLAN} \ ${LECS:+ -c $LECS} \ ${VERSION:+ -$VERSION} \ ${MTU:+ -t $MTU} \ ${ESI:+ -e $ESI} \ ${V2CAPABLE:+ -2} \ ${DEBUG:+ -m $DEBUG} \ -F /var/log/${DEVICE} rc_check ) done fi touch /var/lock/subsys/atm rc_status -v ;; stop) echo -n "Stopping ATM demons" if [ "$LANE" = yes ]; then for i in $laneinterfaces; do ./ifdown $i [ -f "/var/run/${i}.pid" ] && kill -TERM `cat /var/run/${i}.pid` done fi if [ "$BR2684" = yes ]; then for i in $nasinterfaces; do ./ifdown $i [ -f "/var/run/br2684ctl-${i}.pid" ] && kill -TERM `cat /var/run/br2684ctl-${i}.pid` done fi if [ "$IPATM" = yes ]; then for i in $clipinterfaces; do ./ifdown $i done killproc atmarpd fi killproc atmsigd # kill ILMID later, so we don't get complaints killproc ilmid [ -z "$ATMMODULES" ] || /sbin/modprobe -r "$ATMMODULES" rm -f /var/lock/subsys/atm rc_status -v ;; restart) $0 stop $0 start ;; *) echo "Usage: atm {start|stop|restart}" exit 1 esac rc_exit linux-atm-2.5.1/src/config/init-redhat/atm-sysconfig0000644000200100001440000000060010735211067021230 0ustar chasusers# # /etc/sysconfig/atm - general ATM setup # ATM=yes # enable ATM support at all IPATM=no # Classical IP over ATM (using ATMARP) BR2684=no # RFC1483/2684 LANE=no # LAN Emulation (client) # ILMIQOS="ubr:pcr=100kbps" # optional: QOS to use on the ILMI VC ATMMODULES= ATMSIGD_OPTIONS="-u uni31 -l syslog -D /var/tmp -t 20 -c /etc/atmsigd.conf" ILMID_OPTIONS="-u 3.1 -l syslog" linux-atm-2.5.1/src/config/init-redhat/ifcfg-atm00000644000200100001440000000020410733561057020367 0ustar chasusersDEVICE=atm0 BOOTPROTO=static BROADCAST=169.144.155.255 IPADDR=169.144.155.52 NETMASK=255.255.255.0 NETWORK=169.144.155.0 ONBOOT=yes linux-atm-2.5.1/src/config/init-redhat/ifcfg-lec00000644000200100001440000000022010733561057020347 0ustar chasusersDEVICE=lec0 BOOTPROTO=static BROADCAST=169.144.155.255 IPADDR=169.144.155.52 NETMASK=255.255.255.0 NETWORK=169.144.155.0 ELAN=canvas ONBOOT=yes linux-atm-2.5.1/src/config/init-redhat/ifcfg-nas00000644000200100001440000000025310733561057020373 0ustar chasusersDEVICE=nas0 BOOTPROTO=static BROADCAST=169.144.155.255 IPADDR=169.144.155.52 NETMASK=255.255.255.0 NETWORK=169.144.155.0 # PAYLOAD=0|1 ENCAPSULATION=0 VPIVCI=0.100 # QOS= linux-atm-2.5.1/src/config/Makefile.in0000644000200100001440000002742411304770375016401 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/config DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(sysconfdir)" DATA = $(sysconf_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = hosts.atm init-redhat/README init-redhat/atm init-redhat/atm-sysconfig \ init-redhat/ifcfg-atm0 init-redhat/ifcfg-lec0 init-redhat/ifcfg-nas0 sysconf_DATA = hosts.atm all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/config/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/config/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-sysconfDATA: $(sysconf_DATA) @$(NORMAL_INSTALL) test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)" @list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \ done uninstall-sysconfDATA: @$(NORMAL_UNINSTALL) @list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(sysconfdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sysconfdir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(sysconfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-exec-local install-sysconfDATA install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local uninstall-sysconfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip install-sysconfDATA installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-local \ uninstall-sysconfDATA install-exec-local: -cp hosts.atm /etc uninstall-local: -rm /etc/hosts.atm # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/debug/0000755000200100001440000000000011304770375014144 5ustar chasuserslinux-atm-2.5.1/src/debug/CVS/0000755000200100001440000000000011304767137014601 5ustar chasuserslinux-atm-2.5.1/src/debug/CVS/Root0000644000200100001440000000007411304767137015450 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/debug/CVS/Repository0000644000200100001440000000002411304767137016677 0ustar chasuserslinux-atm/src/debug linux-atm-2.5.1/src/debug/CVS/Entries0000644000200100001440000000070111304767137016133 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /delay.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /dnstest.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /ed.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /peek.pl/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /svctor.c/1.2.2.1.2.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /znth.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 D linux-atm-2.5.1/src/debug/CVS/Tag0000644000200100001440000000001011304767137015226 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/debug/.cvsignore0000644000200100001440000000005610666025263016144 0ustar chasusersMakefile Makefile.in .deps .libs delay svctor linux-atm-2.5.1/src/debug/Makefile-0.790000644000200100001440000000041107360675442016201 0ustar chasusersPGMS=delay svctor # ed encopy endump zndump znth # Remove the # for more hardware-specific debugging programs. # I'll need those only if you're fiddling with the guts of drivers. MAN8= include ../Rules.make zndump.o: zndump.c $(CC) -c $(CFLAGS) -w -O zndump.c linux-atm-2.5.1/src/debug/Makefile.am0000644000200100001440000000063307360675442016210 0ustar chasusers# Remove the # for more hardware-specific debugging programs. # I'll need those only if you're fiddling with the guts of drivers. noinst_PROGRAMS = delay svctor # ed dnstest znth LDADD = $(top_builddir)/src/lib/libatm.la delay_SOURCES = delay.c svctor_SOURCES = svctor.c #ed_SOURCES = ed.c #dnstest_SOURCES = dnstest.c #znth_SOURCES = znth.c #EXTRA_DIST = peek.pl EXTRA_DIST = peek.pl ed.c dnstest.c znth.c linux-atm-2.5.1/src/debug/delay.c0000644000200100001440000001265707360675442015427 0ustar chasusers/* delay.c - Simplistic AAL5-level software delay line */ /* Written 1996-2000 by Werner Almesberger, EPFL-LRC/ICA */ /* * BUGS: * - delay increases with load * - processing delay is far too big (always measure with ping first) * - horrifying command-line syntax */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include "atm.h" typedef struct _packet { struct timeval due; int size; struct _packet *next; char data[1]; } PACKET; typedef struct _link { int in,out; struct timeval delay; PACKET *queue,*last; struct _link *next; } LINK; static LINK *links = NULL; static fd_set in; static int fds = 0; #define LESS(a,b) ((a).tv_sec < (b).tv_sec || ((a).tv_sec == (b).tv_sec && \ (a).tv_usec < (b).tv_usec)) static void loop(void) { LINK *lnk; PACKET *p; struct timeval now,next,delta,*to; fd_set curr; char *buffer; int ready,size; if (!(buffer = malloc(sizeof(PACKET)-1+ATM_MAX_AAL5_PDU+4095))) { perror("buffer"); exit(1); } buffer = (char *) (((unsigned long) buffer+4095-(sizeof(PACKET)-1)) & ~4095); if (gettimeofday(&now,NULL) < 0) { perror("gettimeofday"); exit(1); } while (1) { curr = in; for (lnk = links; lnk; lnk = lnk->next) if (lnk->queue) break; if (!lnk) to = NULL; else { for (next = lnk->queue->due; lnk; lnk = lnk->next) if (lnk->queue && LESS(lnk->queue->due,next)) next = lnk->queue->due; delta.tv_sec = next.tv_sec-now.tv_sec; delta.tv_usec = next.tv_usec-now.tv_usec; if (delta.tv_usec < 0) { delta.tv_sec--; delta.tv_usec += 1000000; } if (delta.tv_usec > 0) { delta.tv_sec++; delta.tv_usec -= 1000000; } if (delta.tv_sec < 0) delta.tv_sec = delta.tv_usec = 0; to = δ } if ((ready = select(fds,&curr,NULL,NULL,to)) < 0) { perror("select"); exit(1); } if (gettimeofday(&now,NULL) < 0) { perror("gettimeofday"); exit(1); } if (ready) for (lnk = links; lnk; lnk = lnk->next) while (1) { size = read(lnk->in,buffer,ATM_MAX_AAL5_PDU); if (size < 0) { if (errno == EAGAIN) break; else { perror("read"); exit(1); } } if (size > 0) { if (!(p = malloc(sizeof(PACKET)-1+size))) { perror("malloc"); exit(1); } memcpy(p->data,buffer,size); p->size = size; p->due.tv_sec = now.tv_sec+lnk->delay.tv_sec; p->due.tv_usec = now.tv_usec+lnk->delay.tv_usec; if (p->due.tv_usec > 1000000) { p->due.tv_sec++; p->due.tv_usec -= 1000000; } p->next = NULL; if (lnk->queue) lnk->last->next = p; else lnk->queue = p; lnk->last = p; } } for (lnk = links; lnk; lnk = lnk->next) while (lnk->queue && LESS(lnk->queue->due,now)) { p = lnk->queue; lnk->queue = p->next; if ((size = write(lnk->out,p->data,p->size)) < 0) { perror("write"); exit(1); } if (p->size != size) fprintf(stderr,"short write: %d < %d\n",size,p->size); free(p); } } } static int setup(char *spec,int tx) { struct sockaddr_atmpvc addr; struct atm_qos qos; char *here; int fd; if (!(here = strchr(spec,','))) { memset(&qos,0,sizeof(qos)); if (tx) qos.txtp.traffic_class = ATM_UBR; else qos.rxtp.traffic_class = ATM_UBR; } else { *here = 0; if (text2qos(here+1,&qos,0) < 0) { fprintf(stderr,"invalid QOS: %s\n",here+1); exit(1); } } if (tx) qos.rxtp.traffic_class = ATM_NONE; else qos.txtp.traffic_class = ATM_NONE; qos.aal = ATM_AAL5; if (text2atm(spec,(struct sockaddr *) &addr,sizeof(addr), T2A_PVC | T2A_NAME) < 0) { fprintf(stderr,"invalid PVC: %s\n",spec); exit(1); } if ((fd = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); exit(1); } if (setsockopt(fd,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); exit(1); } if (bind(fd,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("bind"); exit(1); } return fd; } static void usage(const char *name) { fprintf(stderr,"usage: %s path ...\n",name); fprintf(stderr," path :== vc/vc/delay\n"); fprintf(stderr," vc :== [itf.]vpi.vci[,qos_spec]\n"); fprintf(stderr," delay :== timeunit\n"); fprintf(stderr," unit :== s | ms\n"); exit(1); } int main(int argc,char **argv) { LINK *dsc; const char *name; unsigned long delay; char *end,*here; name = argv[0]; FD_ZERO(&in); if (argc < 2) usage(name); while (argc > 1) { argc--; argv++; if (!(dsc = malloc(sizeof(LINK)))) { perror("malloc"); return 1; } if (!(here = strtok(*argv,"/"))) usage(name); dsc->in = setup(here,0); FD_SET(dsc->in,&in); if (dsc->in >= fds) fds = dsc->in+1; if (fcntl(dsc->in,F_SETFL,O_NONBLOCK) < 0) { perror("fcntl"); return 1; } if (!(here = strtok(NULL,"/"))) usage(name); dsc->out = setup(here,1); if (!(here = strtok(NULL,"/"))) usage(name); delay = strtoul(here,&end,10); switch (*end) { case 's': dsc->delay.tv_sec = delay; dsc->delay.tv_usec = 0; break; case 'm': dsc->delay.tv_sec = delay/1000; dsc->delay.tv_usec = (delay % 1000)*1000; if (*++end != 's') usage(name); break; default: usage(name); } if (end[1]) usage(name); dsc->queue = dsc->last = NULL; dsc->next = links; links = dsc; } loop(); return 0; } linux-atm-2.5.1/src/debug/dnstest.c0000644000200100001440000000170207360675442016002 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include int main(int argc, char **argv) { int i; unsigned char *pnsap; struct sockaddr_atmsvc addr; unsigned char buffer[1024]; if (argc != 2) { printf("Usage: %s \n", argv[0]); exit(0); } if (text2atm(argv[1], (struct sockaddr *) &addr, sizeof(addr), T2A_NAME) < 0) { perror("text2atm()"); exit(1); } if (atm2text(buffer, 1024, (struct sockaddr *) &addr, A2T_NAME) < 0) { perror("atm2text()"); exit(2); } printf("Looking up %s \n", argv[1]); printf("Direct: "); pnsap = (unsigned char *) &(addr.sas_addr.prv); for (i = 0; i < 20; i++) { printf("%02X", pnsap[i]); } printf("\n"); printf("Reverse: %s \n", buffer); exit(0); } linux-atm-2.5.1/src/debug/ed.c0000644000200100001440000000131707360675442014710 0ustar chasusers/* ed.c - eni memory dump */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include static void usage(const char *name) { fprintf(stderr,"usage: %s itf\n",name); exit(1); } int main(int argc,char **argv) { struct atmif_sioc req; int s; if (argc != 2) usage(argv[0]); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,ATM_AAL5)) < 0) { perror("socket"); return 1; } req.number = atoi(argv[1]); if (ioctl(s,ENI_MEMDUMP,&req) < 0) { perror("ioctl ENI_MEMDUMP"); return 1; } return 0; } linux-atm-2.5.1/src/debug/peek.pl0000755000200100001440000000035407360675442015440 0ustar chasusers#!/usr/bin/perl $base = 0x220000; $off = $ARGV[0]; $dsc = $base+hex($off)*4; $start = ($dsc & ~15)-64; $| = 1; printf("Descriptor is at 0x%06x\n",$dsc); system("hexdump -e'\"%06.6_ax \" 16/1 \"%02x \" \"\\n\"' -s $start /var/tmp/all"); linux-atm-2.5.1/src/debug/svctor.c0000644000200100001440000001012011235572166015623 0ustar chasusers/* svctor.c - SVC Torture */ /* Written 1998,1999 by Werner Almesberger, EPFL ICA */ /* * This program frantically tries to concurrently set up connections to * itself. Once it has obtained all the connections it was looking for, * it exits, leaving the system with a lot of things to clean up. */ #if HAVE_CONFIG_H #include #endif #define ITF 0 /* interface we use - should be command-line arg */ #define MAX_PAR 4 /* maximum number of concurrent connect()s */ #define EXIT_LIM 3 /* exit after establishing that many connections */ #define MAX_ADDR 10 /* maximum number of local addresses */ #define SAP "bhli:oui=0x0060D7,id=0x010000ff" #define QOS "ubr,aal5:tx:max_sdu=100,rx:max_sdu=100" #include #include #include #include #include #include #include #include #include #include #include #include #include int main(void) { static int fd[MAX_PAR]; /* to force initialization */ struct sockaddr_atmsvc local[MAX_ADDR]; struct atmif_sioc req; struct atm_sap sap; struct atm_qos qos; int listen_fd; fd_set rset,wset; int fds,completed = 0,connects = 0,accepts = 0; FD_ZERO(&rset); FD_ZERO(&wset); if (text2sap(SAP,&sap,0) < 0) { fprintf(stderr,"text2sap\n"); return 1; } if (text2qos(QOS,&qos,0) < 0) { fprintf(stderr,"text2qos\n"); return 1; } listen_fd = socket(PF_ATMSVC,SOCK_DGRAM,0); if (listen_fd < 0) { perror("socket"); return 1; } req.number = ITF; req.arg = local; req.length = sizeof(local); if (ioctl(listen_fd,ATM_GETADDR,&req) < 0) { perror("ioctl"); return 1; } if (!req.length) { fprintf(stderr,"No local address\n"); return 1; } if (setsockopt(listen_fd,SOL_ATM,SO_ATMSAP,&sap,sizeof(sap)) < 0) { perror("setsockopt SO_ATMSAP"); return 1; } if (setsockopt(listen_fd,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (bind(listen_fd,(struct sockaddr *) local,sizeof(*local)) < 0) { perror("bind"); return 1; } if (fcntl(listen_fd,F_SETFL,O_NONBLOCK) < 0) { perror("fnctl"); return 1; } if (listen(listen_fd,5) < 0) { perror("listen"); return 1; } FD_SET(listen_fd,&rset); fds = listen_fd+1; (void) signal(SIGCHLD,SIG_IGN); while (1) { static struct timeval no_delay; fd_set _rset = rset; fd_set _wset = wset; int ret,i,empty; no_delay.tv_sec = 0; no_delay.tv_usec = 100000; ret = select(fds,&_rset,&_wset,NULL,&no_delay); if (ret < 0) { perror("select"); return 1; } if (FD_ISSET(listen_fd,&_rset)) { pid_t pid; pid = fork(); if (pid < 0) { perror("fork"); return 1; } if (!pid) { if (accept(listen_fd,NULL,NULL) >= 0) exit(0); perror("accept"); return 1; } accepts++; } empty = -1; for (i = 0; i < MAX_PAR; i++) if (!fd[i]) empty = i; else if (FD_ISSET(fd[i],&_wset)) { struct sockaddr_atmsvc dummy; if (connect(fd[i],(struct sockaddr *) &dummy,sizeof(dummy)) < 0) { perror("connect"); return 1; } FD_CLR(fd[i],&wset); fd[i] = 0; empty = i; if (++completed == EXIT_LIM) { printf("%d attempted, %d completed, %d accepts\n", connects,completed,accepts); return 0; } } if (empty != -1) { fd[empty] = socket(PF_ATMSVC,SOCK_DGRAM,0); if (fd[empty] < 0) { perror("socket"); return 1; } if (fcntl(fd[empty],F_SETFL,O_NONBLOCK) < 0) { perror("fnctl"); return 1; } if (setsockopt(fd[empty],SOL_ATM,SO_ATMSAP,&sap,sizeof(sap)) < 0) { perror("setsockopt SO_ATMSAP"); return 1; } if (setsockopt(fd[empty],SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (connect(fd[empty],(struct sockaddr *) local,sizeof(*local)) < 0 && errno != EINPROGRESS) { perror("connect"); return 1; } FD_SET(fd[empty],&wset); if (fds <= fd[empty]) fds = fd[empty]+1; connects++; } } return 0; } linux-atm-2.5.1/src/debug/znth.c0000644000200100001440000000313607360675442015304 0ustar chasusers/* znth.c - ZN122x timestamp adjustments history */ /* Written 1996-1998 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include int main(int argc,char **argv) { struct atmif_sioc sioc; struct zatm_t_hist history[ZATM_TIMER_HISTORY_SIZE]; char *end; int s,i; if (argc != 2 || ((sioc.number = strtoul(argv[1],&end,0)), *end)) { fprintf(stderr,"usage: %s itf\n",*argv); return 1; } if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } sioc.arg = history; sioc.length = sizeof(history); if (ioctl(s,ZATM_GETTHIST,&sioc) < 0) { perror("ioctl ZATM_GETTHIST"); return 1; } for (i = 0; i < ZATM_TIMER_HISTORY_SIZE; i++) { struct timeval diff; if (!history[i].real.tv_sec) continue; printf("%2ld:%02ld:%02ld.%06ld: ", ((long) history[i].real.tv_sec/3600) % 24, ((long) history[i].real.tv_sec/60) % 60, (long) history[i].real.tv_sec % 60, (long) history[i].real.tv_usec); history[i].expected.tv_sec += history[i].expected.tv_usec/1000000; history[i].expected.tv_usec %= 1000000; diff.tv_sec = history[i].expected.tv_sec-history[i].real.tv_sec; diff.tv_usec = history[i].expected.tv_usec-history[i].real.tv_usec; if (diff.tv_sec < -2000 || diff.tv_sec > 2000) printf("%11ld SECONDS\n",(long) diff.tv_sec); else { diff.tv_usec += diff.tv_sec*1000000; printf("%11ld usec\n",(long) diff.tv_usec); } } return 0; } linux-atm-2.5.1/src/debug/Makefile.in0000644000200100001440000003504311304770375016216 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = delay$(EXEEXT) svctor$(EXEEXT) subdir = src/debug DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_delay_OBJECTS = delay.$(OBJEXT) delay_OBJECTS = $(am_delay_OBJECTS) delay_LDADD = $(LDADD) delay_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_svctor_OBJECTS = svctor.$(OBJEXT) svctor_OBJECTS = $(am_svctor_OBJECTS) svctor_LDADD = $(LDADD) svctor_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(delay_SOURCES) $(svctor_SOURCES) DIST_SOURCES = $(delay_SOURCES) $(svctor_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ LDADD = $(top_builddir)/src/lib/libatm.la delay_SOURCES = delay.c svctor_SOURCES = svctor.c #ed_SOURCES = ed.c #dnstest_SOURCES = dnstest.c #znth_SOURCES = znth.c #EXTRA_DIST = peek.pl EXTRA_DIST = peek.pl ed.c dnstest.c znth.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/debug/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/debug/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list delay$(EXEEXT): $(delay_OBJECTS) $(delay_DEPENDENCIES) @rm -f delay$(EXEEXT) $(LINK) $(delay_OBJECTS) $(delay_LDADD) $(LIBS) svctor$(EXEEXT): $(svctor_OBJECTS) $(svctor_DEPENDENCIES) @rm -f svctor$(EXEEXT) $(LINK) $(svctor_OBJECTS) $(svctor_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delay.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svctor.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/extra/0000755000200100001440000000000011304770375014201 5ustar chasuserslinux-atm-2.5.1/src/extra/CVS/0000755000200100001440000000000011304767140014630 5ustar chasuserslinux-atm-2.5.1/src/extra/CVS/Root0000644000200100001440000000007411304767137015505 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/extra/CVS/Repository0000644000200100001440000000002411304767137016734 0ustar chasuserslinux-atm/src/extra linux-atm-2.5.1/src/extra/CVS/Entries0000644000200100001440000000035111304767140016163 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /Makefile.am/1.2.2.3/Sat Dec 29 20:30:43 2007//TV2_5_1 /linux-atm.spec.in/1.2.2.4/Sat Dec 29 20:09:34 2007//TV2_5_1 /oam.patch/1.1.2.1/Sat Feb 21 15:31:40 2004//TV2_5_1 D/ANS//// linux-atm-2.5.1/src/extra/CVS/Tag0000644000200100001440000000001011304767137015263 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/extra/.cvsignore0000644000200100001440000000004410666025263016176 0ustar chasusersMakefile Makefile.in linux-atm.spec linux-atm-2.5.1/src/extra/Makefile.am0000644000200100001440000000033310735527163016236 0ustar chasusersEXTRA_DIST = linux-atm.spec.in \ ANS/127.0.0 ANS/atm-reverse ANS/e164_cc ANS/pdf2e164_cc.pl ANS/resolv.conf \ ANS/192.168.27 ANS/bind-498-REL.patch ANS/hosts2ans.pl ANS/README ANS/atm \ ANS/named.conf ANS/README.DNS linux-atm-2.5.1/src/extra/linux-atm.spec.in0000644000200100001440000000541310735524576017412 0ustar chasusersSummary: linux-atm - Tools to support ATM networking under Linux. Name: linux-atm %define linux_atm_version @VERSION@ %define lib_current @LIBVER_CURRENT@ %define lib_age @LIBVER_AGE@ %define lib_revision @LIBVER_REVISION@ Version: %{linux_atm_version} %define includedir /usr/include Release: 1%{?dist}%{!?dist:.%{_vendor}} License: BSD License, GNU General Public License (GPL), GNU Lesser General Public License (LGPL) Group: System Environment/Daemons ExclusiveOS: Linux BuildRoot: %{_tmppath}/%{name}-%{version}-build %define _sourcedir %(pwd) %define _specdir %(pwd)/src/extra %define _rpmdir %(pwd)/src/extra/RPMS %define _srcrpmdir %(pwd)/src/extra/SRPMS Source: linux-atm-%{linux_atm_version}.tar.gz %define multipoint 1 %description Tools to support ATM networking under Linux. Eventually this will also include support for some types of DSL modems. %prep %setup -q %build ./configure --prefix=/usr --sysconfdir=%{_sysconfdir} --libdir=%{_libdir} --mandir=%{_mandir} \ %{?multipoint:--enable-multipoint} make %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/etc install -c -m 644 src/config/hosts.atm $RPM_BUILD_ROOT/etc mkdir -p $RPM_BUILD_ROOT/etc/sysconfig install -c -m 644 src/config/init-redhat/atm-sysconfig $RPM_BUILD_ROOT/etc/sysconfig/atm mkdir -p $RPM_BUILD_ROOT/etc/init.d install -c -m 755 src/config/init-redhat/atm $RPM_BUILD_ROOT/etc/init.d/atm mkdir -p $RPM_BUILD_ROOT/etc/sysconfig/network-scripts %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-, root, root, -) %config(noreplace) /etc/hosts.atm %config(noreplace) /etc/sysconfig/atm %config(noreplace) /etc/atmsigd.conf %config /etc/init.d/atm %doc AUTHORS BUGS ChangeLog COPYING COPYING.GPL COPYING.LGPL %doc INSTALL NEWS README THANKS %doc doc/ src/extra/ANS src/config/init-redhat/ %{_mandir}/man[478]/* /usr/include/atm.h /usr/include/atmd.h /usr/include/atmsap.h /usr/include/atmarp.h /usr/include/atmarpd.h %{_libdir}/libatm.so.%{lib_current}.%{lib_age}.%{lib_revision} %{_libdir}/libatm.so.%{lib_current} %{_libdir}/libatm.so %{_libdir}/libatm.la %{_libdir}/libatm.a /usr/bin/aread /usr/bin/awrite /usr/bin/svc_send /usr/bin/svc_recv %if multipoint /usr/bin/pmp_send %endif /usr/bin/atmswitch /usr/bin/ttcp_atm /usr/sbin/atmsigd /usr/bin/atmdiag /usr/bin/atmdump /usr/bin/sonetdiag /usr/bin/saaldump /usr/sbin/atmaddr /usr/sbin/esi /usr/sbin/atmloop /usr/sbin/atmtcp /usr/sbin/enitune /usr/sbin/zntune /usr/sbin/hediag /usr/sbin/atmarp /usr/sbin/atmarpd /usr/sbin/br2684ctl /usr/sbin/ilmid /usr/sbin/ilmidiag /usr/sbin/zeppelin /usr/sbin/les /usr/sbin/bus /usr/sbin/lecs /usr/sbin/mpcd %post /sbin/ldconfig -n %{_libdir} /sbin/chkconfig --add atm %postun /sbin/ldconfig -n %{_libdir} %changelog * Fri Sep 14 2001 Paul Schroeder - First build of linux-atm RPM. linux-atm-2.5.1/src/extra/oam.patch0000644000200100001440000002663510015674734016012 0ustar chasusers# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.1345 -> 1.1346 # net/atm/Makefile 1.6 -> 1.7 # net/Config.in 1.14 -> 1.15 # net/atm/raw.c 1.3 -> 1.4 # net/atm/common.c 1.29 -> 1.30 # (new) -> 1.1 include/linux/atmoam.h # (new) -> 1.1 net/atm/oam.c # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 04/02/21 chas@relax.cmf.nrl.navy.mil 1.1346 # [ATM]: OAM support from Jorge Boncompte [DTI2] # -------------------------------------------- # diff -Nru a/include/linux/atmoam.h b/include/linux/atmoam.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/linux/atmoam.h Sat Feb 21 09:13:01 2004 @@ -0,0 +1,77 @@ +/* + * atmoam.h - ATM OAM protocol and kernel-daemon interface definitions + * + * Written 2003 by Jorge Boncompte, DTI2 +*/ + +#ifndef _LINUX_ATMOAM_H +#define _LINUX_ATMOAM_H + +#ifdef __KERNEL__ +#include +#endif +#include +#include + +#define ATMOAMD_CTRL _IO('a', ATMIOC_SPECIAL+4) /* become atmoamd ctrl sock */ + +#define POLYNOMIAL 0x633 + +/* OAM Cell Types */ +#define ATM_OAM_T_FAULT 1 +#define ATM_OAM_T_PERF 2 +#define ATM_OAM_T_ACTDEACT 8 + +/* OAM Cell Functions */ +#define ATM_OAM_F_AIS 0 +#define ATM_OAM_F_FERF 1 +#define ATM_OAM_F_CONT 4 +#define ATM_OAM_F_LOOP 8 + +#define OAM_TYPE_SHIFT 4 +#define OAM_FUNC_MASK 0x0000000f + +#define OAM_TYPE(X) (X[0] >> OAM_TYPE_SHIFT) +#define OAM_FUNC(X) (X[0] & OAM_FUNC_MASK) +#define ATM_CELL_PTI(X) ((X & ATM_HDR_PTI_MASK) >> ATM_HDR_PTI_SHIFT) + +struct oamcell { + unsigned char hdr[ATM_AAL0_SDU - ATM_CELL_PAYLOAD]; /* AAL0 Cell Header */ + unsigned char payload[ATM_CELL_PAYLOAD]; +}; + +struct atmoam_ctrl { + atm_kptr_t vcc; /* Vcc Kernel Pointer */ + int number; /* Device index */ + short pti; /* Payload Type Identifier */ + short vpi; /* VPI number */ + int vci; /* VCI number */ + struct oamcell cell; +}; + +#ifdef __KERNEL__ +struct atm_oam_ops { + int (*toatmoamd)(struct atm_vcc *vcc, void *oamcell); + int (*init)(struct atm_vcc *vcc); + struct module *owner; +}; + +void atm_oam_ops_set(struct atm_oam_ops *); +int try_atm_oam_ops(void); + +extern struct atm_oam_ops *atm_oam_ops; +#endif + +struct oampayload { + u_int8_t FunctNType; + + u_int8_t LoopBackInd:8; + u_int8_t CorrelationTag[4]; + u_int8_t LocationID[16]; + u_int8_t SourceID[16]; + u_int8_t Unused[8]; + + u_int8_t OAMCRC10[2]; +}; + +#endif diff -Nru a/net/Config.in b/net/Config.in --- a/net/Config.in Sat Feb 21 09:13:01 2004 +++ b/net/Config.in Sat Feb 21 09:13:01 2004 @@ -50,6 +50,7 @@ if [ "$CONFIG_ATM_BR2684" != "n" ]; then bool ' Per-VC IP filter kludge' CONFIG_ATM_BR2684_IPFILTER fi + dep_tristate ' OAM protocol support' CONFIG_ATM_OAM $CONFIG_ATM fi fi tristate '802.1Q VLAN Support' CONFIG_VLAN_8021Q diff -Nru a/net/atm/Makefile b/net/atm/Makefile --- a/net/atm/Makefile Sat Feb 21 09:13:01 2004 +++ b/net/atm/Makefile Sat Feb 21 09:13:01 2004 @@ -46,6 +46,7 @@ obj-$(CONFIG_ATM_LANE) += lec.o obj-$(CONFIG_ATM_MPOA) += mpoa.o obj-$(CONFIG_PPPOATM) += pppoatm.o +obj-$(CONFIG_ATM_OAM) += oam.o include $(TOPDIR)/Rules.make diff -Nru a/net/atm/common.c b/net/atm/common.c --- a/net/atm/common.c Sat Feb 21 09:13:01 2004 +++ b/net/atm/common.c Sat Feb 21 09:13:01 2004 @@ -129,6 +129,36 @@ #endif #endif +#if defined(CONFIG_ATM_OAM) || defined(CONFIG_ATM_OAM_MODULE) +#include +struct atm_oam_ops *atm_oam_ops; +static DECLARE_MUTEX(atm_oam_ops_mutex); + +void atm_oam_ops_set(struct atm_oam_ops *hook) +{ + down(&atm_oam_ops_mutex); + atm_oam_ops = hook; + up(&atm_oam_ops_mutex); +} + +int try_atm_oam_ops(void) +{ + down(&atm_oam_ops_mutex); + if (atm_oam_ops && try_inc_mod_count(atm_oam_ops->owner)) { + up(&atm_oam_ops_mutex); + return 1; + } + up(&atm_oam_ops_mutex); + return 0; +} + +#ifdef CONFIG_ATM_OAM_MODULE +EXPORT_SYMBOL(atm_oam_ops); +EXPORT_SYMBOL(try_atm_oam_ops); +EXPORT_SYMBOL(atm_oam_ops_set); +#endif +#endif + #if defined(CONFIG_PPPOATM) || defined(CONFIG_PPPOATM_MODULE) static DECLARE_MUTEX(pppoatm_ioctl_mutex); @@ -782,6 +812,26 @@ error = atm_clip_ops->clip_encap(vcc, arg); if (atm_clip_ops->owner) __MOD_DEC_USE_COUNT(atm_clip_ops->owner); + } else + error = -ENOSYS; + goto done; +#endif +#if defined(CONFIG_ATM_OAM) || defined(CONFIG_ATM_OAM_MODULE) + case ATMOAMD_CTRL: + if (!capable(CAP_NET_ADMIN)) { + error = -EPERM; + goto done; + } +#if defined(CONFIG_ATM_OAM_MODULE) + if (!atm_oam_ops) + request_module("oam"); +#endif + if (try_atm_oam_ops()) { + error = atm_oam_ops->init(vcc); + if (atm_oam_ops->owner) + __MOD_DEC_USE_COUNT(atm_oam_ops->owner); + if (!error) + sock->state = SS_CONNECTED; } else error = -ENOSYS; goto done; diff -Nru a/net/atm/oam.c b/net/atm/oam.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/net/atm/oam.c Sat Feb 21 09:13:01 2004 @@ -0,0 +1,223 @@ +/* + * net/atm/oam.c - Kernel support for an userspace OAM daemon. + * + * Author: Jorge Boncompte, DTI-2 + * + * Based on the code of the linux ATM stack. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common.h" +#include "protocols.h" + +struct atm_vcc *atmoamd = NULL; + +#if 0 +#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args) +#else +#define DPRINTK(format,args...) +#endif + +static struct atm_vcc *vcc_find_byvpivci(struct atm_dev *dev, short vpi, int vci) +{ + struct sock *s; + struct atm_vcc *walk; + + read_lock(&vcc_sklist_lock); + for (s = vcc_sklist; s; s = s->next) { + walk = s->protinfo.af_atm; + if (test_bit(ATM_VF_ADDR, &walk->flags) && + walk->vpi == vpi && + walk->vci == vci) { + sock_hold(s); + read_unlock(&vcc_sklist_lock); + return walk; + } + } + + read_unlock(&vcc_sklist_lock); + return NULL; +} + +static int oam_to_atmoamd(struct atm_vcc *vcc, void *oamcell) +{ + struct atmoam_ctrl *oamctrl; + struct sk_buff *skb; + unsigned char *cell; + + DPRINTK("to_atmoamd\n"); + + cell = (unsigned char *) oamcell; + + if (!atmoamd) + return -EUNATCH; + + skb = alloc_skb(sizeof(struct atmoam_ctrl), GFP_ATOMIC); + + if (!skb) + return -ENOMEM; + + oamctrl = (struct atmoam_ctrl *) skb_put(skb, sizeof(struct atmoam_ctrl)); + + *(struct atm_vcc **) &oamctrl->vcc = vcc; + oamctrl->number = vcc->dev->number; + oamctrl->pti = ATM_CELL_PTI(cell[3]); + oamctrl->vpi = vcc->vpi; + oamctrl->vci = vcc->vci; + memcpy(&oamctrl->cell, cell, ATM_AAL0_SDU); + + DPRINTK("to_atmoamd: Intf %d PTI %d vc %d/%d Vcc 0x%p\n", + oamctrl->number, oamctrl->pti, oamctrl->vpi, oamctrl->vci, + *(struct atm_vcc **)&oamctrl->vcc); + +/* skb->stamp = xtime; + + if (!atm_charge(atmoamd, skb->truesize)) { + dev_kfree_skb_any(skb); + return -1; + } + ATM_SKB(skb)->vcc = atmoamd; +*/ + atm_force_charge(atmoamd, skb->truesize); + skb_queue_tail(&atmoamd->sk->receive_queue, skb); + wake_up(&atmoamd->sleep); + + return 0; +} + +static int oam_from_atmoamd(struct atm_vcc *oamvcc, struct sk_buff *skb) +{ + struct atm_vcc *vcc; + struct atm_dev *dev; + struct atmoam_ctrl *oamctrl = (struct atmoam_ctrl *) skb->data; + int result = 0; + + DPRINTK("from_atmoamd\n"); + + /* FIXME: Check message length? Is the below line correct? */ + atomic_sub(skb->truesize, &oamvcc->sk->wmem_alloc); + + DPRINTK("from_atmoamd: Intf %d PTI %d vc %d/%d Vcc 0x%p\n", + oamctrl->number, oamctrl->pti, oamctrl->vpi, oamctrl->vci, + *(struct atm_vcc **)&oamctrl->vcc); + + dev = atm_dev_lookup(oamctrl->number); + if (!dev) { + result = -ENODEV; + goto err; + } + + vcc = *(struct atm_vcc **) &oamctrl->vcc; + + /* This is a new outgoing cell, not a reply */ + if (vcc == 0) { + if ((vcc = vcc_find_byvpivci(dev, oamctrl->vpi, oamctrl->vci)) == NULL) { + DPRINTK("Vcc %d/%d not in device %d list\n", + oamctrl->vpi, oamctrl->vci, oamctrl->number); + result = -EUNATCH; + goto err_put; + } + } + + if (vcc->dev->ops->send_oam) + result = vcc->dev->ops->send_oam(vcc, &oamctrl->cell, 0); + else { + if (net_ratelimit()) + printk(KERN_INFO "%s%d: Driver does not support sending OAM cells\n", + dev->type, dev->number); + result = -ENOSYS; + } + sock_put(vcc->sk); + +err_put: + atm_dev_put(dev); +err: + if (result) /* Should we release the skb if there is no error? */ + kfree_skb(skb); + return result; +} + + +static void oam_close_atmoamd(struct atm_vcc *vcc) +{ + DPRINTK("atmoamd_close\n"); + atmoamd = NULL; /* assumed to be atomic */ + barrier(); + if (skb_peek(&vcc->sk->receive_queue)) + printk(KERN_ERR "atmoamd_close: closing with requests pending\n"); + skb_queue_purge(&vcc->sk->receive_queue); + DPRINTK("(done)\n"); + MOD_DEC_USE_COUNT; +} + + +static struct atmdev_ops atmoamd_dev_ops = { + .close = oam_close_atmoamd, + .send = oam_from_atmoamd, +}; + + +static struct atm_dev atmoamd_dev = { + .ops = &atmoamd_dev_ops, /* device operations */ + .type = "oamd", /* device type */ + .number = 989, /* dummy device number */ +}; + + +int atm_init_atmoam(struct atm_vcc *vcc) +{ + DPRINTK("atm_init_atmoam\n"); + + if (atmoamd) + return -EADDRINUSE; + + atmoamd = vcc; + set_bit(ATM_VF_META, &vcc->flags); + set_bit(ATM_VF_READY, &vcc->flags); + + /* allow replies and avoid getting closed if signaling dies */ + vcc->dev = &atmoamd_dev; + vcc_insert_socket(vcc->sk); + vcc->push = NULL; + vcc->pop = NULL; /* crash */ + vcc->push_oam = NULL; /* crash */ + + MOD_INC_USE_COUNT; + return 0; +} + +static struct atm_oam_ops __atm_oam_ops = { + .toatmoamd = oam_to_atmoamd, + .init = atm_init_atmoam, + .owner = THIS_MODULE +}; + +static int __init atm_oam_init(void) +{ + atm_oam_ops_set(&__atm_oam_ops); + printk(KERN_INFO "ATM: OAM kernel module support loaded.\n"); + return 0; +} + +static void __exit atm_oam_exit(void) +{ + atm_oam_ops_set(NULL); + printk(KERN_INFO "ATM: OAM kernel module support removed.\n"); +} + +module_init(atm_oam_init); +module_exit(atm_oam_exit); + +MODULE_AUTHOR("Jorge Boncompte - DTI2"); +MODULE_DESCRIPTION("OAM support for ATM"); +MODULE_LICENSE("GPL"); diff -Nru a/net/atm/raw.c b/net/atm/raw.c --- a/net/atm/raw.c Sat Feb 21 09:13:01 2004 +++ b/net/atm/raw.c Sat Feb 21 09:13:01 2004 @@ -10,6 +10,9 @@ #include #include +#if defined(CONFIG_ATM_OAM) || defined(CONFIG_ATM_OAM_MODULE) +#include +#endif #include "common.h" #include "protocols.h" @@ -21,6 +24,24 @@ #endif +int atm_push_oam(struct atm_vcc *vcc, void *oamcell) +{ + int result = 0; + + DPRINTK("atm_push_oam\n"); + +#if defined(CONFIG_ATM_OAM) || defined(CONFIG_ATM_OAM_MODULE) + if (try_atm_oam_ops()) { + result = atm_oam_ops->toatmoamd(vcc, (unsigned char *) oamcell); + if (atm_oam_ops->owner) + __MOD_DEC_USE_COUNT(atm_oam_ops->owner); + } else + result = -ENOSYS; +#endif + return result; +} + + /* * SKB == NULL indicates that the link is being closed */ @@ -84,7 +105,7 @@ { vcc->push = atm_push_raw; vcc->pop = atm_pop_raw; - vcc->push_oam = NULL; + vcc->push_oam = atm_push_oam; vcc->send = vcc->dev->ops->send; return 0; } linux-atm-2.5.1/src/extra/ANS/0000755000200100001440000000000011304767137014624 5ustar chasuserslinux-atm-2.5.1/src/extra/ANS/CVS/0000755000200100001440000000000011304767137015257 5ustar chasuserslinux-atm-2.5.1/src/extra/ANS/CVS/Root0000644000200100001440000000007411304767137016126 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/extra/ANS/CVS/Repository0000644000200100001440000000003011304767137017352 0ustar chasuserslinux-atm/src/extra/ANS linux-atm-2.5.1/src/extra/ANS/CVS/Entries0000644000200100001440000000121711304767137016614 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /127.0.0/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /192.168.27/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /README/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /README.DNS/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atm/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atm-reverse/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /bind-498-REL.patch/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /e164_cc/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /hosts2ans.pl/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /named.conf/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /pdf2e164_cc.pl/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /resolv.conf/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 D linux-atm-2.5.1/src/extra/ANS/CVS/Tag0000644000200100001440000000001011304767137015704 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/extra/ANS/.cvsignore0000644000200100001440000000002510666025263016616 0ustar chasusersMakefile Makefile.in linux-atm-2.5.1/src/extra/ANS/127.0.00000644000200100001440000000025007360675442015355 0ustar chasusers@ IN SOA ns.atm. hostmaster.atm. ( 1999102501 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ) ; Minimum TTL NS ns.atm. 1 PTR localhost. linux-atm-2.5.1/src/extra/ANS/192.168.270000644000200100001440000000045407360675442015635 0ustar chasusers@ IN SOA obelix-atm.atm. hostmaster.obelix-atm.atm. ( 1999102201 ; serial, YYYYMMDDnn 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds NS obelix-atm.atm. ; ; Hosts ; 72 PTR obelix-atm.atm. 96 PTR pong-atm.atm. 81 PTR osteolito-atm.atm. linux-atm-2.5.1/src/extra/ANS/README0000644000200100001440000000266207360675442015516 0ustar chasusersE.164 Country Codes ------------------- The file e164_cc is provided for those performing reverse lookups with the ATM Name Service (ANS). It can be installed via: cp e164_cc /etc The latest "List of ITU-T Recommendation E.164 Assigned Country Codes" can be obtained from the International Telecommunications Union (ITU) (http://www.itu.org/) in PDF or Word format (http://www.itu.int/itudoc/itu-t/ob-lists/icc/e164_717.html). The pdf2e164_cc.pl script, which is included in this directory, can be used to convert this file into the proper text format: perl pdf2e164_cc.pl >/etc/e164_cc Installing BIND --------------- BIND 4.9.8 can be gotten from the Internet Software Consortium (ISC) (http://www.isc.org/products/BIND/). The patch included in this directory (bind-498-REL.patch) is based upon version 4 (http://www.isc.org/products/BIND/bind4.html). After downloading BIND, unbundle it like so: mkdir /usr/src/bind-498-REL tar xzvf bind-498-REL.tar.gz -C /usr/src/bind-498-REL Apply the patch with: cp bind-498-REL.patch /usr/src cd /usr/src patch -p0 ", where is one of the hosts in your bind configuration files. IMPORTANT NOTICE: ----------------- I strongly advise you to keep the arpserver on "/etc/hosts.atm". linux-atm-2.5.1/src/extra/ANS/atm0000644000200100001440000000121407360675442015332 0ustar chasusers@ IN SOA obelix-atm.atm. hostmaster.obelix-atm.atm. ( 1999102201 ; serial, YYYYMMDDnn 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds NS obelix-atm MX 10 mail.my.domain. TXT "My organisation's ATM network" localhost A 127.0.0.1 atm. A 192.168.27.72 ; ; Hosts on 192.168.27.0 CLIP network ; obelix-atm A 192.168.27.72 pong-atm A 192.168.27.96 osteolito-atm A 192.168.27.81 ; ; NSAPs - ATM addresses ; obelix-atm IN NSAP 47000580FFE1000000F20F400F0020480E306E00 pong-atm IN NSAP 47000580FFE1000000F21A2F5C0020480E042f00 osteolito-atm IN NSAP 47000580FFE1000000F21A2F5C002048089A9200 linux-atm-2.5.1/src/extra/ANS/atm-reverse0000644000200100001440000000065107360675442017007 0ustar chasusers@ IN SOA obelix-atm.atm. rprior.obelix-atm.atm. ( 1999102201 ; serial, YYYYMMDDnn 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds NS obelix-atm.atm. ; ; Hosts ; 0.0.E.6.0.3.E.0.8.4.0.2.0.0.F.0.0.4.F.0.2.F IN PTR obelix-atm.atm. 0.0.F.2.4.0.E.0.8.4.0.2.0.0.C.5.F.2.A.1.2.F IN PTR pong-atm.atm. 0.0.2.9.A.9.8.0.8.4.0.2.0.0.C.5.F.2.A.1.2.F IN PTR osteolito-atm.atm. linux-atm-2.5.1/src/extra/ANS/bind-498-REL.patch0000644000200100001440000017603107360675442017537 0ustar chasusersdiff -urN bind-498-REL.orig/Makefile bind-498-REL/Makefile --- bind-498-REL.orig/Makefile Sat Jan 27 17:29:22 2001 +++ bind-498-REL/Makefile Tue Oct 2 17:21:47 2001 @@ -107,20 +107,20 @@ #(Linux - on modern systems, all you need to do is rename or remove # compat/include/sys/cdefs.h. See doc/info/Linux for more information.) -#CC = gcc $(CPPFLAGS) -#CDEBUG = -g -#CPPFLAGS = -DSYSV -#LEX=flex -8 -I -#INSTALL_COMPAT = install-compat -#LIBS = -lfl -#DESTEXEC = /usr/sbin -#DESTMAN = /usr/man -#MANDIR = man -#MANROFF = cat -#DESTHELP = /usr/lib -#CATEXT = $$$$N -#PS = ps -p -#IOT = IOT +CC = gcc $(CPPFLAGS) +CDEBUG = -g +CPPFLAGS = -DSYSV -DATM +LEX=flex -8 -I +INSTALL_COMPAT = install-compat +LIBS = -lfl -latm +DESTEXEC = /usr/sbin +DESTMAN = /usr/man +MANDIR = man +MANROFF = cat +DESTHELP = /usr/lib +CATEXT = $$$$N +PS = ps -p +IOT = IOT #uncomment next line to build a shared library version of libresolv #SHRES = shres/linux #uncomment next line to build tools and named with shared libresolv diff -urN bind-498-REL.orig/compat/include/sys/cdefs.h bind-498-REL/compat/include/sys/cdefs.h --- bind-498-REL.orig/compat/include/sys/cdefs.h Sat Dec 16 16:29:21 2000 +++ bind-498-REL/compat/include/sys/cdefs.h Wed Dec 31 18:00:00 1969 @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Berkeley Software Design, Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)cdefs.h 8.7 (Berkeley) 1/21/94 - */ - -#ifndef _CDEFS_H_ -#define _CDEFS_H_ - -/* POSIX.2 feature test macro: enable POSIX.1 and/or more */ -#if _POSIX_C_SOURCE == 1 || _POSIX_C_SOURCE == 2 -#define _POSIX_SOURCE -#endif - -#if defined(_POSIX_SOURCE) || defined(__STRICT_ANSI__) -#define _ANSI_SOURCE -#endif - -#if defined(__cplusplus) -#define __BEGIN_DECLS extern "C" { -#define __END_DECLS }; -#else -#define __BEGIN_DECLS -#define __END_DECLS -#endif - -/* - * The __CONCAT macro is used to concatenate parts of symbol names, e.g. - * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo. - * The __CONCAT macro is a bit tricky -- make sure you don't put spaces - * in between its arguments. __CONCAT can also concatenate double-quoted - * strings produced by the __STRING macro, but this only works with ANSI C. - */ -#if defined(__STDC__) || defined(__cplusplus) -#define __P(protos) protos /* full-blown ANSI C */ -#define __CONCAT(x,y) x ## y -#define __STRING(x) #x - -#define __const const /* define reserved names to standard */ -#define __signed signed -#define __volatile volatile -#if defined(__cplusplus) -#define __inline inline /* convert to C++ keyword */ -#else -#ifndef __GNUC__ -#define __inline /* delete GCC keyword */ -#endif /* !__GNUC__ */ -#endif /* !__cplusplus */ - -#else /* !(__STDC__ || __cplusplus) */ -#define __P(protos) () /* traditional C preprocessor */ -#define __CONCAT(x,y) x/**/y -#define __STRING(x) "x" - -#ifndef __GNUC__ -#define __const /* delete pseudo-ANSI C keywords */ -#define __inline -#define __signed -#define __volatile -/* - * In non-ANSI C environments, new programs will want ANSI-only C keywords - * deleted from the program and old programs will want them left alone. - * When using a compiler other than gcc, programs using the ANSI C keywords - * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS. - * When using "gcc -traditional", we assume that this is the intent; if - * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone. - */ -#ifndef NO_ANSI_KEYWORDS -#define const /* delete ANSI C keywords */ -#define inline -#define signed -#define volatile -#endif -#endif /* !__GNUC__ */ -#endif /* !(__STDC__ || __cplusplus) */ - -/* - * GCC1 and some versions of GCC2 declare dead (non-returning) and - * pure (no side effects) functions using "volatile" and "const"; - * unfortunately, these then cause warnings under "-ansi -pedantic". - * GCC2 uses a new, peculiar __attribute__((attrs)) style. All of - * these work for GNU C++ (modulo a slight glitch in the C++ grammar - * in the distribution version of 2.5.5). - */ -#if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 5 -#define __attribute__(x) /* delete __attribute__ if non-gcc or gcc1 */ -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define __dead __volatile -#define __pure __const -#endif -#endif -/* The following lines were added for newer versions of GNU C - * Ed Lewis - Sept 1996 lewis@tis.com - */ -#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 || __GNUC__ >= 3 -#define __dead -#define __dead2 __attribute__((noreturn)) -#define __pure -#define __pure2 __attribute__((const)) -#define __printflike(x, y) -#define __scanflike(x, y) -#endif - - -/* Delete pseudo-keywords wherever they are not available or needed. */ -#ifndef __dead -#define __dead -#define __pure -#endif - -#endif /* !_CDEFS_H_ */ diff -urN bind-498-REL.orig/compat/include/sys/cdefs.h.moved bind-498-REL/compat/include/sys/cdefs.h.moved --- bind-498-REL.orig/compat/include/sys/cdefs.h.moved Wed Dec 31 18:00:00 1969 +++ bind-498-REL/compat/include/sys/cdefs.h.moved Tue Oct 2 17:21:56 2001 @@ -0,0 +1,141 @@ +/* + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Berkeley Software Design, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)cdefs.h 8.7 (Berkeley) 1/21/94 + */ + +#ifndef _CDEFS_H_ +#define _CDEFS_H_ + +/* POSIX.2 feature test macro: enable POSIX.1 and/or more */ +#if _POSIX_C_SOURCE == 1 || _POSIX_C_SOURCE == 2 +#define _POSIX_SOURCE +#endif + +#if defined(_POSIX_SOURCE) || defined(__STRICT_ANSI__) +#define _ANSI_SOURCE +#endif + +#if defined(__cplusplus) +#define __BEGIN_DECLS extern "C" { +#define __END_DECLS }; +#else +#define __BEGIN_DECLS +#define __END_DECLS +#endif + +/* + * The __CONCAT macro is used to concatenate parts of symbol names, e.g. + * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo. + * The __CONCAT macro is a bit tricky -- make sure you don't put spaces + * in between its arguments. __CONCAT can also concatenate double-quoted + * strings produced by the __STRING macro, but this only works with ANSI C. + */ +#if defined(__STDC__) || defined(__cplusplus) +#define __P(protos) protos /* full-blown ANSI C */ +#define __CONCAT(x,y) x ## y +#define __STRING(x) #x + +#define __const const /* define reserved names to standard */ +#define __signed signed +#define __volatile volatile +#if defined(__cplusplus) +#define __inline inline /* convert to C++ keyword */ +#else +#ifndef __GNUC__ +#define __inline /* delete GCC keyword */ +#endif /* !__GNUC__ */ +#endif /* !__cplusplus */ + +#else /* !(__STDC__ || __cplusplus) */ +#define __P(protos) () /* traditional C preprocessor */ +#define __CONCAT(x,y) x/**/y +#define __STRING(x) "x" + +#ifndef __GNUC__ +#define __const /* delete pseudo-ANSI C keywords */ +#define __inline +#define __signed +#define __volatile +/* + * In non-ANSI C environments, new programs will want ANSI-only C keywords + * deleted from the program and old programs will want them left alone. + * When using a compiler other than gcc, programs using the ANSI C keywords + * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS. + * When using "gcc -traditional", we assume that this is the intent; if + * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone. + */ +#ifndef NO_ANSI_KEYWORDS +#define const /* delete ANSI C keywords */ +#define inline +#define signed +#define volatile +#endif +#endif /* !__GNUC__ */ +#endif /* !(__STDC__ || __cplusplus) */ + +/* + * GCC1 and some versions of GCC2 declare dead (non-returning) and + * pure (no side effects) functions using "volatile" and "const"; + * unfortunately, these then cause warnings under "-ansi -pedantic". + * GCC2 uses a new, peculiar __attribute__((attrs)) style. All of + * these work for GNU C++ (modulo a slight glitch in the C++ grammar + * in the distribution version of 2.5.5). + */ +#if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 5 +#define __attribute__(x) /* delete __attribute__ if non-gcc or gcc1 */ +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +#define __dead __volatile +#define __pure __const +#endif +#endif +/* The following lines were added for newer versions of GNU C + * Ed Lewis - Sept 1996 lewis@tis.com + */ +#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 || __GNUC__ >= 3 +#define __dead +#define __dead2 __attribute__((noreturn)) +#define __pure +#define __pure2 __attribute__((const)) +#endif + + +/* Delete pseudo-keywords wherever they are not available or needed. */ +#ifndef __dead +#define __dead +#define __pure +#endif + +#endif /* !_CDEFS_H_ */ diff -urN bind-498-REL.orig/include/arpa/nameser.h bind-498-REL/include/arpa/nameser.h --- bind-498-REL.orig/include/arpa/nameser.h Mon Oct 7 23:51:02 1996 +++ bind-498-REL/include/arpa/nameser.h Tue Oct 2 17:21:56 2001 @@ -204,6 +204,12 @@ #define C_ANY 255 /* wildcard match */ /* + * Values for ATM format + */ +#define ATMA_AESA 0 +#define ATMA_E164 1 + +/* * Flags field of the KEY RR rdata */ #define KEYFLAG_TYPEMASK 0xC000 /* Mask for "type" bits */ diff -urN bind-498-REL.orig/include/atmresolv.h bind-498-REL/include/atmresolv.h --- bind-498-REL.orig/include/atmresolv.h Wed Dec 31 18:00:00 1969 +++ bind-498-REL/include/atmresolv.h Tue Oct 2 17:21:56 2001 @@ -0,0 +1,58 @@ +/* + * + * Header for resolver funcs and defines used + * + * $Id: bind-498-REL.patch,v 1.2 2001/10/09 22:33:06 paulsch Exp $ + * + */ + +#ifndef _ATMRESOLV_H_ +#define _ATMRESOLV_H_ +#include +#include +#if defined(linux) +#include + +/* Path to resolver file */ +#define _PATH_ATMRESCONF _PATH_RESCONF + +/* + * Global defines and variables for resolver stub. + */ + +#define RES_MAX_CELL_RATE 3584 /* Max cell rate of connection */ + +struct __atmres_state { + int nscount; /* number of name servers */ + struct sockaddr_atmsvc + nsaddr_list[MAXNS]; +}; + +#define nsaddr nsaddr_list[0] + +/* + * Resolver options (keep these in synch with res_debug.c, please) + */ +#define RES_ATMINIT 0x00001000 /* ATM resolver initialized */ + +extern struct __atmres_state _atmres; +extern int _queryatm; + +#else +#define ATM_ESA_LEN 20 +#define ATM_E164_LEN 12 +#define ATM_AFI_DCC 0x39 /* DCC ATM Format */ +#define ATM_AFI_ICD 0x47 /* ICD ATM Format */ +#define ATM_AFI_E164 0x45 /* E.164 ATM Format */ +#endif + +/* New parameters for h_addrtype in gethostbyaddr */ +#define AF_ATMNSAP 3 +#define AF_ATME164 8 + +struct hostent *gethostbyname_atmnsap(const char *name); +struct hostent *gethostbyname_e164(const char *name); + +/* Protos */ +int atmres_init(void); +#endif /* _ATMRESOLV_H_ */ diff -urN bind-498-REL.orig/named/Makefile bind-498-REL/named/Makefile --- bind-498-REL.orig/named/Makefile Sat Sep 21 19:13:10 1996 +++ bind-498-REL/named/Makefile Tue Oct 2 17:21:56 2001 @@ -97,17 +97,18 @@ CFLAGS = ${CDEBUG} -I${INCL} -I${COMPINCL} ${DEFS} -HDRS= db_defs.h db_glob.h ns_defs.h ns_glob.h named.h pathnames.h tree.h +HDRS= db_defs.h db_glob.h ns_defs.h ns_glob.h named.h pathnames.h tree.h \ + atm_itf.h SRCS= db_dump.c db_load.c db_lookup.c db_reload.c db_save.c db_update.c \ db_secure.c db_glue.c \ ns_forw.c ns_init.c ns_main.c ns_maint.c ns_req.c ns_resp.c \ ns_sort.c ns_stats.c ns_validate.c ns_ncache.c \ - storage.c tree.c ns_udp.c + storage.c tree.c ns_udp.c atm_itf.c OBJS= db_dump.o db_load.o db_lookup.o db_reload.o db_save.o db_update.o \ db_secure.o db_glue.o \ ns_forw.o ns_init.o ns_main.o ns_maint.o ns_req.o ns_resp.o \ ns_sort.o ns_stats.o ns_validate.o ns_ncache.o \ - storage.o tree.o ns_udp.o + storage.o tree.o ns_udp.o atm_itf.o XFERSRCS= named-xfer.c XFEROBJ= named-xfer.o db_glue.o storage.o version.o diff -urN bind-498-REL.orig/named/atm_itf.c bind-498-REL/named/atm_itf.c --- bind-498-REL.orig/named/atm_itf.c Wed Dec 31 18:00:00 1969 +++ bind-498-REL/named/atm_itf.c Tue Oct 2 17:21:56 2001 @@ -0,0 +1,117 @@ +/* + * Marko Kiiskila carnil@cs.tut.fi + * + * Copyright (c) 1996 + * Tampere University of Technology - Telecommunications Laboratory + * All rights reserved. + * + * Permission to use, copy, modify and distribute this + * software and its documentation is hereby granted, + * provided that both the copyright notice and this + * permission notice appear in all copies of the software, + * derivative works or modified versions, and any portions + * thereof, that both notices appear in supporting + * documentation, and that the use of this software is + * acknowledged in any publications resulting from using + * the software. + * + * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" + * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR + * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS + * SOFTWARE. + * + */ + +/* + * + * Source file for ATM interface in Linux + * + */ +#include +#include +#include +#include +#include +#include +#include + +#include "named.h" +#include +extern int errno; + +#if defined(linux) && defined(ATM) + +#include +#include + +#endif /* (defined(linux) && ATM) */ +#include "atm_itf.h" + +#if defined(linux) && defined(ATM) + +/* Listening ATM socket */ +int atm_vs; + +/* From ATM address */ +struct sockaddr_atmsvc from_atmaddr; + +int +open_atm_stream(void) +{ + struct sockaddr_atmsvc server; + int s; + unsigned char appl_id[] = { 0x00, 0xa0, 0x3e, 0x00, 0x00, 0x00, 0x01 }; + struct atm_qos conqos; + + s = socket(PF_ATMSVC, SOCK_DGRAM, ATM_AAL5); + if (s<0) { + syslog(LOG_ERR, "ATM socket failed: %m\n"); + return -errno; + } + memset(&server, 0, sizeof(server)); + server.sas_family = AF_ATMSVC; + server.sas_addr.bhli.hl_type = ATM_HL_VENDOR; + memcpy(server.sas_addr.bhli.hl_info, appl_id, 7); + + memset(&conqos, 0, sizeof(conqos)); + conqos.txtp.traffic_class = conqos.rxtp.traffic_class = ATM_UBR; + conqos.txtp.max_sdu = conqos.rxtp.max_sdu = 512; + if (setsockopt(s,SOL_ATM,SO_ATMQOS,&conqos,sizeof(conqos)) < 0) { + syslog(LOG_ERR, "ATM setsockopt SO_ATMQOS failed: %m\n"); + close(s); + return -errno; + } + if (bind(s, (struct sockaddr *)&server, sizeof(struct sockaddr_atmsvc))<0) { + syslog(LOG_ERR, "ATM socket bind failed: %m\n"); + close(s); + return -errno; + } + + if (listen(s, QLEN) <0) { + syslog(LOG_ERR, "ATM socket listen failed: %m\n"); + close(s); + return -errno; + } + return s; +} + +int +close_atm_stream(int s) +{ + if (s==atm_vs) + atm_vs = -1; + return (close(s)); +} + +int +is_qstream_atm(struct qstream *to_test) +{ + return (to_test->s_atmfrom.sas_family); +} + +#endif /* (defined(linux) && ATM) */ +/* + * + * $Log: bind-498-REL.patch,v $ + * Revision 1.2 2001/10/09 22:33:06 paulsch + * Merge V2_4_0 branch into the main branch... + * + * Revision 1.1.2.1 2001/10/03 17:45:52 paulsch + * Here is the ANS stuff coalesced(sp?) into a single directory now... Updated + * the bind patch so that it applies against the latest BIND 4... For the record, + * I have not tested this... I don't know if anybody is even using this... + * + * + */ diff -urN bind-498-REL.orig/named/atm_itf.h bind-498-REL/named/atm_itf.h --- bind-498-REL.orig/named/atm_itf.h Wed Dec 31 18:00:00 1969 +++ bind-498-REL/named/atm_itf.h Tue Oct 2 17:21:56 2001 @@ -0,0 +1,55 @@ +/* + * Marko Kiiskila carnil@cs.tut.fi + * + * Copyright (c) 1996 + * Tampere University of Technology - Telecommunications Laboratory + * All rights reserved. + * + * Permission to use, copy, modify and distribute this + * software and its documentation is hereby granted, + * provided that both the copyright notice and this + * permission notice appear in all copies of the software, + * derivative works or modified versions, and any portions + * thereof, that both notices appear in supporting + * documentation, and that the use of this software is + * acknowledged in any publications resulting from using + * the software. + * + * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" + * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR + * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS + * SOFTWARE. + * + */ + +/* + * + * Include file for ATM interface in Linux + * + */ +#ifndef _ATM_ITF_H_ +#define _ATM_ITF_H_ +#if defined(linux) && defined(ATM) +#include +#include + +#define MAX_CELL_RATE 3084 +#define QLEN 5 + +/* Listening ATM socket */ +extern int atm_vs; + +/* From ATM address */ +extern struct sockaddr_atmsvc from_atmaddr; + +/* Protos */ +int open_atm_stream(void); +int close_atm_stream(int s); +int is_qstream_atm(struct qstream *to_test); +#endif /* defined(linux) && defined(ATM) */ +#endif /* _ATM_ITF_H_ */ +/* + * + * $Log: bind-498-REL.patch,v $ + * Revision 1.2 2001/10/09 22:33:06 paulsch + * Merge V2_4_0 branch into the main branch... + * + * Revision 1.1.2.1 2001/10/03 17:45:52 paulsch + * Here is the ANS stuff coalesced(sp?) into a single directory now... Updated + * the bind patch so that it applies against the latest BIND 4... For the record, + * I have not tested this... I don't know if anybody is even using this... + * + * + */ diff -urN bind-498-REL.orig/named/db_dump.c bind-498-REL/named/db_dump.c --- bind-498-REL.orig/named/db_dump.c Mon Oct 7 23:51:03 1996 +++ bind-498-REL/named/db_dump.c Tue Oct 2 17:21:56 2001 @@ -569,6 +569,20 @@ dp->d_data, NULL), fp); break; +#if defined(ATM) + case T_ATMA: + if (dp->d_size == 21) { + int i; + + (void) fputs("AESA ",fp); + for (i=1;id_size;i++) + (void)fprintf(fp,"%2.2x",dp->d_data[i]&0xff); + } else { + (void) fputs("E164 ", fp); + (void) fputs(dp->d_data+1, fp); + } + break; +#endif /* defined (ATM) */ case T_AAAA: { char t[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255" diff -urN bind-498-REL.orig/named/db_load.c bind-498-REL/named/db_load.c --- bind-498-REL.orig/named/db_load.c Sun May 10 23:19:45 1998 +++ bind-498-REL/named/db_load.c Tue Oct 2 17:21:56 2001 @@ -103,6 +103,10 @@ #include "named.h" +#if defined(ATM) +#include +#endif /* defined(ATM) */ + #define ALLOW_LONG_TXT_RDATA static int gettoken __P((register FILE *, const char *)), @@ -814,6 +818,33 @@ if (n == 0) goto err; break; +#if defined(ATM) + case T_ATMA: + if (*buf=='+') { /* E.164 */ + cp = buf+1; + data[0] = ATMA_E164; + n=1; + while (*cp != '\0' && *cp != '\n' && + n <= ATM_E164_LEN) { + if (isdigit(*cp)) + data[n++] = *cp++; + else if (*cp++ != '.') + goto err; + } + if (n-1 > ATM_E164_LEN || n == 0) + goto err; + endline(fp); + } else { /* NSAP */ + data[0] = ATMA_AESA; + n = inet_nsap_addr(buf, (u_char *)data+1, + (sizeof data) -1); + if (n != ATM_ESA_LEN) + goto err; + n++; + endline(fp); + } + break; +#endif /* defined (ATM) */ case T_NSAP: n = inet_nsap_addr(buf, (u_char *)data, diff -urN bind-498-REL.orig/named/db_update.c bind-498-REL/named/db_update.c --- bind-498-REL.orig/named/db_update.c Sun Jun 1 15:34:34 1997 +++ bind-498-REL/named/db_update.c Tue Oct 2 17:21:56 2001 @@ -682,6 +682,9 @@ case T_GID: case T_WKS: case T_NULL: +#if defined(ATM) + case T_ATMA: +#endif /* defined(ATM) */ case T_NSAP: case T_AAAA: case T_LOC: diff -urN bind-498-REL.orig/named/named-xfer.c bind-498-REL/named/named-xfer.c --- bind-498-REL.orig/named/named-xfer.c Sat Dec 16 16:54:43 2000 +++ bind-498-REL/named/named-xfer.c Tue Oct 2 17:21:56 2001 @@ -1270,6 +1270,9 @@ case T_X25: case T_ISDN: case T_LOC: +#if defined(ATM) + case T_ATMA: +#endif /* defined(ATM) */ case T_NSAP: case T_AAAA: case T_UID: @@ -1808,6 +1811,12 @@ case T_NSAP: fprintf(dbfp, "%s\n", inet_nsap_ntoa(n, cp, NULL)); break; + +#if defined(ATM) + case T_ATMA: + fprintf(dbfp, "ATM RR\n"); + break; +#endif /* defined(ATM) */ case T_AAAA: { char t[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"]; diff -urN bind-498-REL.orig/named/ns_defs.h bind-498-REL/named/ns_defs.h --- bind-498-REL.orig/named/ns_defs.h Sat Sep 21 19:13:10 1996 +++ bind-498-REL/named/ns_defs.h Tue Oct 2 17:21:56 2001 @@ -188,6 +188,12 @@ int nretry; /* # of times addr retried */ }; +#if defined(ATM) +#if defined(linux) +#include +#endif /* defined(linux) */ +#endif /* defined(ATM) */ + /* * Structure for recording info on forwarded or generated queries. */ @@ -259,6 +265,12 @@ struct qstream *s_next; /* next stream */ struct sockaddr_in s_from; /* address query came from */ +#if defined(ATM) +#if defined(linux) + struct sockaddr_atmsvc + s_atmfrom; /* ATM address query came from */ +#endif /* defined(linux) */ +#endif /* defined(ATM) */ u_int32_t s_time; /* time stamp of last transaction */ int s_refcnt; /* number of outstanding queries */ u_int16_t s_tempsize; /* temporary for size from net */ diff -urN bind-498-REL.orig/named/ns_forw.c bind-498-REL/named/ns_forw.c --- bind-498-REL.orig/named/ns_forw.c Sat Dec 16 16:59:16 2000 +++ bind-498-REL/named/ns_forw.c Tue Oct 2 17:21:56 2001 @@ -128,7 +128,10 @@ qp->q_domain = strdup(tmpdomain); if (!qp->q_domain) panic(ENOMEM, "ns_forw: strdup failed"); - qp->q_from = *fp; /* nslookup wants to know this */ + if (fp) + qp->q_from = *fp; /* nslookup wants to know this */ + else + memset(&qp->q_from, 0, sizeof(qp->q_from)); n = nslookup(nsp, qp, dname, "ns_forw"); if (n < 0) { dprintf(2, (ddt, "forw: nslookup reports danger\n")); diff -urN bind-498-REL.orig/named/ns_main.c bind-498-REL/named/ns_main.c --- bind-498-REL.orig/named/ns_main.c Sat Dec 16 16:54:43 2000 +++ bind-498-REL/named/ns_main.c Tue Oct 2 17:21:56 2001 @@ -111,6 +111,10 @@ #include "named.h" #undef MAIN_PROGRAM +#if defined(ATM) +#include "atm_itf.h" +#endif /* defined(ATM) */ + #undef nsaddr /* UDP receive, TCP send buffer size */ @@ -405,6 +409,26 @@ exit(1); } +#if defined(ATM) +#if defined(linux) + /* ATM socket creation */ + for(n=0;;n++) { + printf("About to create listen socket\n"); + if ((atm_vs=open_atm_stream()) < 0 && n < 2) { + printf("open_atm_stream failed %d\n",atm_vs); + syslog(LOG_ERR, "ATM socket failure, can't answer ATM connection requests\n"); + if (errno == EADDRINUSE) { + syslog(LOG_NOTICE, + "There may be an ATM name server already running\n"); + } + } else + break; + /* Retry opening the socket a few times */ + sleep(3); + } +#endif /* defined (linux) */ +#endif /* defined (ATM) */ + /* * named would be terminated if one of these is sent and no handler. */ @@ -424,6 +448,11 @@ */ FD_ZERO(&mask); FD_SET(vs, &mask); +#if defined(ATM) +#if defined(linux) + FD_SET(atm_vs, &mask); +#endif /* defined(linux) */ +#endif /* defined(ATM) */ getnetconf(); /* @@ -785,6 +814,11 @@ gettime(&tt); sp->s_time = tt.tv_sec; /* last transaction time */ sp->s_from = from_addr; /* address to respond to */ +#if defined(ATM) +#if defined(linux) + memset(&sp->s_atmfrom, 0, sizeof(sp->s_atmfrom)); +#endif /* defined(linux) */ +#endif /* defined(ATM) */ sp->s_bufp = (u_char *)&sp->s_tempsize; FD_SET(rfd, &mask); FD_SET(rfd, &tmpmask); @@ -795,6 +829,83 @@ sin_ntoa(&sp->s_from), rfd); #endif } +#if defined(ATM) +#if defined(linux) + /* + ** Process ATM stream connection. + ** + ** Note that a "continue" in here takes us back to the select() + ** which, if our accept() failed, will bring us back here. + */ + if (FD_ISSET(atm_vs, &tmpmask)) { + + int from_len = sizeof(from_atmaddr); + rfd = accept(atm_vs, + (struct sockaddr *)&from_atmaddr, + &from_len); + if (rfd < 0 && errno == EINTR) + continue; + if (rfd < 0 && errno == EMFILE && streamq) { + maxctime = 0; + candidate = NULL; + for (sp = streamq; sp; sp = nextsp) { + nextsp = sp->s_next; + if (sp->s_refcnt) + continue; + gettime(&tt); + lasttime = tt.tv_sec - sp->s_time; + if (lasttime >= VQEXPIRY) + sqrm(sp); + else if (lasttime > maxctime) { + candidate = sp; + maxctime = lasttime; + } + } + if (candidate) + sqrm(candidate); + continue; + } + if (rfd < 0 && (errno == ENOENT || errno == EUNATCH)) { + syslog(LOG_INFO, "ATM signalling died!\n"); + (void)my_close(atm_vs); + FD_CLR(atm_vs, &mask); + continue; + } + if (rfd < 0) { + syslog(LOG_INFO, "accept: %m"); + continue; + } + if (getpeername(rfd, + (struct sockaddr*)&from_atmaddr, + &from_len) != 0) { + syslog(LOG_INFO, + "getpeername(rfd, &from_atmaddr, &from):%m"); + (void) my_close(rfd); + continue; + } + if ((sp = sqadd()) == QSTREAM_NULL) { + (void) my_close(rfd); + continue; + } + sp->s_rfd = rfd; /* stream file descriptor */ + sp->s_size = -1; /* amount of data to receive */ + gettime(&tt); + sp->s_time = tt.tv_sec; /* last transaction time */ + + memset(&sp->s_from,0,sizeof(sp->s_from)); + memcpy(&sp->s_atmfrom, &from_atmaddr, + sizeof(from_atmaddr)); + /* address to respond to */ + sp->s_bufp = (u_char *)&sp->s_tempsize; + FD_SET(rfd, &mask); + FD_SET(rfd, &tmpmask); + dprintf(1, (ddt, + "\nATM connection from [%s] (fd %d)\n", + "ATMADDRESS", rfd)); + + } +#endif /* defined(linux) */ +#endif /* defined(ATM) */ if (streamq) dprintf(3, (ddt, "streamq = 0x%lx\n", (u_long)streamq)); @@ -802,6 +913,29 @@ nextsp = sp->s_next; if (!FD_ISSET(sp->s_rfd, &tmpmask)) continue; +#if defined(ATM) +#if defined(linux) + /* + * ATM streams process packets as datagrams, + * so read()'s have to be done accordingly. + */ + if (is_qstream_atm(sp)) { + n = read(sp->s_rfd, (char*)buf, + MIN(PACKETSZ, sizeof(buf))); + if ((n <0) && (errno == EAGAIN)) { + sq_query(sp); + errno = 0; + continue; + } + if (n <=0) { + sqrm(sp); + continue; + } + sq_query(sp); + ns_req(buf, n, PACKETSZ, sp, NULL, -1); + } else { +#endif /* defined(linux) */ +#endif /* defined(ATM) */ dprintf(5, (ddt, "sp x%lx rfd %d size %d time %d next x%lx\n", (u_long)sp, sp->s_rfd, sp->s_size, @@ -942,6 +1076,11 @@ } continue; } +#if defined(ATM) +#if defined(linux) + } +#endif /* defined(linux) */ +#endif /* defined(ATM) */ } } /* NOTREACHED */ diff -urN bind-498-REL.orig/named/ns_maint.c bind-498-REL/named/ns_maint.c --- bind-498-REL.orig/named/ns_maint.c Sat Sep 21 19:13:10 1996 +++ bind-498-REL/named/ns_maint.c Tue Oct 2 17:21:56 2001 @@ -73,6 +73,12 @@ #include "named.h" +#if defined(ATM) +#if defined(linux) +#include "atm_itf.h" +#endif /* defined(linux)*/ +#endif /* defined(ATM) */ + #ifdef USE_UTIME # include #endif @@ -163,6 +169,19 @@ stats_time = tt.tv_sec; } #endif +#if defined(ATM) +#if defined(linux) + if (atm_vs < 0) { + /* Try to create ATM socket again */ + printf("About to retry opening listen socket\n"); + if ((atm_vs=open_atm_stream()) < 0) { + printf("open_atm_stream failed %d\n",atm_vs); + syslog(LOG_ERR, "ATM socket failure, can't answer ATM connection requests\n"); + } else + printf("ATM socket creation success!\n"); + } +#endif /* defined (linux) */ +#endif /* defined (ATM) */ if (!needmaint) sched_maint(); dprintf(1, (ddt, "exit ns_maint()\n")); @@ -207,6 +226,13 @@ ival.it_value.tv_sec = next_refresh - tt.tv_sec; if ((long) ival.it_value.tv_sec < maint_interval) ival.it_value.tv_sec = maint_interval; +#if defined(ATM) +#if defined(linux) + if (atm_vs < 0) /* ATM socket doesn't exist, try again after + * maint_interval */ + ival.it_value.tv_sec = maint_interval; +#endif /* defined(linux)*/ +#endif /* defined(ATM) */ next_alarm = next_refresh; alarm_pending = 1; } diff -urN bind-498-REL.orig/named/ns_req.c bind-498-REL/named/ns_req.c --- bind-498-REL.orig/named/ns_req.c Sat Dec 16 16:31:26 2000 +++ bind-498-REL/named/ns_req.c Tue Oct 2 17:21:56 2001 @@ -96,6 +96,13 @@ #include "named.h" +#if defined(ATM) +#if defined(linux) +#include "atm_itf.h" +#endif /* defined(linux) */ +#endif /* defined(ATM) */ + + struct addinfo { char *a_dname; /* domain name */ char *a_rname; /* referred by */ @@ -251,12 +258,17 @@ #ifdef DEBUG #ifdef SORT_RESPONSE +#if defined(linux) && defined(ATM) + sortmsgtxt = " "; +#else sortmsgtxt = local(from) == NULL ? "Remote" : "Local"; +#endif /* defined(linux) && defined(ATM) */ #else /*SORT*/ sortmsgtxt = "(not sorting)"; #endif /*SORT*/ dprintf(1, (ddt, "ns_req: answer -> %s fd=%d id=%d size=%d %s\n", - sin_ntoa(from), (qsp == QSTREAM_NULL) ? dfd : qsp->s_rfd, + from?sin_ntoa(from):"(null)", + (qsp == QSTREAM_NULL) ? dfd : qsp->s_rfd, ntohs(hp->id), cp - msg, sortmsgtxt)); if (debug >= 10) fp_nquery(msg, cp - msg, ddt); @@ -280,6 +292,13 @@ nameserIncr(from->sin_addr, nssSentNaAns); #endif } else { +#if defined(ATM) +#if defined(linux) + if (is_qstream_atm(qsp)) + write(qsp->s_rfd, msg, cp-msg); + else +#endif /* defined(linux) */ +#endif /* defined(ATM) */ (void) writemsg(qsp->s_rfd, msg, cp - msg); sq_done(qsp); } @@ -520,10 +539,14 @@ */ if (type == T_AXFR) { /* refuse request if not a TCP connection */ +#if defined(ATM) && defined(linux) + if (qsp == QSTREAM_NULL || is_qstream_atm(qsp)) { +#else if (qsp == QSTREAM_NULL) { +#endif syslog(LOG_INFO, - "rejected UDP AXFR from %s for \"%s\"", - sin_ntoa(from), *dnbuf ? dnbuf : "."); + "rejected UDP/ATM AXFR from %s for \"%s\"", + from?sin_ntoa(from):"ATM",*dnbuf ? dnbuf : "."); return (Refuse); } /* the position of this is subtle. */ @@ -729,7 +752,7 @@ foundname, count, founddata, cname)); #ifdef SORT_RESPONSE - if ((lp = local(from)) != NULL) + if (from && (lp = local(from)) != NULL) sort_response(answers, count, lp, *cpp); #endif #ifdef BIND_NOTIFY diff -urN bind-498-REL.orig/named/ns_resp.c bind-498-REL/named/ns_resp.c --- bind-498-REL.orig/named/ns_resp.c Mon Apr 6 23:59:45 1998 +++ bind-498-REL/named/ns_resp.c Tue Oct 2 17:21:56 2001 @@ -1460,6 +1460,9 @@ case T_TXT: case T_X25: case T_ISDN: +#if defined(ATM) + case T_ATMA: +#endif case T_NSAP: case T_AAAA: case T_LOC: @@ -1948,6 +1951,11 @@ return (1); } } else { +#if defined(ATM) && defined(linux) + if (is_qstream_atm(qp->q_stream)) + (void) write(qp->q_stream->s_rfd, (u_char*)msg, msglen); + else +#endif /* defined(ATM) && defined(linux) */ (void) writemsg(qp->q_stream->s_rfd, (u_char*)msg, msglen); sq_done(qp->q_stream); } diff -urN bind-498-REL.orig/res/Makefile bind-498-REL/res/Makefile --- bind-498-REL.orig/res/Makefile Sun Jun 1 15:34:37 1997 +++ bind-498-REL/res/Makefile Tue Oct 2 17:21:56 2001 @@ -73,13 +73,13 @@ CFLAGS= ${CDEBUG} -I${INCL} -I${COMPINCL} ${DEFS} ${LOCDEFS} -SRCS= base64.c herror.c res_debug.c res_data.c \ +SRCS= base64.c herror.c res_debug.c res_data.c atm_init.c \ res_comp.c res_init.c res_mkquery.c res_query.c res_send.c \ getnetbyaddr.c getnetbyname.c getnetent.c getnetnamadr.c \ gethnamaddr.c sethostent.c nsap_addr.c hostnamelen.c inet_addr.c \ inet_ntop.c inet_neta.c inet_pton.c inet_net_ntop.c inet_net_pton.c -OBJS= base64.o herror.o res_debug.o res_data.o \ +OBJS= base64.o herror.o res_debug.o res_data.o atm_init.o \ res_comp.o res_init.o res_mkquery.o res_query.o res_send.o \ getnetbyaddr.o getnetbyname.o getnetent.o getnetnamadr.o \ gethnamaddr.o sethostent.o nsap_addr.o hostnamelen.o inet_addr.o \ diff -urN bind-498-REL.orig/res/atm_init.c bind-498-REL/res/atm_init.c --- bind-498-REL.orig/res/atm_init.c Wed Dec 31 18:00:00 1969 +++ bind-498-REL/res/atm_init.c Tue Oct 2 17:21:56 2001 @@ -0,0 +1,205 @@ +/* + * Marko Kiiskila carnil@cs.tut.fi + * + * Copyright (c) 1996 + * Tampere University of Technology - Telecommunications Laboratory + * All rights reserved. + * + * Permission to use, copy, modify and distribute this + * software and its documentation is hereby granted, + * provided that both the copyright notice and this + * permission notice appear in all copies of the software, + * derivative works or modified versions, and any portions + * thereof, that both notices appear in supporting + * documentation, and that the use of this software is + * acknowledged in any publications resulting from using + * the software. + * + * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" + * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR + * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS + * SOFTWARE. + * - + * Portions Copyright (c) 1985, 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * - + * Portions Copyright (c) 1993 by Digital Equipment Corporation. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies, and that + * the name of Digital Equipment Corporation not be used in advertising or + * publicity pertaining to distribution of the document or software without + * specific, written prior permission. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT + * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + * - + * --Copyright-- + */ + +/* + * + * Resolver initialization + * + * $Id: bind-498-REL.patch,v 1.2 2001/10/09 22:33:06 paulsch Exp $ + * + */ +#if defined(ATM) && defined(linux) +#include +#include +#include +#include +#include +#include +#include + +#include + +#define MATCH(line, name) \ +(!strncmp(line, name, sizeof(name) - 1) && \ + (line[sizeof(name) - 1] == ' ' || \ + line[sizeof(name) - 1] == '\t')) + +/* + * Resolver state default settings. + */ + +struct __atmres_state _atmres; +int _queryatm = 0; + +static unsigned short +atmres_randomid(void) +{ + struct timeval now; + + gettimeofday(&now, NULL); + return (0xffff & (now.tv_sec ^ now.tv_usec ^ getpid())); +} + +/* + * Set up default settings. If the configuration file exist, the values + * there will have precedence. Otherwise, the server address is set to + * WKS. Here should also be request for ILMI to find out ANS server address. + * + * Return 0 if completes successfully, -1 on error + */ +int +atmres_init(void) +{ + FILE *fp; + register char *cp, **pp; + register int n; + char buf[BUFSIZ]; + int nserv = 0; /* number of nameserver records read from file */ + int haveenv = 0; + int havesearch = 0; + unsigned char appl_id[] = { 0x00, 0xa0, 0x3e, 0x00, 0x00, 0x00, 0x01 }; + struct sockaddr_atmsvc tmp; + + memset(&_atmres.nsaddr, 0, sizeof(struct sockaddr_atmsvc)); + _atmres.nsaddr.sas_family = AF_ATMSVC; + _atmres.nsaddr.sas_addr.bhli.hl_type = ATM_HL_VENDOR; + memcpy(_atmres.nsaddr.sas_addr.bhli.hl_info, appl_id, 7); + _atmres.nscount = 1; + + /* ANS WKS addr */ + _atmres.nsaddr.sas_addr.prv[0] = 0x02; + _atmres.nsaddr.sas_addr.prv[1] = 0xc5; + _atmres.nsaddr.sas_addr.prv[2] = 0x00; + _atmres.nsaddr.sas_addr.prv[3] = 0x79; + _atmres.nsaddr.sas_addr.prv[4] = 0x00; + _atmres.nsaddr.sas_addr.prv[5] = 0x00; + _atmres.nsaddr.sas_addr.prv[6] = 0x00; + _atmres.nsaddr.sas_addr.prv[7] = 0x00; + _atmres.nsaddr.sas_addr.prv[8] = 0x00; + _atmres.nsaddr.sas_addr.prv[9] = 0x00; + _atmres.nsaddr.sas_addr.prv[10] = 0x00; + _atmres.nsaddr.sas_addr.prv[11] = 0x00; + _atmres.nsaddr.sas_addr.prv[12] = 0x00; + _atmres.nsaddr.sas_addr.prv[13] = 0x00; + _atmres.nsaddr.sas_addr.prv[14] = 0xa0; + _atmres.nsaddr.sas_addr.prv[15] = 0x3e; + _atmres.nsaddr.sas_addr.prv[16] = 0x00; + _atmres.nsaddr.sas_addr.prv[17] = 0x00; + _atmres.nsaddr.sas_addr.prv[18] = 0x02; + _atmres.nsaddr.sas_addr.prv[19] = 0x00; + + + if ((fp = fopen(_PATH_ATMRESCONF, "r")) != NULL) { + /* read the config file */ + while (fgets(buf, sizeof(buf), fp) != NULL) { + /* skip comments */ + if (*buf == ';' || *buf == '#') + continue; + /* read nameservers to query */ + if (MATCH(buf, "ans") && nserv < MAXNS) { + cp = buf + sizeof("ans") - 1; + while (*cp == ' ' || *cp == '\t') + cp++; + + while (buf[strlen(buf)-1] == '\n' || + buf[strlen(buf)-1] == ' ' || + buf[strlen(buf)-1] == '\t') + buf[strlen(buf)-1] = '\0'; + memset(&tmp, 0, sizeof(struct sockaddr_atmsvc)); + if (text2atm(cp, (struct sockaddr*)&tmp, + sizeof(struct sockaddr_atmsvc), T2A_SVC) < 0) + continue; + else { + _atmres.nsaddr_list[nserv] = tmp; + _atmres.nsaddr_list[nserv].sas_family = AF_ATMSVC; + _atmres.nsaddr_list[nserv].sas_addr.bhli.hl_type = ATM_HL_VENDOR; + memcpy(_atmres.nsaddr_list[nserv].sas_addr.bhli.hl_info, appl_id, 7); + nserv++; + } + continue; + } + } + if (nserv > 1) + _atmres.nscount = nserv; + fclose(fp); + } + return 0; +} +#endif + +/* + * + * $Log: bind-498-REL.patch,v $ + * Revision 1.2 2001/10/09 22:33:06 paulsch + * Merge V2_4_0 branch into the main branch... + * + * Revision 1.1.2.1 2001/10/03 17:45:52 paulsch + * Here is the ANS stuff coalesced(sp?) into a single directory now... Updated + * the bind patch so that it applies against the latest BIND 4... For the record, + * I have not tested this... I don't know if anybody is even using this... + * + * + */ diff -urN bind-498-REL.orig/res/gethnamaddr.c bind-498-REL/res/gethnamaddr.c --- bind-498-REL.orig/res/gethnamaddr.c Mon Apr 6 23:59:46 1998 +++ bind-498-REL/res/gethnamaddr.c Tue Oct 2 17:52:23 2001 @@ -89,6 +89,10 @@ # include <../conf/options.h> #endif +#if defined(ATM) +#include +#endif + #ifdef SPRINTF_CHAR # define SPRINTF(x) strlen(sprintf/**/x) #else @@ -192,6 +196,9 @@ host.h_name = NULL; eom = answer->buf + anslen; switch (qtype) { +#if defined(ATM) + case T_ATMA: +#endif case T_A: case T_AAAA: name_ok = res_hnok; @@ -222,7 +229,11 @@ return (NULL); } BOUNDED_INCR(n + QFIXEDSZ); +#if defined(ATM) + if (qtype == T_A || qtype == T_AAAA || qtype == T_ATMA) { +#else if (qtype == T_A || qtype == T_AAAA) { +#endif /* defined(ATM) */ /* res_send() has already verified that the query name is the * same as the one we sent; this just gets the expanded name * (i.e., with the succeeding search-domain tacked on). @@ -382,6 +393,56 @@ h_errno = NETDB_SUCCESS; return (&host); #endif +#if defined(ATM) + case T_ATMA: + if (strcasecmp(host.h_name, bp) != 0) { + syslog(LOG_NOTICE|LOG_AUTH, + AskedForGot, host.h_name, bp); + cp += n; + continue; + } + if ((host.h_length == ATM_ESA_LEN && + (n != ATM_ESA_LEN+1 || + *cp != ATMA_AESA)) || + (host.h_length == ATM_E164_LEN && + (n != ATM_E164_LEN +1 || + *cp != ATMA_E164))) { + cp += n; + h_errno = NO_DATA; + if (ancount==0 && !haveanswer) + return (NULL); + continue; + } + if (haveanswer) { + if (n != host.h_length +1) { + cp += n; + continue; + } + } else { + register int nn; + + host.h_name = bp; + nn = strlen(bp) +1; + bp += nn; + buflen -= nn; + } + if (bp + n > &hostbuf[sizeof hostbuf]) { + dprintf("size (%d) too big\n", n); + had_error++; + continue; + } + if (hap >= &h_addr_ptrs[MAXADDRS-1]) { + if (!toobig++) + dprintf("Too many addresses (%d)\n", + MAXADDRS); + cp += n; + continue; + } + bcopy(cp+1, *hap++ = bp, n-1); + bp += n; + cp += n; + break; +#endif /* defined(ATM) */ case T_A: case T_AAAA: if (strcasecmp(host.h_name, bp) != 0) { @@ -463,6 +524,42 @@ return (NULL); } +#if defined(ATM) +struct hostent * +gethostbyname_e164(const char *name) +{ + struct hostent *hp; +#if defined(linux) + int old_queryatm; + + old_queryatm = _queryatm; + _queryatm =1; +#endif /* defined (linux) */ + hp =gethostbyname2(name, AF_ATME164); +#if defined(linux) + _queryatm = old_queryatm; +#endif /* defined(linux) */ + return hp; +} + +struct hostent * +gethostbyname_atmnsap(const char *name) +{ + struct hostent *hp; +#if defined(linux) + int old_queryatm; + + old_queryatm = _queryatm; + _queryatm =1; +#endif /* defined(linux) */ + hp = gethostbyname2(name, AF_ATMNSAP); +#if defined(linux) + _queryatm = old_queryatm; +#endif /* defined(linux) */ + return hp; +} +#endif /* defined(ATM) */ + struct hostent * gethostbyname(name) const char *name; @@ -498,6 +595,16 @@ } switch (af) { +#if defined(ATM) + case AF_ATMNSAP: + size = ATM_ESA_LEN; + type = T_ATMA; + break; + case AF_ATME164: + size = ATM_E164_LEN; + type = T_ATMA; + break; +#endif /* defined(ATM) */ case AF_INET: size = INADDRSZ; type = T_A; @@ -619,6 +726,12 @@ char hname2[MAXDNAME+1]; #endif /*SUNSECURITY*/ extern struct hostent *_gethtbyaddr(); + +#if defined(ATM) && defined(linux) + int old_queryatm; + + old_queryatm = _queryatm; +#endif /*defined(ATM) && defined(linux)*/ if ((_res.options & RES_INIT) == 0 && res_init() == -1) { h_errno = NETDB_INTERNAL; @@ -640,6 +753,20 @@ case AF_INET6: size = IN6ADDRSZ; break; +#if defined(ATM) + case AF_ATMNSAP: + size = ATM_ESA_LEN; +#if defined(linux) + _queryatm = 1; +#endif /* defined(linux) */ + break; + case AF_ATME164: + size = ATM_E164_LEN; +#if defined(linux) + _queryatm = 1; +#endif /*defined(linux) */ + break; +#endif /* defined(ATM) */ default: errno = EAFNOSUPPORT; h_errno = NETDB_INTERNAL; @@ -667,10 +794,50 @@ } strcpy(qp, "ip6.int"); break; +#if defined(ATM) + case AF_ATMNSAP: + qp =qbuf; + qp += SPRINTF((qbuf,"%2.2x.%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x", + uaddr[19] & 0xff, uaddr[13] & 0xff, + uaddr[14] & 0xff, uaddr[15] & 0xff, + uaddr[16] & 0xff, uaddr[17] & 0xff, + uaddr[18] & 0xff)); + if (uaddr[0] == ATM_AFI_DCC || uaddr[0] == ATM_AFI_ICD) { + for (n = 12; n > 2; n--) + qp += SPRINTF((qp, ".%x.%x", uaddr[n] & 0xf, + (uaddr[n] >> 4) & 0xf)); + qp += SPRINTF((qp,".%2.2x%2.2x.%2.2x.AESA.ATMA.INT", + uaddr[1] & 0xff, uaddr[2] & 0xff, + uaddr[0] & 0xff)); + } else if (uaddr[0] == ATM_AFI_E164) { + for (n = 12; n > 8; n--) + qp += SPRINTF((qp, ".%x.%x", uaddr[n] & 0xf, + (uaddr[n] >> 4) & 0xf)); + qp += SPRINTF((qp, ".")); + for (n = 1; n < 9; n++) + qp += SPRINTF((qp, "%2.2x", uaddr[n] & 0xff)); + qp += SPRINTF((qp, "%2.2x.AESA.ATMA.INT", uaddr[0] & 0xff)); + } else { + errno = EAFNOSUPPORT; + h_errno = NETDB_INTERNAL; + return (NULL); + } + break; + case AF_ATME164: + qp =qbuf; + for (n=11;n > 2;n--) + qp += SPRINTF((qp, "%c.",uaddr[n] & 0xff)); + qp += SPRINTF((qp,"%c%c%c.E164.ATMA.INT",uaddr[0],uaddr[1], + uaddr[2])); + break; +#endif default: abort(); } n = res_query(qbuf, C_IN, T_PTR, (u_char *)buf.buf, sizeof buf.buf); +#if defined(ATM) && defined(linux) + _queryatm = old_queryatm; +#endif if (n < 0) { dprintf("res_query failed (%d)\n", n); if (errno == ECONNREFUSED) diff -urN bind-498-REL.orig/res/res_debug.c bind-498-REL/res/res_debug.c --- bind-498-REL.orig/res/res_debug.c Sun Jun 1 15:34:37 1997 +++ bind-498-REL/res/res_debug.c Tue Oct 2 17:21:56 2001 @@ -659,7 +659,9 @@ putc(' ', file); } break; - +#if defined(ATM) + case T_ATMA: +#endif case T_NSAP: (void) fprintf(file, "\t%s", inet_nsap_ntoa(dlen, cp, NULL)); cp += dlen; @@ -922,7 +924,7 @@ {T_EID, "EID", "endpoint identifier (unimplemented)"}, {T_NIMLOC, "NIMLOC", "NIMROD locator (unimplemented)"}, {T_SRV, "SRV", "server selection"}, - {T_ATMA, "ATMA", "ATM address (unimplemented)"}, + {T_ATMA, "ATMA", "ATM address"}, {T_IXFR, "IXFR", "incremental zone transfer"}, {T_AXFR, "AXFR", "zone transfer"}, {T_MAILB, "MAILB", "mailbox-related data (deprecated)"}, diff -urN bind-498-REL.orig/res/res_query.c bind-498-REL/res/res_query.c --- bind-498-REL.orig/res/res_query.c Sun Jun 1 15:34:37 1997 +++ bind-498-REL/res/res_query.c Tue Oct 2 17:21:56 2001 @@ -80,6 +80,10 @@ # include <../conf/options.h> #endif +#if defined(ATM) && defined(linux) +#include +#endif + #if PACKETSZ > 1024 #define MAXPACKET PACKETSZ #else @@ -131,6 +135,11 @@ h_errno = NO_RECOVERY; return (n); } +#if defined(ATM) && defined(linux) + if (_queryatm) + n = atm_res_send(buf, n, answer, anslen); + else +#endif /* defined(ATM) && defined(linux) */ n = res_send(buf, n, answer, anslen); if (n < 0) { #ifdef DEBUG diff -urN bind-498-REL.orig/res/res_send.c bind-498-REL/res/res_send.c --- bind-498-REL.orig/res/res_send.c Mon Apr 6 23:59:46 1998 +++ bind-498-REL/res/res_send.c Tue Oct 2 17:21:56 2001 @@ -94,6 +94,16 @@ # include <../conf/options.h> #endif +#if defined(ATM) && defined(linux) +#include +#include + +static int atms = -1; /* ATM socket used for communications */ + +void _atmres_close __P((void)); + +#endif /* defined(ATM) && defined(linux) */ + static int s = -1; /* socket used for communications */ static int connected = 0; /* is the socket connected */ static int vc = 0; /* is the socket a virtual ciruit? */ @@ -802,6 +812,257 @@ errno = terrno; return (-1); } + +#if defined(ATM) && defined(linux) + +static int +atm_getouraddr(int ss, struct sockaddr_atmsvc *addr) +{ + struct atmif_sioc req; + + req.number = 0; + req.arg = addr; + req.length = sizeof(struct sockaddr_atmsvc); + + if (ioctl(ss, ATM_GETADDR, &req) <0) { + Perror(stderr, "ioctl ATM_GETADDR failed", errno); + return -1; + } + return 0; +} + +int +atm_res_send(const unsigned char *buf, int buflen, + unsigned char *ans, int anssiz) +{ + HEADER *anhp = (HEADER *) ans; + int try, ns, terrno, gotsomewhere, connreset, resplen, n; + unsigned short badns; /* XXX NSMAX can't exceed #/bits in this var */ + int truncated; + unsigned char *cp; + struct sockaddr_atmsvc us; + struct atm_qos conqos; + + if ((_res.options & RES_INIT) == 0 && res_init() == -1) { + return -1; + } + + if ((_res.options & RES_ATMINIT) == 0 && atmres_init() == -1) { + return -1; + } + + gotsomewhere = 0; + connreset = 0; + terrno = ETIMEDOUT; + badns = 0; + + + /* + * Send request, RETRY times, or until successful + */ + + for (try = 0; try < _res.retry; try++) { + for (ns = 0; ns < _atmres.nscount; ns++) { + struct sockaddr_atmsvc *nsap = &_atmres.nsaddr_list[ns]; + struct timeval timeout; + fd_set dsmask; + same_ns: + if (badns & (1 << ns)) { + _atmres_close(); + goto next_ns; + } + + if (_res.options & RES_DEBUG) { + char buffer[50]; + + for(n=0;nsas_addr.prv[n]); + } + Dprint(_res.options & RES_DEBUG, + (stdout, ";; Querying server (# %d) address = %s\n", + ns + 1, buffer)); + } + /* + * Use virtual circuit; + * at most one attempt per server. + */ + try = _res.retry; + truncated = 0; + if (atms < 0) { + atms = socket(PF_ATMSVC, SOCK_DGRAM, ATM_AAL5); + if (atms < 0) { + terrno = errno; + Perror(stderr, "socket", errno); + return (-1); + } + errno = 0; + memset(&us, 0, sizeof(us)); + atm_getouraddr(atms, &us); + memset(&conqos, 0, sizeof(conqos)); + conqos.txtp.traffic_class = conqos.rxtp.traffic_class = ATM_UBR; + conqos.txtp.max_sdu = conqos.rxtp.max_sdu = 512; + if (setsockopt(atms,SOL_ATM,SO_ATMQOS,&conqos,sizeof(conqos)) < 0) { + terrno = errno; + Perror(stderr,"setsockopt SO_ATMQOS",errno); + _atmres_close(); + return(-1); + } + + if (bind(atms, (struct sockaddr *)&us, + sizeof(struct sockaddr_atmsvc))<0) { + terrno = errno; + Aerror(stderr, "bind", errno, &us); + _atmres_close(); + return(-1); + } + + if (connect(atms, (struct sockaddr *)nsap, + sizeof(struct sockaddr_atmsvc)) + <0) { + terrno = errno; + Aerror(stderr, "connect", errno, nsap); + badns |= (1 << ns); + _atmres_close(); + goto next_ns; + } + } + + /* + * Send length & message + */ + if (write(atms, buf, buflen)<0) { + terrno = errno; + Perror(stderr, "write failed", errno); + badns |= (1 << ns); + _atmres_close(); + goto next_ns; + } + /* + * Wait for reply + */ + timeout.tv_sec = (_res.retrans << try); + if (try > 0) + timeout.tv_sec /= _atmres.nscount; + if ((long) timeout.tv_sec <= 0) + timeout.tv_sec = 1; + timeout.tv_usec = 0; + wait: + FD_ZERO(&dsmask); + FD_SET(atms, &dsmask); + n = select(atms+1, &dsmask, (fd_set *)NULL, + (fd_set *)NULL, &timeout); + if (n < 0) { + Perror(stderr, "select", errno); + _atmres_close(); + goto next_ns; + } + if (n == 0) { + /* + * timeout + */ + Dprint(_res.options & RES_DEBUG, + (stdout, ";; timeout\n")); + gotsomewhere = 1; + _atmres_close(); + goto next_ns; + } + errno = 0; + + cp = ans; + resplen = read(atms, (char *)cp, (int)anssiz); + if (resplen <= 0) { + terrno = errno; + Perror(stderr, "read failed", errno); + _atmres_close(); + /* + * A long running process might get its ATM + * connection reset if the network sent one. + * Requery the server instead of + * trying a new one. When there is only one + * server, this means that a query might work + * instead of failing. We only allow one reset + * per query to prevent looping. + */ + if (terrno == ECONNRESET && !connreset) { + connreset = 1; + _atmres_close(); + goto same_ns; + } + _atmres_close(); + goto next_ns; + } + gotsomewhere = 1; + + if (!res_queriesmatch(buf, buf + buflen, + ans, ans + anssiz)) { + /* + * response contains wrong query? ignore it. + * XXX - potential security hazard could + * be detected here. + */ + DprintQ((_res.options & RES_DEBUG) || + (_res.pfcode & RES_PRF_REPLY), + (stdout, ";; wrong query name:\n"), + ans, resplen); + goto wait; + } + if (anhp->rcode == SERVFAIL || + anhp->rcode == NOTIMP || + anhp->rcode == REFUSED) { + DprintQ(_res.options & RES_DEBUG, + (stdout, "server rejected query:\n"), + ans, resplen); + badns |= (1 << ns); + _atmres_close(); + /* don't retry if called from dig */ + if (!_res.pfcode) + goto next_ns; + } + Dprint((_res.options & RES_DEBUG) || + ((_res.pfcode & RES_PRF_REPLY) && + (_res.pfcode & RES_PRF_HEAD1)), + (stdout, ";; got answer:\n")); + DprintQ((_res.options & RES_DEBUG) || + (_res.pfcode & RES_PRF_REPLY), + (stdout, " "), + ans, resplen); + /* + * If using virtual circuits, we assume that the first server + * is preferred over the rest (i.e. it is on the local + * machine) and only keep that one open. + * If we have temporarily opened a virtual circuit, + * or if we haven't been asked to keep a socket open, + * close the socket. + */ + if ((ns != 0) || !(_res.options & RES_STAYOPEN)) { + _atmres_close(); + } + return (resplen); + next_ns: ; + } /*foreach ns*/ + } /*foreach retry*/ + _atmres_close(); + errno = terrno; + return (-1); +} + +/* + * This routine is for closing the socket if a virtual circuit is used and + * the program wants to close it. This provides support for endhostent() + * which expects to close the socket. + * + * This routine is not expected to be user visible. + */ +void +_atmres_close() +{ + if (atms >= 0) { + (void) close(atms); + atms = -1; + } +} + +#endif /* defined(ATM) && defined(linux) */ /* * This routine is for closing the socket if a virtual circuit is used and diff -urN bind-498-REL.orig/res/sethostent.c bind-498-REL/res/sethostent.c --- bind-498-REL.orig/res/sethostent.c Sat Sep 28 01:51:07 1996 +++ bind-498-REL/res/sethostent.c Tue Oct 2 17:21:56 2001 @@ -58,4 +58,7 @@ { _res.options &= ~(RES_STAYOPEN | RES_USEVC); res_close(); +#if defined(ATM) && defined(linux) + _atmres_close(); +#endif } diff -urN bind-498-REL.orig/shres/linux/Makefile bind-498-REL/shres/linux/Makefile --- bind-498-REL.orig/shres/linux/Makefile Tue Apr 7 00:00:24 1998 +++ bind-498-REL/shres/linux/Makefile Tue Oct 2 17:21:56 2001 @@ -3,13 +3,13 @@ CFLAGS= ${CDEBUG} -I../${INCL} -I../${COMPINCL} ${DEFS} ${LOCDEFS} # What is USE_OPTIONS_H for? -u@q.net LOCDEFS= -DUSE_OPTIONS_H -SRCS= base64.c herror.c res_debug.c res_data.c \ +SRCS= base64.c herror.c res_debug.c res_data.c atm_init.c \ res_comp.c res_init.c res_mkquery.c res_query.c res_send.c \ getnetbyaddr.c getnetbyname.c getnetent.c getnetnamadr.c \ gethnamaddr.c sethostent.c nsap_addr.c inet_ntop.c inet_pton.c \ inet_addr.c strerror.c -OBJS= base64.o herror.o res_debug.o res_data.o \ +OBJS= base64.o herror.o res_debug.o res_data.o atm_init.o \ res_comp.o res_init.o res_mkquery.o res_query.o res_send.o \ getnetbyaddr.o getnetbyname.o getnetent.o getnetnamadr.o \ gethnamaddr.o sethostent.o nsap_addr.o inet_ntop.o inet_pton.o \ @@ -42,6 +42,7 @@ libresolv.so: ${OBJS} $(SHLD) -o $@ $(OBJS) +atm_init.o: ../../res/atm_init.c base64.o: ../../res/base64.c herror.o: ../../res/herror.c res_comp.o: ../../res/res_comp.c diff -urN bind-498-REL.orig/tools/host.c bind-498-REL/tools/host.c --- bind-498-REL.orig/tools/host.c Mon Oct 7 23:51:07 1996 +++ bind-498-REL/tools/host.c Tue Oct 2 17:21:56 2001 @@ -401,6 +401,11 @@ case T_UNSPEC: fprintf(stderr,"any Unspecified Format data.\n"); break; +#if defined(ATM) + case T_ATMA: + fprintf(stderr, "an ATM address\n"); + break; +#endif default: fprintf(stderr,"the information you requested.\n"); break; @@ -906,7 +911,20 @@ cp += INT32SZ; } break; - +#if defined(ATM) + case T_ATMA: + if (doprint) { + int i; + if (*cp == ATMA_AESA) + fprintf(file, " NSAP "); + else if (*cp == ATMA_E164) + fprintf(file, " E164 "); + for (i=1;izonefile # # Where domain is the name of the domain to create, e.g. lrc.epfl.ch (if # omitted, hostname -d is used) # host is the name of the primary DNS server of that domain, e.g. # lrcpcs.epfl.ch (if omitted, hostname -f is used) # email is the e-mail address of the DNS administrator of that # domain, e.g. root@lrc.epfl.ch (if omitted, root@host is used) # zonefile is the name of the output file, e.g. lrc.zone # # Trailing dots in domain, host, and email are silently removed. # # With -r, the reverse mapping (PTR) is created. Otherwise, the forward mapping # (ATMA) is created. # # Example: host2ans.pl lrc.epfl.ch /etc/named/lrc.zone if ($ARGV[0] eq "-r") { shift(@ARGV); $rev = 1; } $master = $tmp = `hostname -f` unless defined($master = $ARGV[1]); $master =~ s/\n//; $master =~ s/\.$//; ($domain = $master) =~ s/^[^.]*\.// unless defined($domain = $ARGV[0]); $domain =~ s/\.$//; $email = "root\@$master" unless defined($email = $ARGV[2]); $email =~ s/@/\./; $email =~ s/\.$//; print "; ".($rev ? "Reverse mapping" : "Authoritative data")." for $domain". "\n\n"; print "@\t\tIN\tSOA\t$master. $email. (\n"; @t = localtime(time); $t[5] += 1900 if $t[5] < 100; # Perl bug ? printf("\t\t\t\t%04d%02d%02d%02d\t; Serial\n",$t[5],$t[4],$t[3],$t[2]); print "\t\t\t\t10800\t\t; Refresh (3h)\n"; print "\t\t\t\t3600\t\t; Retry (1h)\n"; print "\t\t\t\t3600000\t\t; Expire (1000h)\n"; print "\t\t\t\t86400 )\t\t; Minimum (24h)\n"; print "\t\tIN\tNS\t$master.\n"; print "localhost\tIN\tA\t127.0.0.1\n" unless $rev; while () { chop; s/#.*//; s/\s+$//; s/^\s+//; next if /^$/; ($addr,$host) = split(/\s+/); $addr =~ s/\.//g; $host =~ s/\..*//; $host =~ s/\.$//; if ($rev) { $pfx = substr($addr,0,26); $tail = substr($addr,26,14); if ($pfx ne $origin) { $origin = $pfx; $single = substr($pfx,6,20); print "\$ORIGIN ".join(".",reverse split("",substr($pfx,6,20))). ".".substr($pfx,2,4).".".substr($pfx,0,2).".AESA.ATMA.INT.\n"; } print substr($tail,12,2).".".substr($tail,0,12)."\tIN\tPTR\t$host.". $domain.".\n"; } else { print $host.(length($host) < 8 ? "\t" : "")."\tIN\tATMA\t$addr\n"; } } linux-atm-2.5.1/src/extra/ANS/named.conf0000644000200100001440000000060407360675442016563 0ustar chasusersoptions { directory "/var/named"; }; zone "0.0.127.in-addr.arpa" { type master; file "zone/127.0.0"; }; zone "atm" { notify no; type master; file "zone/atm"; }; zone "27.168.192.in-addr.arpa" { notify no; type master; file "zone/192.168.27"; }; zone "0.0.0.0.0.0.1.E.F.F.0.8.5.0.0.0.7.4.nsap.int" { notify no; type master; file "zone/atm-reverse"; }; linux-atm-2.5.1/src/extra/ANS/pdf2e164_cc.pl0000755000200100001440000000122707360675442017072 0ustar chasusers#!/usr/bin/perl # # The E.164 country code listing "List of ITU-T Recommendation E.164 Assigned # Country Codes" can be obtained from # The International Telecommunications Union (ITU) http://www.itu.org/ # at http://www.itu.int/itudoc/itu-t/ob-lists/icc/e164_717.html # # Usage of this program: # perl pdf2e164_cc.pl e164_xxx.pdf >/etc/e164_cc # open(PDF2TXT, "pdftotext -raw $ARGV[0] - |"); while() { next unless /^(\d+)\s+(.+)\s+/; last if $1 == 999; } while() { next unless /^(\d+)\s+(.+)\s+/; ($country, $junk) = split(/\s{2,}/, $2, 2); printf("%-3d %s\n", $1, $country) || die "printf: $!"; last if $1 == 999; } close(PDF2TXT); linux-atm-2.5.1/src/extra/ANS/resolv.conf0000644000200100001440000000026307360675442017012 0ustar chasuserssearch my.domain atm ; The host where we're running the nameserver: nameserver 192.168.27.72 ; The nameservers for my.domain nameserver xxx.xxx.xxx.xxx nameserver yyy.yyy.yyy.yyy linux-atm-2.5.1/src/extra/Makefile.in0000644000200100001440000002357411304770375016261 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/extra DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/linux-atm.spec.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = linux-atm.spec CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = linux-atm.spec.in \ ANS/127.0.0 ANS/atm-reverse ANS/e164_cc ANS/pdf2e164_cc.pl ANS/resolv.conf \ ANS/192.168.27 ANS/bind-498-REL.patch ANS/hosts2ans.pl ANS/README ANS/atm \ ANS/named.conf ANS/README.DNS all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/extra/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/extra/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): linux-atm.spec: $(top_builddir)/config.status $(srcdir)/linux-atm.spec.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/ilmid/0000755000200100001440000000000011304770375014154 5ustar chasuserslinux-atm-2.5.1/src/ilmid/CVS/0000755000200100001440000000000011304767140014603 5ustar chasuserslinux-atm-2.5.1/src/ilmid/CVS/Root0000644000200100001440000000007411304767137015460 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/ilmid/CVS/Repository0000644000200100001440000000002411304767137016707 0ustar chasuserslinux-atm/src/ilmid linux-atm-2.5.1/src/ilmid/CVS/Entries0000644000200100001440000000303511304767140016140 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /COPYRIGHT/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /Makefile.am/1.2.2.4/Wed Jul 11 16:07:57 2007//TV2_5_1 /actions.c/1.1.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /actions.h/1.1.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /atmf_uni.c/1.2.2.2.2.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /atmf_uni.h/1.2.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /ilmid.8/1.1.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /ilmid.c/1.2.2.3/Wed Jul 11 16:07:57 2007//TV2_5_1 /ilmid.h/1.1.2.2/Wed Jul 11 16:07:57 2007//TV2_5_1 /ilmidiag.c/1.1.2.1/Sat Aug 25 16:47:43 2007//TV2_5_1 /io.c/1.2.2.3/Wed Jul 11 16:07:57 2007//TV2_5_1 /io.h/1.2.2.3/Wed Jul 11 16:07:57 2007//TV2_5_1 /message.c/1.2.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /message.h/1.2.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /mib.c/1.2.2.1.2.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /mib.h/1.2.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /rfc1155_smi.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /rfc1155_smi.h/1.2.2.1/Sat Jul 19 21:19:13 2003//TV2_5_1 /rfc1157_snmp.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /rfc1157_snmp.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /states.c/1.1.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /states.h/1.1.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /sysgroup.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /sysgroup.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /util.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /util.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /wait.c/1.1.2.2/Thu Oct 6 15:39:58 2005//TV2_5_1 /wait.h/1.1.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 D/asn1//// linux-atm-2.5.1/src/ilmid/CVS/Tag0000644000200100001440000000001011304767137015236 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/ilmid/.cvsignore0000644000200100001440000000006010666025263016147 0ustar chasusersMakefile Makefile.in .deps .libs ilmid ilmidiag linux-atm-2.5.1/src/ilmid/COPYRIGHT0000644000200100001440000000120707360675442015455 0ustar chasusers Copyright (c) 1995-97 All Rights Reserved. Permission to use, copy, modify and distribute this software and its documentation is hereby granted, provided that both the copyright notice and this permission notice appear in all copies of the software, derivative works or modified versions, and any portions thereof, that both notices appear in supporting documentation, and that the use of this software is acknowledged in any publications resulting from using the software. I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. linux-atm-2.5.1/src/ilmid/Makefile-0.790000644000200100001440000000105407360675442016215 0ustar chasusersLIBS = -L../lib -latmd -latm -Lasn1 -lasn1 LIBDEPS=../lib/libatmd.a ../lib/libatm.a INCLUDES = -I../lib -Iasn1 SRCS = rfc1157_snmp.c rfc1155_smi.c util.c io.c message.c \ atmf_uni.c mib.c sysgroup.c ilmid.c OBJS = $(SRCS:%.c=%.o) BOOTPGMS=ilmid CLEAN = clean_ilmid include ../Rules.make CFLAGS = $(CFLAGS_NOWARN) $(CFLAGS_OPT) $(CFLAGS_PRIVATE) $(STANDARDS) default: all do_all: ilmid asn1/libasn1.a: @cd asn1; make ilmid: asn1/libasn1.a $(OBJS) $(CC) $(OBJS) $(LIBS) -o ilmid clean_ilmid: @cd asn1; make clean rm -rf ilmid $(OBJS) *~ linux-atm-2.5.1/src/ilmid/Makefile.am0000644000200100001440000000121310645200135016172 0ustar chasusersSUBDIRS = asn1 INCLUDES = -I$(srcdir)/../ilmid/asn1 sbin_PROGRAMS = ilmid ilmidiag ilmid_SOURCES = rfc1157_snmp.c rfc1157_snmp.h rfc1155_smi.c rfc1155_smi.h \ util.c util.h io.c io.h message.c message.h \ atmf_uni.c atmf_uni.h mib.c mib.h \ sysgroup.c sysgroup.h ilmid.c ilmid.h \ wait.c wait.h states.c states.h actions.c actions.h ilmid_LDADD = $(top_builddir)/src/lib/libatm.la \ $(top_builddir)/src/ilmid/asn1/libasn1.a ilmid_DEPENDENCIES = $(ilmid_LDADD) ilmidiag_SOURCES = ilmidiag.c ilmidiag_LDADD = $(top_builddir)/src/lib/libatm.la ilmidiag_DEPENDENCIES = $(ilmid_LDADD) man_MANS = ilmid.8 EXTRA_DIST = COPYRIGHT ilmid.8 linux-atm-2.5.1/src/ilmid/actions.c0000644000200100001440000000676407706331407015775 0ustar chasusers#include #include #include #include #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" #include "message.h" #include "util.h" #include "io.h" #include "atmd.h" #include "mib.h" #include "atmf_uni.h" #include "sysgroup.h" #include "ilmid.h" #define COMPONENT "ILMI" extern struct attachment_point *apoint; extern int retries; extern long int requestID; void action_A1( int fd, Msgs *msgs ){ /* Reset Uptime */ diag( COMPONENT, DIAG_INFO, "Action A1: reset uptime" ); resetUpTime(); } void action_A2( int fd, Msgs *msgs ){ /* Reset Attachment Point */ diag( COMPONENT, DIAG_INFO, "Action A2: reset attachment point" ); /* should probably use reset_apoint() here */ if( apoint->atmfPortMyIfName.octs ){ free( apoint->atmfPortMyIfName.octs ); apoint->atmfPortMyIfName.octs = NULL; } memset( apoint, 0, sizeof( struct attachment_point )); } void action_A3( int fd, Msgs *msgs ){ /* Set Attachment Point */ /* This doesn't really exist */ /* see copy_attachment_point() */ diag( COMPONENT, DIAG_INFO, "Action A3: set attachment point" ); } void action_A4( int fd, Msgs *msgs ){ /* Clear Tables */ diag( COMPONENT, DIAG_INFO, "Action A4: clear tables" ); deleteNetPrefix(); } void action_A5( int fd, Msgs *msgs ){ /* start timer */ /* Our timer is provided by select() */ diag( COMPONENT, DIAG_INFO, "Action A5: start timer" ); } void action_A6( int fd, Msgs *msgs ){ /* stop timer */ diag( COMPONENT, DIAG_INFO, "Action A6: stop timer" ); } void action_A7( int fd, Msgs *msgs ){ diag( COMPONENT, DIAG_INFO, "Action A7: clear retries" ); retries = 0; } void action_A8( int fd, Msgs *msgs ){ diag( COMPONENT, DIAG_INFO, "Action A8: increment retries" ); retries++; } void action_A9( int fd, Msgs *msgs ){ /* clear all SVCs */ /* not sure how to do this, yet */ diag( COMPONENT, DIAG_INFO, "Action A9: release SVCs" ); } void action_A10( int fd, Msgs *msgs ){ diag( COMPONENT, DIAG_INFO, "Action A10: start signalling" ); /* not sure how to do this, yet */ } void action_A11( int fd, Msgs *msgs ){ diag( COMPONENT, DIAG_INFO, "Action A11: set coldstart" ); (msgs->coldstart)->data->a.trap->time_stamp = accessUpTime(); send_message( fd, msgs->coldstart ); } /* Attachment point info */ /* ILMI spec - page 90 */ void action_A12( int fd, Msgs *msgs ){ diag( COMPONENT, DIAG_INFO, "Action A12: get attachment point" ); msgs->apointmsg->data->a.get_next_request->request_id = ++requestID; send_message( fd, msgs->apointmsg ); } /* Configuration info */ /* ILMI spec - page 90 */ void action_A13( int fd, Msgs *msgs ){ Message *config; diag( COMPONENT, DIAG_INFO, "Action A13: get configuration" ); /* don't actually get all of the config info -- we probably will not be using much of it anyway */ config = msgs->config; config->data->a.get_next_request->request_id = ++requestID; send_message( fd, config ); } void action_A14( int fd, Msgs *msgs ){ diag( COMPONENT, DIAG_INFO, "Action A14: send getNextRequest" ); msgs->addrtable->data->a.get_next_request->request_id = ++requestID; send_message( fd, msgs->addrtable ); } void action_A15( int fd, Msgs *msgs ){ diag( COMPONENT, DIAG_INFO, "Action A15: send set request" ); msgs->set->data->a.get_next_request->request_id = ++requestID; send_message( fd, msgs->set ); } void action_get_sysgroup( int fd, Msgs *msgs ){ diag( COMPONENT, DIAG_INFO, "Action Get Sysgroup: request system mib" ); msgs->sysmsg->data->a.get_request->request_id = ++requestID; send_message( fd, msgs->sysmsg ); } linux-atm-2.5.1/src/ilmid/actions.h0000644000200100001440000000126607706331407015772 0ustar chasusers#ifndef __ACTIONS_H #define __ACTIONS_H #include "ilmid.h" void action_A1( int fd, Msgs *msgs ); void action_A2( int fd, Msgs *msgs ); void action_A3( int fd, Msgs *msgs ); void action_A4( int fd, Msgs *msgs ); void action_A5( int fd, Msgs *msgs ); void action_A6( int fd, Msgs *msgs ); void action_A7( int fd, Msgs *msgs ); void action_A8( int fd, Msgs *msgs ); void action_A9( int fd, Msgs *msgs ); void action_A10( int fd, Msgs *msgs ); void action_A11( int fd, Msgs *msgs ); void action_A12( int fd, Msgs *msgs ); void action_A13( int fd, Msgs *msgs ); void action_A14( int fd, Msgs *msgs ); void action_A15( int fd, Msgs *msgs ); void action_get_sysgroup( int fd, Msgs *msgs ); #endif linux-atm-2.5.1/src/ilmid/atmf_uni.c0000644000200100001440000002125011235572166016123 0ustar chasusers/* * atmf_uni.c - ATM Forum UNI MIB * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #if HAVE_CONFIG_H #include #endif #include #include "atmf_uni.h" #include "atmd.h" #include "util.h" #define COMPONENT "NETPREFIX" #define NETPREFIX_LEN 12 #define NETPREFIX_STRINGLEN '\15' #define INDEX_LEN 15 #define LOCALUNI '\0' #define VALID 1 #define INVALID 2 AsnOid foreQ2931AdminConfigType = {19, "\53\06\01\04\01\202\106\02\02\02\01\06\02\01\01\01\13\00\00" }; AsnOid foreQ2931NNIProto = {19, "\53\06\01\04\01\202\106\02\02\02\01\06\02\01\01\01\102\00\00" }; AsnOid atmfPortIndex = {13, "\53\06\01\04\01\202\141\02\01\01\01\01\00"}; AsnOid atmfPortMyIfName = {13, "\53\06\01\04\01\202\141\02\01\01\01\07\00"}; AsnOid atmfPortMyIdentifier = {13, "\53\06\01\04\01\202\141\02\01\01\01\10\00"}; AsnOid atmfMyIpNmAddress = {11, "\53\06\01\04\01\202\141\02\01\02\00"}; AsnOid atmfMySystemIdentifier = {11, "\53\06\01\04\01\202\141\02\01\04\00"}; AsnOid atmfAtmLayerMaxVpiBits = {13, "\53\06\01\04\01\202\141\02\02\01\01\6\00"}; AsnOid atmfAtmLayerMaxVciBits = {13, "\53\06\01\04\01\202\141\02\02\01\01\7\00"}; AsnOid atmfAtmLayerUniType = {13, "\53\06\01\04\01\202\141\02\02\01\01\10\00"}; AsnOid atmfAtmLayerUniVersion = {13, "\53\06\01\04\01\202\141\02\02\01\01\11\00"}; AsnOid atmfAtmLayerDeviceType = {13, "\53\06\01\04\01\202\141\02\02\01\01\12\00"}; AsnOid atmfAtmLayerIlmiVersion = {13, "\53\06\01\04\01\202\141\02\02\01\01\13\00"}; AsnOid atmfAtmLayerNniSigVersion = {13, "\53\06\01\04\01\202\141\02\02\01\01\14\00"}; AsnOid atmfNetPrefixStatus = {NETPREFIX_LEN, "\53\06\01\04\01\202\141\02\07\01\01\03"}; AsnOid atmfSrvcRegATMAddress = // {26, "\53\06\01\04\01\202\141\02\10\01\01\03\00\12\01\03\06\01\04\01\202\141\01\05\01\01"}; {25, "\53\06\01\04\01\202\141\02\10\01\01\03\00\12\01\03\06\01\04\01\202\141\01\05\01"}; AsnOid atmfSrvcRegTable = { 10, "\53\06\01\04\01\202\141\02\10\01" }; AsnOid atmfAddressTable = { 9, "\53\06\01\04\01\202\141\02\06" }; AsnOid atmfAddressStatus = { 12, "\53\06\01\04\01\202\141\02\06\01\01\03" }; AsnOid atmfAddressRegistrationAdminStatus = { 13, "\53\06\01\04\01\202\141\02\13\01\01\02\00" }; /* 1 = PublicUNI 2 = automode 3 = iisp 4 = ftPNNI 5 = privateNNI 6 = privateUNI */ AsnInt foreQ2931AdminConfigTypeValue = 6; /* private uni */ /* 1 = none 2 = ftpnni 3 = forum-pnni 4 = iisp */ AsnInt foreQ2931NNIProtoValue = 1; /* none */ AsnInt atmfPortIndexValue = 0; AsnOcts atmfMySystemIdentifierValue = {6 , NULL}; IpAddress atmfMyIpNmAddressValue = {4 , NULL}; /* The following two values depend on the capabilities of both the switch AND the adapter - DO THEY ?? */ AsnInt atmfAtmLayerMaxVpiBitsValue; AsnInt atmfAtmLayerMaxVciBitsValue; AsnInt atmfAtmLayerUniTypeValue = 2; /* private */ AsnInt atmfAtmLayerDeviceTypeValue = 1; /* user (ATM End System) */ AsnInt atmfAtmLayerIlmiVersionValue = 2; /* version4point0 */ AsnInt atmfAtmLayerNniSigVersionValue = 1; /* unsupported */ #if defined(UNI30) || defined(DYNAMIC_UNI) AsnInt atmfAtmLayerUniVersionValue = 2; // version3point0(2) #else #ifdef UNI31 AsnInt atmfAtmLayerUniVersionValue = 3; // version3point1(3) #else AsnInt atmfAtmLayerUniVersionValue = 4; // version4point0(4) #endif #endif static AsnOid atmNetPrefix = {0, NULL}; static AsnOcts atmLecsAddress = {0, NULL}; typedef struct NetPrefixNode { AsnOid *name; struct NetPrefixNode *prev; struct NetPrefixNode *next; } NetPrefixNode; AsnOid *accessNetPrefix(void) { if(atmNetPrefix.octs == NULL) return NULL; return(&atmNetPrefix); } void deleteNetPrefix(void) { NetPrefixNode *prefix, *nextPrefix; for(prefix = (NetPrefixNode *) MIBdelete(&atmfNetPrefixStatus); prefix != NULL; prefix = nextPrefix) { nextPrefix = prefix->next; free(prefix->name->octs); free(prefix->name); free(prefix); } if(atmNetPrefix.octs != NULL) { free(atmNetPrefix.octs); atmNetPrefix.octs = NULL; } } AsnInt getNetPrefix(VarBind *varbind, Variable *var) { int cmp; NetPrefixNode *prefix; AsnOid *varBindName; diag(COMPONENT,DIAG_DEBUG,"getNetPrefix"); varBindName = &varbind->name; if(AsnOidSize(varBindName) != NETPREFIX_LEN + INDEX_LEN || varbind->name.octs[NETPREFIX_LEN] != LOCALUNI || varbind->name.octs[NETPREFIX_LEN + 1] != NETPREFIX_STRINGLEN) return NOSUCHNAME; for(prefix = (NetPrefixNode *) var->value, cmp = AsnOidLess; prefix != NULL && (cmp = AsnOidCompare(varBindName, prefix->name)) < AsnOidEqual; prefix = prefix->next); if(cmp != AsnOidEqual) return NOSUCHNAME; varbind->value = Asn1Alloc(sizeof(struct ObjectSyntax)); varbind->value->choiceId = OBJECTSYNTAX_SIMPLE; varbind->value->a.simple = Asn1Alloc(sizeof(struct SimpleSyntax)); varbind->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; varbind->value->a.simple->a.number = VALID; return NOERROR; } AsnInt getnextNetPrefix(VarBind *varbind, Variable *var) { NetPrefixNode *prefix; AsnOid *varBindName; varBindName = &varbind->name; for(prefix = (NetPrefixNode *) var->value; prefix != NULL && AsnOidCompare(prefix->name, varBindName) != AsnOidGreater; prefix = prefix->next); if(prefix == NULL) return NOSUCHNAME; varbind->name.octs = Asn1Alloc(prefix->name->octetLen); AsnOidCopy(varBindName, prefix->name); varbind->value = Asn1Alloc(sizeof(struct ObjectSyntax)); varbind->value->choiceId = OBJECTSYNTAX_SIMPLE; varbind->value->a.simple = Asn1Alloc(sizeof(struct SimpleSyntax)); varbind->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; varbind->value->a.simple->a.number = VALID; return NOERROR; } AsnInt setNetPrefix(VarBind *varbind, Variable *var) { int cmp; NetPrefixNode *prefix, *newPrefix; AsnOid *varBindName; diag(COMPONENT,DIAG_DEBUG,"setNetPrefix"); varBindName = &varbind->name; if(varbind->value->choiceId != OBJECTSYNTAX_SIMPLE || varbind->value->a.simple->choiceId != SIMPLESYNTAX_NUMBER || (varbind->value->a.simple->a.number != VALID && varbind->value->a.simple->a.number != INVALID)) return BADVALUE; if(AsnOidSize(varBindName) != NETPREFIX_LEN + INDEX_LEN || varBindName->octs[NETPREFIX_LEN] != LOCALUNI || varBindName->octs[NETPREFIX_LEN + 1] != NETPREFIX_STRINGLEN) return NOSUCHNAME; for(prefix = (NetPrefixNode *) var->value, cmp = AsnOidLess; prefix != NULL && (cmp = AsnOidCompare(varBindName, prefix->name)) < AsnOidEqual; prefix = prefix->next); if(varbind->value->a.simple->a.number == VALID && cmp != AsnOidEqual) { newPrefix = alloc_t(NetPrefixNode); newPrefix->name = alloc_t(AsnOid); newPrefix->name->octs = alloc(varBindName->octetLen); AsnOidCopy(newPrefix->name, varBindName); { NetPrefixNode *tmp = (NetPrefixNode *) var->value; Q_INSERT_BEFORE(tmp, newPrefix, prefix); } if(atmNetPrefix.octs == NULL) { atmNetPrefix.octetLen = varBindName->octetLen - NETPREFIX_LEN - 2; atmNetPrefix.octs = alloc(atmNetPrefix.octetLen); memcpy(atmNetPrefix.octs, &varBindName->octs[NETPREFIX_LEN + 2], atmNetPrefix.octetLen); } } else if (varbind->value->a.simple->a.number == INVALID && cmp == AsnOidEqual) { { NetPrefixNode *tmp = (NetPrefixNode *) var->value; Q_REMOVE(tmp, prefix); } } return NOERROR; } AsnInt getLecsAddress(VarBind *varbind, Variable *var) { int cmp; NetPrefixNode *prefix; AsnOid *varBindName; diag(COMPONENT,DIAG_INFO,"getLecsAddress" ); varBindName = &varbind->name; if(AsnOidSize(varBindName) != 25 ) return NOSUCHNAME; /* for(prefix = (NetPrefixNode *) var->value, cmp = AsnOidLess; prefix != NULL && (cmp = AsnOidCompare(varBindName, prefix->name)) < AsnOidEqual; prefix = prefix->next); if(cmp != AsnOidEqual) return NOSUCHNAME; */ varbind->value = Asn1Alloc(sizeof(struct ObjectSyntax)); varbind->value->choiceId = OBJECTSYNTAX_SIMPLE; varbind->value->a.simple = Asn1Alloc(sizeof(struct SimpleSyntax)); varbind->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; varbind->value->a.simple->a.number = VALID; return NOERROR; } linux-atm-2.5.1/src/ilmid/atmf_uni.h0000644000200100001440000000500307706331407016125 0ustar chasusers/* * atmf_uni.h - ATM Forum UNI MIB * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #ifndef ATMF_UNI_H #define ATMF_UNI_H #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" #include "mib.h" extern AsnOid foreQ2931NNIProto; extern AsnOid foreQ2931AdminConfigType; extern AsnOid atmfPortIndex; extern AsnOid atmfPortMyIfName; extern AsnOid atmfPortMyIdentifier; extern AsnOid atmfMyIpNmAddress; extern AsnOid atmfMySystemIdentifier; extern AsnOid atmfNetPrefixStatus; extern AsnOid atmfAtmLayerMaxVpiBits; extern AsnOid atmfAtmLayerMaxVciBits; extern AsnOid atmfAtmLayerUniType; extern AsnOid atmfAtmLayerUniVersion; extern AsnOid atmfAtmLayerDeviceType; extern AsnOid atmfAtmLayerIlmiVersion; extern AsnOid atmfAtmLayerNniSigVersion; extern AsnOid atmfSrvcRegATMAddress; extern AsnOid atmfSrvcRegTable; extern AsnOid atmfAddressTable; extern AsnOid atmfAddressStatus; extern AsnOid atmfAddressRegistrationAdminStatus; extern AsnInt foreQ2931NNIProtoValue; extern AsnInt foreQ2931AdminConfigTypeValue; extern AsnInt atmfPortIndexValue; extern IpAddress atmfMyIpNmAddressValue; extern AsnOcts atmfMySystemIdentifierValue; extern AsnInt atmfAtmLayerMaxVpiBitsValue; extern AsnInt atmfAtmLayerMaxVciBitsValue; extern AsnInt atmfAtmLayerUniTypeValue; extern AsnInt atmfAtmLayerUniVersionValue; extern AsnInt atmfAtmLayerDeviceTypeValue; extern AsnInt atmfAtmLayerIlmiVersionValue; extern AsnInt atmfAtmLayerNniSigVersionValue; AsnOid *accessNetPrefix(void); void deleteNetPrefix(void); AsnInt getNetPrefix(VarBind *varbind, Variable *var); AsnInt getnextNetPrefix(VarBind *varbind, Variable *var); AsnInt setNetPrefix(VarBind *varbind, Variable *var); AsnInt getMyIp(VarBind *varbind, Variable *var); AsnOid *accessLecsAddress( void ); AsnInt setLecsAddress(VarBind *varbind, Variable *var); AsnInt getLecsAddress(VarBind *varbind, Variable *var); #endif linux-atm-2.5.1/src/ilmid/ilmid.80000644000200100001440000000150707706331407015346 0ustar chasusers.\" .TH ilmid 1 "2 Aug 2001" .SH NAME ilmid \- Integrated Local Management Interface Daemon .SH SYNOPSIS .B ilmid [ .B \-b ] [ .B \-d ] [ .B \-v ] [ .BI \-l\ logfile ] [ .B \-x ] [ .BI \-q\ qos ] [ .BI \-i\ local_ip ] [ .BI \-u\ uni ] .SH PARAMETERS .TP 15 .B \-b Puts the process in the background. .TP 15 .B \-d Turn on debugging output. .TP 15 .B \-v Verbose. .TP 15 .BI \-l\ logfile Set the location of the log file. .TP 15 .B \-x No var bindings? .TP 15 .BI \-q\ qos Set the qos parameters to use on the ilmi VC. .TP 15 .BI \-i\ local_ip the address that should be used by the switch for network management. .TP 15 .BI \-u\ uni uni version. This can be 3.0, 3.1 or 4.0. .SH DESCRIPTION ilmid implements SNMP on an ATM PVC. It is used to negotiate operating parameters with a switch. .SH SEE ALSO .BR atmsigd (8) linux-atm-2.5.1/src/ilmid/ilmid.c0000644000200100001440000003054210645200135015407 0ustar chasusers/* * ilmi.c - ILMI demon * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ /* Change Log: * 1-30-97 Added VERIFY state to allow resending of GetNext * PDUs after a ColdStart. This addresses a bug that * some switches have with receiving the GetNext too * soon after the ColdStart. Also added state IDLE * for a more configurable poll period. */ /* * Reference material used: af-ilmi-0065.000 */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" #include "message.h" #include "util.h" #include "io.h" #include "atmd.h" #include "mib.h" #include "atmf_uni.h" #include "sysgroup.h" #include "states.h" #define RESPONSE_TIMEOUT 2 #define POLL_PERIOD 15 #define COMPONENT "ILMI" #ifndef MAX # define MAX(a,b) ((a) > (b) ? (a) : (b)) #endif /* Globals */ /* static const char *state_names[STATES] = { "Stopped", "Link Failing", "Establishing", "Configuring", "Retrieve Network Prefixes", "Registering Network Prefixes", "Retrieving Addresses", "Registering Addresses", "Verifying" }; */ typedef int (*Func)(int,int,Msgs *); static Func state_functions[STATES] = { state_stopped, state_failing, state_establishing, state_config, state_retrievePrefixes, state_registerPrefixes, state_retrieveAddresses, state_registerAddresses, state_verify }; AsnOid *esi_oid = NULL; int retries = 0; int ilmi_errno = 0; int alarm_flag = 0; long int requestID = 0; State ilmi_state = down; static int diagfd = -1; AttPoint _apoint; AttPoint *apoint = &_apoint; /* attachment point */ Config _config; Config *config = &_config; /* Remote IME configuration */ SysGroup _remsys; SysGroup *remsys = &_remsys; AttPoint _newapoint; AttPoint *newapoint = &_newapoint; void usage( char * ); void ilmi_loop( int, int ); void usage( char *name ){ fprintf(stderr, "usage: %s [-b] [-d] [-v] [-l logfile] [-x] [-q qos]\n" "%13s[ -i local_ip ] [ -u uni ] [..]\n",name,""); fprintf(stderr, "%6s %s -V\n","",name); exit(1); } /* returns non-zero if switch set a prefix */ int handle_set_request( int fd, int itf, Msgs *msgs, Message *m ){ VarBindList *vbl; VarBind *varbind; AsnOid *netprefix_oid, *set_oid; /* use varbind to compare OIDs of incoming message and that of an address status message */ varbind = (VarBind *)FIRST_LIST_ELMT( m->data->a.get_request->variable_bindings ); if( AsnOidCompare( &atmfNetPrefixStatus, &varbind->name ) == AsnOidRoot ){ vbl = msgs->set->data->a.set_request->variable_bindings; set_oid = &((VarBind *)FIRST_LIST_ELMT( vbl ))->name; netprefix_oid = accessNetPrefix(); if( netprefix_oid != NULL ){ diag( COMPONENT, DIAG_INFO, "switch registered a network prefix"); set_oid->octetLen = ADDRESS_LEN + 1; AsnOidAppend( set_oid, netprefix_oid ); AsnOidAppend( set_oid, esi_oid ); update_nsap( itf, netprefix_oid, esi_oid ); return 1; } else{ diag( COMPONENT, DIAG_INFO, "switch did not register prefix?" ); } } return 0; } /* returns E value (ECOLDSTART, . . .) */ int handle_request( int fd, int itf, Msgs *msgs, Message *in_message ){ int retval = 0; switch( in_message->data->choiceId ){ case PDUS_GET_REQUEST: diag(COMPONENT, DIAG_INFO, "received get request"); MIBget(in_message->data->a.get_next_request->variable_bindings, &in_message->data->a.get_next_request->error_status, &in_message->data->a.get_next_request->error_index); in_message->data->choiceId = PDUS_GET_RESPONSE; send_message(fd, in_message); break; case PDUS_GET_NEXT_REQUEST: diag(COMPONENT, DIAG_INFO, "received get-next request"); MIBgetnext(in_message->data->a.get_next_request->variable_bindings, &in_message->data->a.get_next_request->error_status, &in_message->data->a.get_next_request->error_index); in_message->data->choiceId = PDUS_GET_RESPONSE; send_message(fd, in_message); break; case PDUS_SET_REQUEST: diag(COMPONENT, DIAG_INFO, "received set request"); MIBset(in_message->data->a.set_request->variable_bindings, &in_message->data->a.set_request->error_status, &in_message->data->a.set_request->error_index); in_message->data->choiceId = PDUS_GET_RESPONSE; if( handle_set_request( fd, itf, msgs, in_message )) retval = ESETPREFIX; send_message(fd, in_message); break; case PDUS_TRAP: if( in_message->data->a.trap->generic_trap == COLDSTART ){ diag( COMPONENT, DIAG_INFO, "received coldstart trap" ); retval = ECOLDSTART; } else diag( COMPONENT, DIAG_INFO, "received trap" ); break; case PDUS_GET_RESPONSE: break; } return retval; } /* if a non-null value is returned from this function, the caller must free that memory */ Message *wait_for_response( int fd, int itf, Msgs *msgs, int sec ){ Message *in_message; static Message m; struct timeval timeout; int numfds = 0; fd_set fdvar; in_message = (Message *)(&m); timeout.tv_sec = sec; timeout.tv_usec = 0; ilmi_errno = 0; wait_top: waitpid(0, NULL, WNOHANG); ResetNibbleMem(); FD_ZERO(&fdvar); FD_SET(fd, &fdvar); FD_SET(diagfd, &fdvar); numfds = select(MAX(fd,diagfd)+1, &fdvar, NULL, NULL, &timeout); if ((numfds > 0) && FD_ISSET(diagfd, &fdvar)) { if (fork() == 0) { close(fd); handle_ilmidiag(diagfd, apoint, config); exit(0); } } if(( numfds > 0 ) && FD_ISSET(fd, &fdvar) && !read_message( fd, in_message )){ switch( in_message->data->choiceId ){ case PDUS_GET_REQUEST: case PDUS_GET_NEXT_REQUEST: case PDUS_SET_REQUEST: case PDUS_TRAP: ilmi_errno = handle_request( fd, itf, msgs, in_message ); if( ilmi_errno > 0 ) return NULL; else goto wait_top; /* no more evil than "break" */ case PDUS_GET_RESPONSE: diag( COMPONENT, DIAG_INFO, "received get-response" ); return in_message; default: diag( COMPONENT, DIAG_ERROR, "received message with invalid choice" ); goto wait_top; } } else{ if( numfds == 0 ) ilmi_errno = ETIMEOUT; if(( numfds < 0 ) && ( errno == EINTR )) ilmi_errno = EALARM; return NULL; /* no data read */ } } Msgs *create_msgs( void ){ Msgs *m = alloc_t( Msgs ); if( m == NULL ) return NULL; m->coldstart = create_coldstart_message(); m->addrtable = create_va_getnext_message( 2, &atmfAddressStatus, &atmfSrvcRegTable ); m->poll = create_getnext_message( atmfAddressTable ); m->set = create_set_message(); m->config = create_va_get_message( 6, &atmfAtmLayerUniVersion, &atmfAtmLayerMaxVpiBits, &atmfAtmLayerMaxVciBits, &atmfAtmLayerUniType, &atmfAtmLayerDeviceType, &atmfAddressRegistrationAdminStatus ); m->apointmsg = create_va_get_message( 4, &atmfPortMyIdentifier, &atmfPortMyIfName, /* some extra adjacency info */ &atmfMySystemIdentifier, &sysUpTime ); m->sysmsg = create_va_get_message( 7, &sysDescr, &sysObjectID, &sysUpTime, &sysContact, &sysName, &sysLocation, &sysServices ); return m; } void copy_attachment_point( AttPoint *dest, AttPoint *src ){ dest->sysUpTime = src->sysUpTime; dest->atmfPortMyIfIdentifier = src->atmfPortMyIfIdentifier; dest->atmfMySystemIdentifier.octs = malloc( src->atmfMySystemIdentifier.octetLen ); dest->atmfMySystemIdentifier.octetLen = src->atmfMySystemIdentifier.octetLen; if( dest->atmfMySystemIdentifier.octs != NULL ){ memcpy( dest->atmfMySystemIdentifier.octs, src->atmfMySystemIdentifier.octs, 6 ); } else diag( COMPONENT, DIAG_FATAL, "malloc() failed" ); /* copy the port name */ dest->atmfPortMyIfName.octs = malloc( src->atmfPortMyIfName.octetLen + 1 ); dest->atmfPortMyIfName.octetLen = src->atmfPortMyIfName.octetLen; if( dest->atmfPortMyIfName.octs != NULL ){ memcpy( dest->atmfPortMyIfName.octs, src->atmfPortMyIfName.octs, src->atmfPortMyIfName.octetLen ); } else diag( COMPONENT, DIAG_FATAL, "malloc() failed" ); } /* section 8.3.2 */ int compare_attachment_point( a, b ) AttPoint *a; /* current a'point */ AttPoint *b; /* newly aquired a'point info */ { if(( a == NULL ) || ( b == NULL )) return -1; if( a->atmfPortMyIfIdentifier != b->atmfPortMyIfIdentifier ) return -1; if( a->atmfMySystemIdentifier.octetLen != b->atmfMySystemIdentifier.octetLen ) return -1; if( memcmp( a->atmfMySystemIdentifier.octs, b->atmfMySystemIdentifier.octs, b->atmfMySystemIdentifier.octetLen ) != 0 ) return -1; if( b->sysUpTime < a->sysUpTime ) return -1; return 0; } void handler( int sig ){ switch( sig ){ case SIGALRM: alarm_flag = 1; diag( COMPONENT, DIAG_INFO, "received alarm: time to poll for attachment point" ); break; case SIGTERM: case SIGSTOP: case SIGINT: case SIGKILL: ilmi_state = down; exit( 1 ); } } void ilmi_loop( int fd, int itf ){ int state = S1; Msgs *msgs = create_msgs(); struct itimerval setpoint; esi_oid = get_esi( fd, itf); // apoint->atmfMySystemIdentifier.octs = &(apoint->sysIdMem[0]); setpoint.it_interval.tv_sec = 30; setpoint.it_interval.tv_usec = 0; setpoint.it_value.tv_sec = 30; setpoint.it_value.tv_usec = 0; signal( SIGALRM, handler ); setitimer( ITIMER_REAL, &setpoint, NULL ); for( ;; ) state = state_functions[state]( fd, itf, msgs ); } int main(int argc, char *argv[]) { int opt, bg = 0; int fd; pid_t pid; const char *qos; struct sockaddr_atmpvc ilmipvc; set_application("ilmid"); set_verbosity(NULL, DIAG_WARN); text2atm("0.0.16", (struct sockaddr *)&ilmipvc, sizeof(ilmipvc), T2A_PVC); qos = NULL; while((opt = getopt(argc, argv, "bdhi:l:q:xvu:V")) != EOF) switch (opt) { case 'd': set_verbosity(NULL, DIAG_INFO); break; case 'v': set_verbosity(NULL, DIAG_DEBUG); break; case 'b': bg = 1; break; case 'i': { uint32_t ip; ip = text2ip(optarg,NULL,T2I_ERROR); if (!ip) return 1; set_local_ip(ip); } break; case 'l': set_logfile(optarg); break; case 'q': qos = optarg; break; case 'x': no_var_bindings = 1; break; case 'u': { int version = 2; if (!strcmp(optarg,"3.0") || !strcmp(optarg,"30")) version = 2; // version3point0(2) else if (!strcmp(optarg,"3.1") || !strcmp(optarg,"31")) version = 3; // version3point1(3) else if (!strcmp(optarg,"4.0") || !strcmp(optarg,"40")) version = 4; // version4point0(4) else usage(argv[0]); #ifdef DYNAMIC_UNI atmfAtmLayerUniVersionValue = version; #else if (atmfAtmLayerUniVersionValue != version) { fprintf(stderr,"UNI version not available\n"); exit(1); } #endif } break; case 'V': printf("%s\n",VERSION); return 0; case 'h': default: usage(argv[0]); } if(argc == optind + 1) if (text2atm(argv[optind++], (struct sockaddr *)&ilmipvc, sizeof(ilmipvc), T2A_PVC) < 0) { char *endp = NULL; int itf = strtoul(argv[optind-1], &endp, 0); if (argv[optind-1] == endp || *endp != '\0') diag(COMPONENT, DIAG_FATAL, "Invalid pvc or interface number."); ilmipvc.sap_addr.itf = itf; } if(argc != optind) usage(argv[0]); diag(COMPONENT, DIAG_INFO, "Linux ATM ILMI, version %s", VERSION); if(bg) { pid = fork(); if(pid < 0) diag(COMPONENT, DIAG_FATAL, "fork: %s", strerror(errno)); if(pid > 0) exit(0); } InitNibbleMem(1024, 512); memset( remsys, 0, sizeof( _remsys )); memset( apoint, 0, sizeof( _apoint )); memset( newapoint, 0, sizeof( _newapoint )); signal( SIGTERM, handler ); signal( SIGKILL, handler ); signal( SIGINT, handler ); signal( SIGSTOP, handler ); fd = open_ilmi(&ilmipvc,qos); open_ilmidiag(&diagfd, &ilmipvc); ilmi_loop(fd, ilmipvc.sap_addr.itf); close(fd); return 0; } linux-atm-2.5.1/src/ilmid/ilmid.h0000644000200100001440000000313610645200135015413 0ustar chasusers#ifndef __ILMID_H #define __ILMID_H #define ECOLDSTART 1 #define ETIMEOUT 2 #define ESETPREFIX 3 #define EALARM 4 #include "message.h" #include "asn1/asn_incl.h" typedef struct { Message *apointmsg; Message *coldstart; Message *addrtable; Message *poll; Message *set; Message *config; Message *sysmsg; } Msgs; typedef struct attachment_point { AsnOcts atmfPortMyIfName; AsnInt atmfPortMyIfIdentifier; AsnOcts atmfMySystemIdentifier; AsnInt sysUpTime; // char sysIdMem[6]; } AttPoint; typedef struct configuration_info { AsnInt atmfAtmLayerUniVersion; AsnInt atmfAtmLayerMaxVpiBits; AsnInt atmfAtmLayerMaxVciBits; AsnInt atmfAtmLayerUniType; AsnInt atmfAtmLayerDeviceType; AsnInt atmfAddressRegistrationAdminStatus; } Config; typedef struct __sysgroup { AsnOcts sysDescr; AsnOcts sysObjectID; AsnInt sysUpTime; AsnOcts sysContact; AsnOcts sysName; AsnOcts sysLocation; AsnInt sysServices; } SysGroup; typedef enum _State { up, down } State; #define ATM_REMOTE_SYSNAME_LEN 15 #define ATM_REMOTE_CONTACT_LEN 30 #define ATM_REMOTE_PORTNAME_LEN 10 #define ILMIDIAG_DIR "/tmp/.ilmi" #define ILMIDIAG_BACKLOG 1 struct ilmi_state { unsigned char ilmi_version; /* ilmi version */ unsigned char uni_version; /* negotiated signalling version */ unsigned char vpi_bits; /* negotiated vpi bits */ unsigned char vci_bits; /* negotiated vci bits */ unsigned char state; /* up/down */ unsigned int remote_portid; /* id of switch port we're using */ char remote_sysname[ATM_REMOTE_SYSNAME_LEN]; char remote_contact[ATM_REMOTE_CONTACT_LEN]; char remote_portname[ATM_REMOTE_PORTNAME_LEN]; }; #endif linux-atm-2.5.1/src/ilmid/ilmidiag.c0000644000200100001440000000527310664056457016114 0ustar chasusers#include #include #include #include #include #include #include #include #include #include #include #include "ilmid.h" static const char *ilmiver[4] = { "", "unsupported", "4.0", "undefined" }; static const char *univer[6] = { "", "", "3.0", "3.1", "4.0", "undefined" }; const char *struni(int ver){ switch(ver){ case 2: return univer[2]; case 3: return univer[3]; case 4: return univer[4]; } return univer[5]; } const char *strilmi(int ver){ switch(ver){ case 1: return ilmiver[1]; case 2: return ilmiver[2]; } return ilmiver[3]; } int main(int argc, char **argv){ int fd; struct ilmi_state ic; struct sockaddr_un addr; struct sockaddr_atmpvc vc; if(argc > 2){ fprintf(stderr, "usage: %s []\n", argv[0]); fprintf(stderr, " Default pvc is 0.0.16\n"); return 1; } if (argc == 1) text2atm("0.0.16", (struct sockaddr *)&vc, sizeof(vc), T2A_PVC); else if (text2atm(argv[1], (struct sockaddr *)&vc, sizeof(vc), T2A_PVC) < 0) { fprintf(stderr, "invalid pvc\n"); return 1; } fd = socket(AF_UNIX, SOCK_STREAM, 0); if(fd < 0){ fprintf(stderr, "Could not open socket.\n"); return 1; } memset(&addr, 0, sizeof(addr)); snprintf(addr.sun_path, sizeof(addr.sun_path) - 1, "%s/%d.%d.%d", ILMIDIAG_DIR, vc.sap_addr.itf, vc.sap_addr.vpi, vc.sap_addr.vci); addr.sun_family = AF_UNIX; if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { fprintf(stderr, "unable to connect (ilmid running?)\n"); return 1; } if (read(fd, &ic, sizeof(ic)) < sizeof(ic)) { fprintf(stderr, "read failed\n"); return 1; } printf("\n"); printf("%-15.15s%-15.15s%-15.15s%-15.15s%-15.15s\n", "Ilmi", "Uni", "VPI", "VCI", "Ilmi"); printf("%-15.15s%-15.15s%-15.15s%-15.15s%-15.15s\n", "Version", "Version", "Bits", "Bits", "State"); printf("---------------------------------------" "------------------------------------\n"); printf("%-15s%-15s%-15d%-15d%-15s\n", strilmi(ic.ilmi_version), struni(ic.uni_version), ic.vpi_bits, ic.vci_bits, (ic.state == 1) ? "Up" : "Down"); printf("\n"); printf("%-15.15s%-15.15s%-15.15s%-15.15s\n", "Remote", "Remote", "Remote", "Remote"); printf("%-15.15s%-15.15s%-15.15s%-15.15s\n", "Port Id", "Port Name", "Sysname", "Contact"); printf("---------------------------------------" "------------------------------------\n"); printf("%-15d%-15.15s%-15.15s%-30.30s\n", ic.remote_portid, ic.remote_portname, ic.remote_sysname, ic.remote_contact); printf("\n"); return 0; } linux-atm-2.5.1/src/ilmid/io.c0000644000200100001440000002663710645200135014732 0ustar chasusers/* * io.c - Ilmi input/output routines * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include "ilmid.h" #include "io.h" #include "atmd.h" #include "atmf_uni.h" #define SNMP_VCI 16 #define COMPONENT "IO" #define MAX_EXTRA_ADDRS 4 /* maximum number of additional addresses that can be manually configured (after ilmid has registered the "official" address) - HACK */ extern SysGroup *remsys; extern State ilmi_state; static short atm_itf = -1; /* bad value */ AsnOid *get_esi(int fd, int itf) { static AsnOid *name; struct atmif_sioc req; unsigned char esi[ESI_LEN]; int m, n, size; req.number = itf; req.arg = esi; req.length = ESI_LEN; if(ioctl(fd, ATM_GETESI, &req) < 0) diag(COMPONENT, DIAG_FATAL, "ioctl ATM_GETESI: %s", strerror(errno)); /* save esi to atmfMySystemIdentifierValue */ if (!atmfMySystemIdentifierValue.octs) { atmfMySystemIdentifierValue.octs = alloc(6); memcpy(atmfMySystemIdentifierValue.octs, esi, 6); } /* Convert hex string to Object ID BER */ for(m = 0, size = 0; m < ESI_LEN; esi[m++] & 0x80 ? size += 2 : size++); size++; name = alloc_t(AsnOid); name->octs = alloc(size); name->octetLen = size; for(m = 0, n = 0; m < ESI_LEN; m++, n++) { if(esi[m] & 0x80) name->octs[n++] = '\201'; name->octs[n] = esi[m] & 0x7F; } /* Add the SEL */ name->octs[n] = '\0'; return name; } void add_lecs(int itf, char *lecs) { int fd; struct atmif_sioc req; struct sockaddr_atmsvc addr; memset(&addr, 0, sizeof(addr)); addr.sas_family = AF_ATMSVC; memcpy(&addr.sas_addr.prv, lecs, 20); if ((fd = socket(AF_ATMSVC, SOCK_DGRAM, 0)) < 0){ diag(COMPONENT, DIAG_ERROR, "socket: %s", strerror(errno)); return; } req.number = itf; req.arg = &addr; req.length = sizeof(addr); #ifdef ATM_ADDLECSADDR if (ioctl(fd, ATM_ADDLECSADDR, &req) < 0) diag(COMPONENT, DIAG_DEBUG, "ioctl ATM_ADDLECSADDR: %s", strerror(errno)); #else diag(COMPONENT, DIAG_DEBUG, "missing ATM_ADDLECSADDR support"); #endif close(fd); return; } void update_nsap(int itf, AsnOid *netprefix, AsnOid *esi) { struct atmif_sioc req; struct sockaddr_atmsvc addr, ouraddr[MAX_EXTRA_ADDRS+1]; char buffer[MAX_ATM_ADDR_LEN+1]; int fd, m, n; addr.sas_family = AF_ATMSVC; addr.sas_addr.pub[0] = 0; /* Convert net prefix BER to hex */ for(m = 0, n = 0; m < netprefix->octetLen; m++, n++) if(netprefix->octs[m] & 0x80) addr.sas_addr.prv[n] = netprefix->octs[++m] | 0x80; else addr.sas_addr.prv[n] = netprefix->octs[m]; /* Convert esi BER to hex */ for(m = 0; m < esi->octetLen; m++, n++) if(esi->octs[m] & 0x80) addr.sas_addr.prv[n] = esi->octs[++m] | 0x80; else addr.sas_addr.prv[n] = esi->octs[m]; if ((fd = socket(AF_ATMSVC, SOCK_DGRAM, 0)) < 0) diag(COMPONENT, DIAG_FATAL, "socket: %s", strerror(errno)); req.number = itf; req.arg = &ouraddr; req.length = sizeof(ouraddr); /* Try to get our address on that interface */ if (ioctl(fd, ATM_GETADDR, &req) <0) diag(COMPONENT, DIAG_FATAL, "ioctl ATM_GETADDR: %s", strerror(errno)); n = 0; if (req.length && atm_equal((struct sockaddr *) &addr, (struct sockaddr *) &ouraddr[0], ATM_ESA_LEN, 0)) { diag(COMPONENT, DIAG_INFO, "Primary ATM Address did not change"); n = 1; } if ((!(m = req.length)) || (!n)) { req.number = itf; req.arg = NULL; req.length = 0; if (ioctl(fd, ATM_RSTADDR, &req) < 0) diag(COMPONENT, DIAG_FATAL, "ioctl ATM_RSTADDR: %s", strerror(errno)); req.number = itf; req.arg = &addr; req.length = sizeof(addr); if (ioctl(fd, ATM_ADDADDR, &req) < 0) diag(COMPONENT, DIAG_FATAL, "ioctl ATM_ADDADDR: %s", strerror(errno)); atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) &addr, A2T_PRETTY); diag(COMPONENT, DIAG_INFO, "Primary ATM Address %s added local", buffer); for (n = 0; n < m/sizeof(addr); n++) { if(n > MAX_EXTRA_ADDRS-1) break; /* We have already registered "primary" NSAP */ req.number = itf; req.arg = &ouraddr[n]; req.length = sizeof(*ouraddr); atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) &ouraddr[n], A2T_PRETTY); if (ioctl(fd, ATM_ADDADDR, &req) < 0) diag(COMPONENT, DIAG_ERROR, "ioctl ATM_ADDADDR: %s", strerror(errno)); else diag(COMPONENT, DIAG_INFO, "Extra ATM Address %s added local", buffer); } } close(fd); } int wait_for_message(int fd, struct timeval *timeout) { int numfds; fd_set fdvar; FD_ZERO(&fdvar); FD_SET(fd, &fdvar); if((numfds = select(fd + 1, &fdvar, 0, 0, timeout)) < 0){ if( errno != EINTR ) diag(COMPONENT, DIAG_FATAL, "select: %s", strerror(errno)); } return numfds; } int read_message(int fd, Message *message) { SBuf buffer; char data[MAX_ILMI_MSG]; AsnLen length; jmp_buf env; if ((int) (length = read(fd, data, MAX_ILMI_MSG)) < 0) diag(COMPONENT, DIAG_FATAL, "read: %s", strerror(errno)); SBufInstallData(&buffer, data, length); if (setjmp(env) == 0) { BDecMessage(&buffer, message, &length, env); } else { diag(COMPONENT, DIAG_ERROR, "message decoding error"); return -1; } diag(COMPONENT, DIAG_DEBUG, "SNMP message received:"); if(get_verbosity(NULL) == DIAG_DEBUG) PrintMessage(get_logfile(), message, 0); if(message->version != VERSION_1) { diag(COMPONENT, DIAG_ERROR, "received message with wrong version number"); return -1; } if(message->community.octetLen != 4 || memcmp(message->community.octs, "ILMI", 4)) { diag(COMPONENT, DIAG_ERROR, "received message with wrong community"); return -1; } return 0; } int send_message(int fd, Message *message) { SBuf buffer; AsnLen length; char data[MAX_ILMI_MSG]; SBufInit(&buffer, data, MAX_ILMI_MSG); SBufResetInWriteRvsMode(&buffer); if(!(length = BEncMessage(&buffer, message))) { diag(COMPONENT, DIAG_ERROR, "message encoding error"); return -1; } if(write(fd, SBufDataPtr(&buffer), length) != length) diag(COMPONENT, DIAG_FATAL, "write: %s", strerror(errno)); diag(COMPONENT, DIAG_DEBUG, "SNMP message sent:"); if(get_verbosity(NULL) == DIAG_DEBUG) PrintMessage(get_logfile(), message, 0); return 0; } int open_ilmi(struct sockaddr_atmpvc *pvc, const char *qos_spec) { struct atm_qos qos; int fd; if((fd = socket(PF_ATMPVC, SOCK_DGRAM, 0)) < 0) diag(COMPONENT, DIAG_FATAL, "socket: %s", strerror(errno)); atm_itf = pvc->sap_addr.itf; memset(&qos, 0, sizeof(qos)); qos.rxtp.max_sdu = MAX_ILMI_MSG; qos.txtp.max_sdu = MAX_ILMI_MSG; qos.aal = ATM_AAL5; if (!qos_spec) qos.rxtp.traffic_class = qos.txtp.traffic_class = ATM_UBR; else if (text2qos(qos_spec,&qos,T2Q_DEFAULTS) < 0) diag(COMPONENT,DIAG_FATAL,"invalid qos: %s",qos_spec); if (setsockopt(fd, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) diag(COMPONENT,DIAG_FATAL,"setsockopt SO_ATMQOS: %s",strerror(errno)); if(bind(fd, (struct sockaddr *) pvc, sizeof(*pvc)) < 0) diag(COMPONENT, DIAG_FATAL, "bind: %s", strerror(errno)); return fd; } int get_ci_range(struct atm_cirange *ci) { struct atmif_sioc req; int fd,error; fd = socket(PF_ATMPVC,SOCK_DGRAM,0); if (fd < 0) diag(COMPONENT,DIAG_FATAL,"socket: %s",strerror(errno)); req.number = atm_itf; req.length = sizeof(*ci); req.arg = ci; error = ioctl(fd,ATM_GETCIRANGE,&req); (void) close(fd); if (error < 0) { diag(COMPONENT,DIAG_ERROR,"ioctl ATM_GETCIRANGE: %s",strerror(errno)); return error; } return 0; } int open_ilmidiag(int *listenfd, const struct sockaddr_atmpvc *vc) { int fd = -1; struct sockaddr_un addr; struct stat dir; mode_t oldumask; /* check for directory that holds the sockets */ if ((stat(ILMIDIAG_DIR, &dir) < 0) && (errno == ENOENT)) { if (mkdir(ILMIDIAG_DIR, 0755) < 0) return -1; else diag(COMPONENT, DIAG_DEBUG, "Created directory " ILMIDIAG_DIR); } fd = socket(AF_UNIX, SOCK_STREAM, 0); if (fd < 0) return -1; memset(&addr, 0, sizeof(addr)); snprintf(addr.sun_path, sizeof(addr.sun_path) - 1, "%s/%d.%d.%d", ILMIDIAG_DIR, vc->sap_addr.itf, vc->sap_addr.vpi, vc->sap_addr.vci); addr.sun_family = AF_UNIX; unlink(addr.sun_path); oldumask = umask(0); if (bind(fd, (struct sockaddr *)&addr, SUN_LEN(&addr)) < 0) { diag(COMPONENT, DIAG_ERROR, "unable to bind ilmidiag socket: " "%s", strerror(errno)); close(fd); unlink(addr.sun_path); umask(oldumask); return -1; } umask(oldumask); if (listen(fd, ILMIDIAG_BACKLOG) < 0) { diag(COMPONENT, DIAG_FATAL, "Unable to listen on diag socket:" " %s", strerror(errno)); close(fd); unlink(addr.sun_path); return -1; } *listenfd = fd; return 0; } int handle_ilmidiag(int fd, AttPoint *apoint, Config *config) { struct sockaddr_un incoming; socklen_t inlen = sizeof(incoming); struct atm_cirange cir; struct ilmi_state ic; int newfd = accept(fd, (struct sockaddr *)&incoming, &inlen); if (newfd < 0) return -1; /* Since this is a unix socket, there's no need to be portable. */ memset( &ic, 0, sizeof( ic )); ic.ilmi_version = 2; /* version4point0 */ ic.uni_version = atmfAtmLayerUniVersionValue & 0xff; if( get_ci_range( &cir ) < 0 ) diag( COMPONENT, DIAG_ERROR, "get_ci_range() failed" ); else{ if( cir.vpi_bits < config->atmfAtmLayerMaxVpiBits ) ic.vpi_bits = cir.vpi_bits; else ic.vpi_bits = config->atmfAtmLayerMaxVpiBits & 0xff; if( cir.vci_bits < config->atmfAtmLayerMaxVciBits ) ic.vci_bits = cir.vci_bits; else ic.vci_bits = config->atmfAtmLayerMaxVciBits & 0xff; } ic.state = ( ilmi_state == down ) ? 0 : 1; if( remsys->sysName.octs ) strncpy( ic.remote_sysname, remsys->sysName.octs, ( remsys->sysName.octetLen < ATM_REMOTE_SYSNAME_LEN ) ? remsys->sysName.octetLen : ATM_REMOTE_SYSNAME_LEN ); else strncpy( ic.remote_sysname, "(empty)", 7 ); if( remsys->sysContact.octs ) strncpy( ic.remote_contact, remsys->sysContact.octs, ( remsys->sysContact.octetLen < ATM_REMOTE_CONTACT_LEN ) ? remsys->sysContact.octetLen : ATM_REMOTE_CONTACT_LEN ); else strncpy( ic.remote_contact, "(empty)", 7 ); ic.remote_portid = apoint->atmfPortMyIfIdentifier; if( apoint->atmfPortMyIfName.octs ) strncpy( ic.remote_portname, apoint->atmfPortMyIfName.octs, ( apoint->atmfPortMyIfName.octetLen < ATM_REMOTE_PORTNAME_LEN ) ? apoint->atmfPortMyIfName.octetLen : ATM_REMOTE_PORTNAME_LEN ); else strncpy( ic.remote_portname, "(empty)", 7 ); write(newfd, &ic, sizeof(ic)); close(newfd); exit(0); } linux-atm-2.5.1/src/ilmid/io.h0000644000200100001440000000273310645200135014726 0ustar chasusers/* * io.h - Ilmi input/output routines * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #ifndef IO_H #define IO_H #include #include #include #include "ilmid.h" #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" #define MAX_ILMI_MSG 484 AsnOid *get_esi(int fd, int itf); void update_nsap(int itf, AsnOid *netprefix, AsnOid *esi); int wait_for_message(int fd, struct timeval *timeout); int read_message(int fd, Message *message); int send_message(int fd, Message *message); int open_ilmi(struct sockaddr_atmpvc *, const char *qos_spec); int get_ci_range(struct atm_cirange *ci); void add_lecs(int itf, char *lecs); int open_ilmidiag(int *listenfd, const struct sockaddr_atmpvc *); int handle_ilmidiag(int fd, AttPoint *apoint, Config *config); #endif linux-atm-2.5.1/src/ilmid/message.c0000644000200100001440000001712007706331407015745 0ustar chasusers/* * message.c - commonly used ilmi messages * * Written by Scott W. Shumate * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #if HAVE_CONFIG_H #include #endif #include #include #include "message.h" #include "atmf_uni.h" #include "util.h" #include "sysgroup.h" int no_var_bindings = 0; // AsnOid atmAddressStatus = {ADDRESS_LEN, ADDRESS_OID}; Message *create_va_getnext_message( int n, ... ){ Message *m = alloc_t( Message ); VarBind *entry; AsnOid *what; va_list ap; int count; if( m == NULL ) return NULL; m->version = VERSION_1; m->community.octs = "ILMI"; m->community.octetLen = 4; m->data = alloc_t( PDUs ); m->data->choiceId = PDUS_GET_NEXT_REQUEST; m->data->a.get_next_request = alloc_t( GetRequest_PDU ); m->data->a.get_next_request->error_status = 0; m->data->a.get_next_request->error_index = 0; m->data->a.get_next_request->variable_bindings = alloc_t( VarBindList ); AsnListInit( m->data->a.get_next_request->variable_bindings, sizeof( VarBind )); va_start( ap, n ); count = 0; while( count < n ){ what = va_arg( ap, AsnOid* ); entry = AppendVarBind( m->data->a.get_next_request->variable_bindings ); entry->name.octs = alloc( what->octetLen ); entry->name.octetLen = what->octetLen; memcpy( entry->name.octs, what->octs, what->octetLen ); entry->value = alloc_t( ObjectSyntax ); entry->value->choiceId = OBJECTSYNTAX_SIMPLE; entry->value->a.simple = alloc_t( SimpleSyntax ); entry->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; count++; } va_end(ap); return m; } Message *create_va_get_message( int n, ... ){ Message *m = alloc_t( Message ); VarBind *entry; AsnOid *what; va_list ap; int count; if( m == NULL ) return NULL; m->version = VERSION_1; m->community.octs = "ILMI"; m->community.octetLen = 4; m->data = alloc_t( PDUs ); m->data->choiceId = PDUS_GET_REQUEST; m->data->a.get_request = alloc_t( GetRequest_PDU ); m->data->a.get_request->error_status = 0; m->data->a.get_request->error_index = 0; m->data->a.get_request->variable_bindings = alloc_t( VarBindList ); AsnListInit( m->data->a.get_request->variable_bindings, sizeof( VarBind )); va_start( ap, n ); count = 0; while( count < n ){ what = va_arg( ap, AsnOid* ); entry = AppendVarBind( m->data->a.get_request->variable_bindings ); entry->name.octs = alloc( what->octetLen ); entry->name.octetLen = what->octetLen; memcpy( entry->name.octs, what->octs, what->octetLen ); entry->value = alloc_t( ObjectSyntax ); entry->value->choiceId = OBJECTSYNTAX_SIMPLE; entry->value->a.simple = alloc_t( SimpleSyntax ); entry->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; count++; } va_end(ap); return m; } Message *create_get_message( AsnOid what ){ return create_va_get_message( 1, &what ); } Message *create_getnext_message( AsnOid what ){ return create_va_getnext_message( 1, &what ); } #ifdef notdef Message *create_poll_message(void) { Message *poll_message; VarBind *entry; poll_message = alloc_t(Message); poll_message->version = VERSION_1; poll_message->community.octs = "ILMI"; poll_message->community.octetLen = 4; poll_message->data = alloc_t(PDUs); poll_message->data->choiceId = PDUS_GET_NEXT_REQUEST; poll_message->data->a.get_next_request = alloc_t(GetNextRequest_PDU); poll_message->data->a.get_next_request->error_status = 0; poll_message->data->a.get_next_request->error_index = 0; poll_message->data->a.get_next_request->variable_bindings = alloc_t(VarBindList); AsnListInit(poll_message->data->a.get_next_request->variable_bindings, sizeof(VarBind)); entry = AppendVarBind(poll_message->data->a.get_next_request->variable_bindings); entry->name.octs = alloc(ADDRESS_LEN); entry->name.octetLen = ADDRESS_LEN; memcpy(entry->name.octs, ADDRESS_OID, ADDRESS_LEN); entry->value = alloc_t(ObjectSyntax); entry->value->choiceId = OBJECTSYNTAX_SIMPLE; entry->value->a.simple = alloc_t(SimpleSyntax); entry->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; entry->value->a.simple->a.number = 0; return poll_message; } #endif Message *create_set_message(void) { Message *set_message; VarBind *entry; set_message = alloc_t(Message); set_message->version = VERSION_1; set_message->community.octs = "ILMI"; set_message->community.octetLen = 4; set_message->data = alloc_t(PDUs); set_message->data->choiceId = PDUS_SET_REQUEST; set_message->data->a.set_request = alloc_t(SetRequest_PDU); set_message->data->a.set_request->error_status = 0; set_message->data->a.set_request->error_index = 0; set_message->data->a.set_request->variable_bindings = alloc_t(VarBindList); AsnListInit(set_message->data->a.set_request->variable_bindings, sizeof(VarBind)); entry = AppendVarBind(set_message->data->a.set_request->variable_bindings); /* Allocate enough memory to hold the largest possible address */ entry->name.octs = alloc(ADDRESS_LEN + 41); entry->name.octetLen = ADDRESS_LEN + 1; memcpy(entry->name.octs, ADDRESS_OID, ADDRESS_LEN); entry->name.octs[ADDRESS_LEN] = '\24'; /* 20 octet address */ entry->value = alloc_t(ObjectSyntax); entry->value->choiceId = OBJECTSYNTAX_SIMPLE; entry->value->a.simple = alloc_t(SimpleSyntax); entry->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; entry->value->a.simple->a.number = 1; return set_message; } Message *create_coldstart_message(void) { Message *trap_message; VarBind *entry; trap_message = alloc_t(Message); trap_message->version = VERSION_1; trap_message->community.octs = "ILMI"; trap_message->community.octetLen = 4; trap_message->data = alloc_t(PDUs); trap_message->data->choiceId = PDUS_TRAP; trap_message->data->a.trap = alloc_t(Trap_PDU); trap_message->data->a.trap->enterprise.octs = "\53\06\01\04\01\03\01\01"; trap_message->data->a.trap->enterprise.octetLen = 8; trap_message->data->a.trap->agent_addr = alloc_t(NetworkAddress); trap_message->data->a.trap->agent_addr->choiceId = NETWORKADDRESS_INTERNET; trap_message->data->a.trap->agent_addr->a.internet = alloc_t(IpAddress); trap_message->data->a.trap->agent_addr->a.internet->octetLen = 4; trap_message->data->a.trap->agent_addr->a.internet->octs = "\0\0\0\0"; trap_message->data->a.trap->generic_trap = COLDSTART; trap_message->data->a.trap->specific_trap = 0; trap_message->data->a.trap->time_stamp = 0; trap_message->data->a.trap->variable_bindings = alloc_t(VarBindList); if (no_var_bindings) AsnListInit(trap_message->data->a.trap->variable_bindings,0); else { AsnListInit(trap_message->data->a.trap->variable_bindings, sizeof(VarBind)); entry = AppendVarBind(trap_message->data->a.trap->variable_bindings); entry->name.octs = "\53\06\01\02\01\01\03\00"; entry->name.octetLen = 8; entry->value = alloc_t(ObjectSyntax); entry->value->choiceId = OBJECTSYNTAX_SIMPLE; entry->value->a.simple = alloc_t(SimpleSyntax); entry->value->a.simple->choiceId = SIMPLESYNTAX_EMPTY; entry->value->a.simple->a.empty = '\0'; } return trap_message; } linux-atm-2.5.1/src/ilmid/message.h0000644000200100001440000000252107706331407015751 0ustar chasusers/* * message.h - commonly used ilmi messages * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #ifndef MESSAGE_H #define MESSAGE_H #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" #define ADDRESS_LEN 13 #define ADDRESS_OID "\53\06\01\04\01\202\141\02\06\01\01\03\0" extern int no_var_bindings; //AsnOid atmAddressStatus; Message *create_poll_message(void); Message *create_set_message(void); Message *create_coldstart_message(void); Message *create_va_getnext_message( int, ... ); Message *create_va_get_message( int, ... ); Message *create_getnext_message( AsnOid ); Message *create_get_message( AsnOid ); void free_message( Message *m ); #endif linux-atm-2.5.1/src/ilmid/mib.c0000644000200100001440000002631211235572166015074 0ustar chasusers/* * mib.c - MIB Primitives * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #if HAVE_CONFIG_H #include #endif #include "mib.h" #include "sysgroup.h" #include "atmf_uni.h" #include "util.h" #include "atmd.h" #include "io.h" #include /* gethostname() */ #include /* gethostbyname() */ #define COMPONENT "MIB" static Variable variables[] = /* keep this sorted by the value of entry.name */ { { &sysDescr, getString, NULL, NULL, &sysDescrValue }, { &sysObjectID, getOid, NULL, NULL, &sysObjectIDValue }, { &sysUpTime, getUpTime, NULL, NULL, NULL }, { &sysContact, getString, NULL, NULL, &sysContactValue }, { &sysName, getString, NULL, NULL, &sysNameValue }, { &sysLocation, getString, NULL, NULL, &sysLocationValue }, { &sysServices, getInteger, NULL, NULL, &sysServicesValue }, { &foreQ2931AdminConfigType, getInteger, NULL, NULL, &foreQ2931AdminConfigTypeValue }, { &foreQ2931NNIProto, getInteger, NULL, NULL, &foreQ2931NNIProtoValue }, { &atmfPortIndex, getInteger, NULL, NULL, &atmfPortIndexValue }, { &atmfPortMyIdentifier, getInteger, NULL, NULL, &atmfPortIndexValue }, { &atmfMyIpNmAddress, getIpAddr, NULL, NULL, &atmfMyIpNmAddressValue }, { &atmfMySystemIdentifier, getString, NULL, NULL, &atmfMySystemIdentifierValue }, { &atmfAtmLayerMaxVpiBits, getVpiRange, NULL, NULL, &atmfAtmLayerMaxVpiBitsValue }, { &atmfAtmLayerMaxVciBits, getVciRange, NULL, NULL, &atmfAtmLayerMaxVciBitsValue }, { &atmfAtmLayerUniType, getInteger, NULL, NULL, &atmfAtmLayerUniTypeValue}, { &atmfAtmLayerUniVersion, getInteger, NULL, NULL, &atmfAtmLayerUniVersionValue }, { &atmfAtmLayerDeviceType, getInteger, NULL, NULL, &atmfAtmLayerDeviceTypeValue}, { &atmfAtmLayerIlmiVersion, getInteger, NULL, NULL, &atmfAtmLayerIlmiVersionValue}, { &atmfAtmLayerNniSigVersion, getInteger, NULL, NULL, &atmfAtmLayerNniSigVersionValue}, { &atmfNetPrefixStatus, getNetPrefix, getnextNetPrefix, setNetPrefix, NULL }, { NULL } }; void MIBget(VarBindList *list, PDUInt *status, AsnInt *offset) { VarBind *varbind; Variable *var; AsnOidResult result; *offset = 1; FOR_EACH_LIST_ELMT(varbind, list) { /* Find the first MIB object not lexigraphically less than the * * requested OID */ var = variables; while(var->name != NULL) { result = AsnOidCompare(var->name, &varbind->name); if(result != AsnOidLess) break; var++; } /* Call get if the requested OID is equal to a simple MIB object */ /* OR if the requested OID is a leaf of a complex MIB object */ if((result == AsnOidEqual && var->getnext == NULL) || (result == AsnOidRoot && var->getnext != NULL)) *status = var->get(varbind, var); /* else the object was not found */ else *status = NOSUCHNAME; /* Check if the get failed */ if(*status != NOERROR) return; (*offset)++; } *offset = 0; return; } void MIBgetnext(VarBindList *list, PDUInt *status, AsnInt *offset) { VarBind *varbind; Variable *var; AsnOidResult result; *offset = 1; FOR_EACH_LIST_ELMT(varbind, list) { /* Find the first complex MIB object not lexigraphically less than * * or simple MIB object greater than the requested OID */ var = variables; while(var->name != NULL) { result = AsnOidCompare(var->name, &varbind->name); if(var->getnext == NULL) { if(result == AsnOidGreater) break; } else if(result != AsnOidLess) break; var++; } /* Find the next valid MIB object */ for(*status = NOSUCHNAME; var->name != NULL && *status == NOSUCHNAME; var++) if(var->getnext == NULL) { varbind->name.octs = Asn1Alloc(var->name->octetLen); AsnOidCopy(&varbind->name, var->name); *status = var->get(varbind, var); } else *status = var->getnext(varbind, var); /* Check if no valid MIB object found */ if(*status != NOERROR) return; (*offset)++; } *offset = 0; return; } void MIBset(VarBindList *list, PDUInt *status, AsnInt *offset) { VarBind *varbind; Variable *var; AsnOidResult result; *offset = 1; FOR_EACH_LIST_ELMT(varbind, list) { /* Find the first MIB object not lexigraphically less than the * * requested OID */ var = variables; while(var->name != NULL) { result = AsnOidCompare(var->name, &varbind->name); if(result != AsnOidLess) break; var++; } /* Call set if the requested variable is equal to a simple MIB object */ if((result == AsnOidEqual && var->getnext == NULL) || /* OR if the request variable is a leaf of a complex MIB object */ (result == AsnOidRoot && var->getnext != NULL)) /* Return read only if no set function exists */ if(var->set == NULL) *status = READONLY; else *status = var->set(varbind, var); else /* else the MIB object was not found */ *status = NOSUCHNAME; /* Check if the set failed */ if(*status != NOERROR) return; (*offset)++; } *offset = 0; return; } void *MIBdelete(AsnOid *oid) { Variable *var; void *value; AsnOidResult result; /* Find the first MIB object not lexigraphically less than the * * requested variable */ var = variables; while(var->name != NULL) { result = AsnOidCompare(var->name, oid); if(result != AsnOidLess) break; var++; } /* Return NULL if the MIB object is not found */ if(result != AsnOidEqual) return NULL; value = var->value; var->value = NULL; return value; } AsnInt getString(VarBind *varbind, Variable *var) { varbind->value = Asn1Alloc(sizeof(struct ObjectSyntax)); varbind->value->choiceId = OBJECTSYNTAX_SIMPLE; varbind->value->a.simple = Asn1Alloc(sizeof(struct SimpleSyntax)); varbind->value->a.simple->choiceId = SIMPLESYNTAX_STRING; varbind->value->a.simple->a.string = (AsnOcts*) var->value; return NOERROR; } AsnInt getOid(VarBind *varbind, Variable *var) { varbind->value = Asn1Alloc(sizeof(struct ObjectSyntax)); varbind->value->choiceId = OBJECTSYNTAX_SIMPLE; varbind->value->a.simple = Asn1Alloc(sizeof(struct SimpleSyntax)); varbind->value->a.simple->choiceId = SIMPLESYNTAX_OBJECT; varbind->value->a.simple->a.object = (AsnOid*) var->value; return NOERROR; } AsnInt getInteger(VarBind *varbind, Variable *var) { varbind->value = Asn1Alloc(sizeof(struct ObjectSyntax)); varbind->value->choiceId = OBJECTSYNTAX_SIMPLE; varbind->value->a.simple = Asn1Alloc(sizeof(struct SimpleSyntax)); varbind->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; varbind->value->a.simple->a.number = *((AsnInt *) var->value); return NOERROR; } #include #include #include #include #include #include #include #include #define MAX_ITFS 500 static const char *itf_types[] = { "", /* fallback */ "slip*","ppp*","eth*","lec*", /* candidates */ "atm*", "!lo", /* blacklist */ NULL /* the end */ }; static uint32_t get_local_ip(void) { struct ifconf ifc; struct ifreq ifr[MAX_ITFS]; const char **best; uint32_t best_ip; int s,i; s = socket(PF_INET,SOCK_DGRAM,0); if (s < 0) { perror("socket"); return 0; } ifc.ifc_len = MAX_ITFS*sizeof(struct ifreq); ifc.ifc_req = ifr; if (ioctl(s,SIOCGIFCONF,&ifc) < 0) { perror("SIOCGIFCONF"); return 0; } best = itf_types; best_ip = 0; for (i = 0; i < ifc.ifc_len/sizeof(struct ifreq); i++) { struct sockaddr_in *addr; const char **walk; uint32_t ip; addr = (struct sockaddr_in *) &ifr[i].ifr_addr; if (addr->sin_family != AF_INET) continue; ip = addr->sin_addr.s_addr; if (!ip) continue; if (ioctl(s,SIOCGIFFLAGS,&ifr[i]) < 0) { perror("SIOCGIFFLAGS"); continue; } if (ifr[i].ifr_flags & IFF_LOOPBACK) continue; if (!(ifr[i].ifr_flags & IFF_UP)) continue; for (walk = best+1; *walk; walk++) { const char *pos,*wc,*end; int not; if ((not = *(pos = *walk) == '!')) pos++; if (*pos) { int len; wc = strchr(pos,'*'); end = wc ? wc : strchr(pos,0); len = end-pos; if (strncmp(ifr[i].ifr_name,pos,end-pos)) continue; if (len < IFNAMSIZ && ifr[i].ifr_name[len]) if (!wc || !isdigit(ifr[i].ifr_name[len])) continue; } if (not) break; best = walk; best_ip = ip; } } return best_ip; } static uint32_t local_ip = 0; void set_local_ip(uint32_t ip) { local_ip = ip; } AsnInt getIpAddr(VarBind *varbind, Variable *var) { if (!local_ip) { local_ip = get_local_ip(); if (!local_ip) { struct hostent* h; char hostname[128]; if (!gethostname(hostname, sizeof(hostname)-1)) { h = (struct hostent*) gethostbyname(hostname); if (!h) local_ip = 0; /* give up :-( */ else memcpy(&local_ip,h->h_addr_list[0],4); } } } if (!((IpAddress*) var->value)->octs) { unsigned char *p; ((IpAddress *) var->value)->octs = p = alloc(4); memcpy(((IpAddress *) var->value)->octs,&local_ip,4); diag(COMPONENT,DIAG_DEBUG,"Local IP address is %d.%d.%d.%d",p[0],p[1], p[2],p[3]); } varbind->value = Asn1Alloc(sizeof(ObjectSyntax)); varbind->value->choiceId = OBJECTSYNTAX_APPLICATION_WIDE; varbind->value->a.application_wide = Asn1Alloc(sizeof(ApplicationSyntax)); varbind->value->a.application_wide->choiceId = APPLICATIONSYNTAX_ADDRESS; varbind->value->a.application_wide->a.address = Asn1Alloc(sizeof(NetworkAddress)); varbind->value->a.application_wide->a.address->choiceId = NETWORKADDRESS_INTERNET; varbind->value->a.application_wide->a.address->a.internet = (IpAddress*) var->value; return NOERROR; } #include #include static AsnInt put_ci(VarBind *varbind,Variable *var, struct atm_cirange *ci,char *bits) { if (get_ci_range(ci) < 0) return GENERR; diag(COMPONENT,DIAG_DEBUG,"VPI: %d bits, VCI: %d bits",ci->vpi_bits, ci->vci_bits); varbind->value = Asn1Alloc(sizeof(struct ObjectSyntax)); varbind->value->choiceId = OBJECTSYNTAX_SIMPLE; varbind->value->a.simple = Asn1Alloc(sizeof(struct SimpleSyntax)); varbind->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; varbind->value->a.simple->a.number = *((AsnInt *) var->value) = *bits; return NOERROR; } AsnInt getVpiRange(VarBind *varbind, Variable *var) { struct atm_cirange ci; return put_ci(varbind,var,&ci,&ci.vpi_bits); } AsnInt getVciRange(VarBind *varbind, Variable *var) { struct atm_cirange ci; return put_ci(varbind,var,&ci,&ci.vci_bits); } linux-atm-2.5.1/src/ilmid/mib.h0000644000200100001440000000325107706331407015075 0ustar chasusers/* * mib.h - MIB Primitives * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #ifndef MIB_H #define MIB_H #include "atmd.h" #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" typedef struct Variable { AsnOid *name; AsnInt (*get)(VarBind *varbind, struct Variable *var); AsnInt (*getnext)(VarBind *varbind, struct Variable *var); AsnInt (*set)(VarBind *varbind, struct Variable *var); void *value; } Variable; void MIBget(VarBindList *list, PDUInt *status, AsnInt *offset); void MIBgetnext(VarBindList *list, PDUInt *status, AsnInt *offset); void MIBset(VarBindList *list, PDUInt *status, AsnInt *offset); void *MIBdelete(AsnOid *oid); AsnInt getString(VarBind *varbind, Variable *var); AsnInt getOid(VarBind *varbind, Variable *var); AsnInt getInteger(VarBind *varbind, Variable *var); AsnInt getIpAddr(VarBind *varbind, Variable *var); AsnInt getVpiRange(VarBind *varbind, Variable *var); AsnInt getVciRange(VarBind *varbind, Variable *var); void set_local_ip(uint32_t ip); #endif linux-atm-2.5.1/src/ilmid/rfc1155_smi.c0000644000200100001440000003103707360675442016270 0ustar chasusers/* * rfc1155_smi.c * * "RFC1155-SMI" ASN.1 module encode/decode/print/free C src. * * This file was generated by snacc on Fri Jan 31 14:49:02 1997 * * UBC snacc written by Mike Sample * * NOTE: This is a machine generated file - editing not recommended */ #if HAVE_CONFIG_H #include #endif #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" AsnOid internet = { 3, "\53\6\1" }; AsnOid directory = { 4, "\53\6\1\1" }; AsnOid mgmt = { 4, "\53\6\1\2" }; AsnOid experimental = { 4, "\53\6\1\3" }; AsnOid private = { 4, "\53\6\1\4" }; AsnOid enterprises = { 5, "\53\6\1\4\1" }; AsnLen BEncSimpleSyntaxContent PARAMS((b, v), BUF_TYPE b _AND_ SimpleSyntax* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; switch(v->choiceId) { case(SIMPLESYNTAX_NUMBER): itemLen = BEncAsnIntContent( b, (&v->a.number)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, UNIV, PRIM, 2); totalLen += itemLen; break; case(SIMPLESYNTAX_STRING): itemLen = BEncAsnOctsContent( b, (v->a.string)); itemLen += BEncDefLen( b, itemLen); itemLen += BEncTag1(b, UNIV, PRIM, 4); totalLen += itemLen; break; case(SIMPLESYNTAX_OBJECT): itemLen = BEncAsnOidContent( b, (v->a.object)); itemLen += BEncDefLen( b, itemLen); itemLen += BEncTag1(b, UNIV, PRIM, 6); totalLen += itemLen; break; case(SIMPLESYNTAX_EMPTY): itemLen = BEncAsnNullContent( b, (&v->a.empty)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, UNIV, PRIM, 5); totalLen += itemLen; break; } return (totalLen); } /* BEncSimpleSyntaxContent */ void BDecSimpleSyntaxContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ SimpleSyntax* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; switch(tagId0) { case(MAKE_TAG_ID( UNIV, PRIM, INTEGER_TAG_CODE)): (v->choiceId) = SIMPLESYNTAX_NUMBER; BDecAsnIntContent( b, tagId0, elmtLen0, (&v->a.number), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( UNIV, PRIM, OCTETSTRING_TAG_CODE)): case(MAKE_TAG_ID( UNIV, CONS, OCTETSTRING_TAG_CODE)): (v->choiceId) = SIMPLESYNTAX_STRING; (v->a.string) = (AsnOcts*) Asn1Alloc(sizeof(AsnOcts)); CheckAsn1Alloc((v->a.string), env); BDecAsnOctsContent( b, tagId0, elmtLen0, (v->a.string), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( UNIV, PRIM, OID_TAG_CODE)): (v->choiceId) = SIMPLESYNTAX_OBJECT; (v->a.object) = (AsnOid*) Asn1Alloc(sizeof(AsnOid)); CheckAsn1Alloc((v->a.object), env); BDecAsnOidContent( b, tagId0, elmtLen0, (v->a.object), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( UNIV, PRIM, NULLTYPE_TAG_CODE)): (v->choiceId) = SIMPLESYNTAX_EMPTY; BDecAsnNullContent( b, tagId0, elmtLen0, (&v->a.empty), &totalElmtsLen1, env); break; default: Asn1Error("ERROR - unexpected tag in CHOICE\n"); longjmp(env, -100); break; } /* end switch */ (*bytesDecoded) += totalElmtsLen1; } /* BDecSimpleSyntaxContent */ void PrintSimpleSyntax PARAMS((f, v, indent), FILE* f _AND_ SimpleSyntax* v _AND_ unsigned short int indent) { switch(v->choiceId) { case(SIMPLESYNTAX_NUMBER): fprintf(f,"number "); PrintAsnInt(f, (&v->a.number), indent + stdIndentG); break; case(SIMPLESYNTAX_STRING): fprintf(f,"string "); PrintAsnOcts(f, (v->a.string), indent + stdIndentG); break; case(SIMPLESYNTAX_OBJECT): fprintf(f,"object "); PrintAsnOid(f, (v->a.object), indent + stdIndentG); break; case(SIMPLESYNTAX_EMPTY): fprintf(f,"empty "); PrintAsnNull(f, (&v->a.empty), indent + stdIndentG); break; } } /* PrintSimpleSyntax */ AsnLen BEncNetworkAddressContent PARAMS((b, v), BUF_TYPE b _AND_ NetworkAddress* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; switch(v->choiceId) { case(NETWORKADDRESS_INTERNET): itemLen = BEncIpAddressContent( b, (v->a.internet)); itemLen += BEncDefLen( b, itemLen); itemLen += BEncTag1(b, APPL, PRIM, 0); totalLen += itemLen; break; } return (totalLen); } /* BEncNetworkAddressContent */ void BDecNetworkAddressContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ NetworkAddress* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; switch(tagId0) { case(MAKE_TAG_ID( APPL, PRIM, 0)): case(MAKE_TAG_ID( APPL, CONS, 0)): (v->choiceId) = NETWORKADDRESS_INTERNET; (v->a.internet) = (IpAddress*) Asn1Alloc(sizeof(IpAddress)); CheckAsn1Alloc((v->a.internet), env); BDecIpAddressContent( b, tagId0, elmtLen0, (v->a.internet), &totalElmtsLen1, env); break; default: Asn1Error("ERROR - unexpected tag in CHOICE\n"); longjmp(env, -101); break; } /* end switch */ (*bytesDecoded) += totalElmtsLen1; } /* BDecNetworkAddressContent */ void PrintNetworkAddress PARAMS((f, v, indent), FILE* f _AND_ NetworkAddress* v _AND_ unsigned short int indent) { switch(v->choiceId) { case(NETWORKADDRESS_INTERNET): fprintf(f,"internet "); PrintIpAddress(f, (v->a.internet), indent + stdIndentG); break; } } /* PrintNetworkAddress */ AsnLen BEncApplicationSyntaxContent PARAMS((b, v), BUF_TYPE b _AND_ ApplicationSyntax* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; switch(v->choiceId) { case(APPLICATIONSYNTAX_ADDRESS): itemLen = BEncNetworkAddressContent( b, (v->a.address)); totalLen += itemLen; break; case(APPLICATIONSYNTAX_COUNTER): itemLen = BEncCounterContent( b, (&v->a.counter)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, APPL, PRIM, 1); totalLen += itemLen; break; case(APPLICATIONSYNTAX_GAUGE): itemLen = BEncGaugeContent( b, (&v->a.gauge)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, APPL, PRIM, 2); totalLen += itemLen; break; case(APPLICATIONSYNTAX_TICKS): itemLen = BEncTimeTicksContent( b, (&v->a.ticks)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, APPL, PRIM, 3); totalLen += itemLen; break; case(APPLICATIONSYNTAX_ARBITRARY): itemLen = BEncOpaqueContent( b, (v->a.arbitrary)); itemLen += BEncDefLen( b, itemLen); itemLen += BEncTag1(b, APPL, PRIM, 4); totalLen += itemLen; break; } return (totalLen); } /* BEncApplicationSyntaxContent */ void BDecApplicationSyntaxContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ ApplicationSyntax* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; AsnLen totalElmtsLen2 = 0; AsnLen elmtLen2; AsnTag tagId2; switch(tagId0) { case(MAKE_TAG_ID( APPL, PRIM, 0)): case(MAKE_TAG_ID( APPL, CONS, 0)): (v->choiceId) = APPLICATIONSYNTAX_ADDRESS; (v->a.address) = (NetworkAddress*) Asn1Alloc(sizeof(NetworkAddress)); CheckAsn1Alloc((v->a.address), env); BDecNetworkAddressContent( b, tagId0, elmtLen0, (v->a.address), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( APPL, PRIM, 1)): (v->choiceId) = APPLICATIONSYNTAX_COUNTER; BDecCounterContent( b, tagId0, elmtLen0, (&v->a.counter), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( APPL, PRIM, 2)): (v->choiceId) = APPLICATIONSYNTAX_GAUGE; BDecGaugeContent( b, tagId0, elmtLen0, (&v->a.gauge), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( APPL, PRIM, 3)): (v->choiceId) = APPLICATIONSYNTAX_TICKS; BDecTimeTicksContent( b, tagId0, elmtLen0, (&v->a.ticks), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( APPL, PRIM, 4)): case(MAKE_TAG_ID( APPL, CONS, 4)): (v->choiceId) = APPLICATIONSYNTAX_ARBITRARY; (v->a.arbitrary) = (Opaque*) Asn1Alloc(sizeof(Opaque)); CheckAsn1Alloc((v->a.arbitrary), env); BDecOpaqueContent( b, tagId0, elmtLen0, (v->a.arbitrary), &totalElmtsLen1, env); break; default: Asn1Error("ERROR - unexpected tag in CHOICE\n"); longjmp(env, -102); break; } /* end switch */ (*bytesDecoded) += totalElmtsLen1; } /* BDecApplicationSyntaxContent */ void PrintApplicationSyntax PARAMS((f, v, indent), FILE* f _AND_ ApplicationSyntax* v _AND_ unsigned short int indent) { switch(v->choiceId) { case(APPLICATIONSYNTAX_ADDRESS): fprintf(f,"address "); PrintNetworkAddress(f, (v->a.address), indent + stdIndentG); break; case(APPLICATIONSYNTAX_COUNTER): fprintf(f,"counter "); PrintCounter(f, (&v->a.counter), indent + stdIndentG); break; case(APPLICATIONSYNTAX_GAUGE): fprintf(f,"gauge "); PrintGauge(f, (&v->a.gauge), indent + stdIndentG); break; case(APPLICATIONSYNTAX_TICKS): fprintf(f,"ticks "); PrintTimeTicks(f, (&v->a.ticks), indent + stdIndentG); break; case(APPLICATIONSYNTAX_ARBITRARY): fprintf(f,"arbitrary "); PrintOpaque(f, (v->a.arbitrary), indent + stdIndentG); break; } } /* PrintApplicationSyntax */ AsnLen BEncObjectSyntaxContent PARAMS((b, v), BUF_TYPE b _AND_ ObjectSyntax* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; switch(v->choiceId) { case(OBJECTSYNTAX_SIMPLE): itemLen = BEncSimpleSyntaxContent( b, (v->a.simple)); totalLen += itemLen; break; case(OBJECTSYNTAX_APPLICATION_WIDE): itemLen = BEncApplicationSyntaxContent( b, (v->a.application_wide)); totalLen += itemLen; break; } return (totalLen); } /* BEncObjectSyntaxContent */ void BDecObjectSyntaxContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ ObjectSyntax* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; AsnLen totalElmtsLen2 = 0; AsnLen elmtLen2; AsnTag tagId2; switch(tagId0) { case(MAKE_TAG_ID( UNIV, PRIM, INTEGER_TAG_CODE)): case(MAKE_TAG_ID( UNIV, PRIM, OCTETSTRING_TAG_CODE)): case(MAKE_TAG_ID( UNIV, CONS, OCTETSTRING_TAG_CODE)): case(MAKE_TAG_ID( UNIV, PRIM, OID_TAG_CODE)): case(MAKE_TAG_ID( UNIV, PRIM, NULLTYPE_TAG_CODE)): (v->choiceId) = OBJECTSYNTAX_SIMPLE; (v->a.simple) = (SimpleSyntax*) Asn1Alloc(sizeof(SimpleSyntax)); CheckAsn1Alloc((v->a.simple), env); BDecSimpleSyntaxContent( b, tagId0, elmtLen0, (v->a.simple), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( APPL, PRIM, 0)): case(MAKE_TAG_ID( APPL, CONS, 0)): case(MAKE_TAG_ID( APPL, PRIM, 1)): case(MAKE_TAG_ID( APPL, PRIM, 2)): case(MAKE_TAG_ID( APPL, PRIM, 3)): case(MAKE_TAG_ID( APPL, PRIM, 4)): case(MAKE_TAG_ID( APPL, CONS, 4)): (v->choiceId) = OBJECTSYNTAX_APPLICATION_WIDE; (v->a.application_wide) = (ApplicationSyntax*) Asn1Alloc(sizeof(ApplicationSyntax)); CheckAsn1Alloc((v->a.application_wide), env); BDecApplicationSyntaxContent( b, tagId0, elmtLen0, (v->a.application_wide), &totalElmtsLen1, env); break; default: Asn1Error("ERROR - unexpected tag in CHOICE\n"); longjmp(env, -103); break; } /* end switch */ (*bytesDecoded) += totalElmtsLen1; } /* BDecObjectSyntaxContent */ void PrintObjectSyntax PARAMS((f, v, indent), FILE* f _AND_ ObjectSyntax* v _AND_ unsigned short int indent) { switch(v->choiceId) { case(OBJECTSYNTAX_SIMPLE): fprintf(f,"simple "); PrintSimpleSyntax(f, (v->a.simple), indent + stdIndentG); break; case(OBJECTSYNTAX_APPLICATION_WIDE): fprintf(f,"application-wide "); PrintApplicationSyntax(f, (v->a.application_wide), indent + stdIndentG); break; } } /* PrintObjectSyntax */ linux-atm-2.5.1/src/ilmid/rfc1155_smi.h0000644000200100001440000001072607706332721016271 0ustar chasusers/* * rfc1155_smi.h * * "RFC1155-SMI" ASN.1 module C type definitions and prototypes * * This .h file was by snacc on Fri Jan 31 14:49:02 1997 * * UBC snacc written compiler by Mike Sample * * NOTE: This is a machine generated file - editing not recommended */ #ifndef _rfc1155_smi_h_ #define _rfc1155_smi_h_ typedef AsnOid ObjectName; /* OBJECT IDENTIFIER */ #define BEncObjectNameContent BEncAsnOidContent #define BDecObjectNameContent BDecAsnOidContent #define PrintObjectName PrintAsnOid typedef AsnOcts IpAddress; /* [APPLICATION 0] IMPLICIT OCTET STRING (SIZE (4)) */ #define BEncIpAddressContent BEncAsnOctsContent #define BDecIpAddressContent BDecAsnOctsContent #define PrintIpAddress PrintAsnOcts typedef AsnInt Counter; /* [APPLICATION 1] IMPLICIT INTEGER (0..2147483647) */ #define BEncCounterContent BEncAsnIntContent #define BDecCounterContent BDecAsnIntContent #define PrintCounter PrintAsnInt typedef AsnInt Gauge; /* [APPLICATION 2] IMPLICIT INTEGER (0..2147483647) */ #define BEncGaugeContent BEncAsnIntContent #define BDecGaugeContent BDecAsnIntContent #define PrintGauge PrintAsnInt typedef UAsnInt TimeTicks; /* [APPLICATION 3] IMPLICIT INTEGER (0..2147483647) */ #define BEncTimeTicksContent BEncUAsnIntContent #define BDecTimeTicksContent BDecUAsnIntContent #define PrintTimeTicks PrintUAsnInt typedef AsnOcts Opaque; /* [APPLICATION 4] IMPLICIT OCTET STRING */ #define BEncOpaqueContent BEncAsnOctsContent #define BDecOpaqueContent BDecAsnOctsContent #define PrintOpaque PrintAsnOcts typedef struct SimpleSyntax /* CHOICE */ { enum SimpleSyntaxChoiceId { SIMPLESYNTAX_NUMBER, SIMPLESYNTAX_STRING, SIMPLESYNTAX_OBJECT, SIMPLESYNTAX_EMPTY } choiceId; union SimpleSyntaxChoiceUnion { AsnInt number; /* INTEGER */ AsnOcts* string; /* OCTET STRING */ AsnOid* object; /* OBJECT IDENTIFIER */ AsnNull empty; /* NULL */ } a; } SimpleSyntax; AsnLen BEncSimpleSyntaxContent PROTO((BUF_TYPE b, SimpleSyntax* v)); void BDecSimpleSyntaxContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, SimpleSyntax* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintSimpleSyntax PROTO((FILE* f, SimpleSyntax* v, unsigned short int indent)); typedef struct NetworkAddress /* CHOICE */ { enum NetworkAddressChoiceId { NETWORKADDRESS_INTERNET } choiceId; union NetworkAddressChoiceUnion { IpAddress* internet; /* IpAddress */ } a; } NetworkAddress; AsnLen BEncNetworkAddressContent PROTO((BUF_TYPE b, NetworkAddress* v)); void BDecNetworkAddressContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, NetworkAddress* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintNetworkAddress PROTO((FILE* f, NetworkAddress* v, unsigned short int indent)); typedef struct ApplicationSyntax /* CHOICE */ { enum ApplicationSyntaxChoiceId { APPLICATIONSYNTAX_ADDRESS, APPLICATIONSYNTAX_COUNTER, APPLICATIONSYNTAX_GAUGE, APPLICATIONSYNTAX_TICKS, APPLICATIONSYNTAX_ARBITRARY } choiceId; union ApplicationSyntaxChoiceUnion { struct NetworkAddress* address; /* NetworkAddress */ Counter counter; /* Counter */ Gauge gauge; /* Gauge */ TimeTicks ticks; /* TimeTicks */ Opaque* arbitrary; /* Opaque */ } a; } ApplicationSyntax; AsnLen BEncApplicationSyntaxContent PROTO((BUF_TYPE b, ApplicationSyntax* v)); void BDecApplicationSyntaxContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, ApplicationSyntax* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintApplicationSyntax PROTO((FILE* f, ApplicationSyntax* v, unsigned short int indent)); typedef struct ObjectSyntax /* CHOICE */ { enum ObjectSyntaxChoiceId { OBJECTSYNTAX_SIMPLE, OBJECTSYNTAX_APPLICATION_WIDE } choiceId; union ObjectSyntaxChoiceUnion { struct SimpleSyntax* simple; /* SimpleSyntax */ struct ApplicationSyntax* application_wide; /* ApplicationSyntax */ } a; } ObjectSyntax; AsnLen BEncObjectSyntaxContent PROTO((BUF_TYPE b, ObjectSyntax* v)); void BDecObjectSyntaxContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, ObjectSyntax* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintObjectSyntax PROTO((FILE* f, ObjectSyntax* v, unsigned short int indent)); extern AsnOid internet; extern AsnOid directory; extern AsnOid mgmt; extern AsnOid experimental; extern AsnOid private; extern AsnOid enterprises; #endif /* conditional include of rfc1155_smi.h */ linux-atm-2.5.1/src/ilmid/rfc1157_snmp.c0000644000200100001440000005462107360675442016463 0ustar chasusers/* * rfc1157_snmp.c * * "RFC1157-SNMP" ASN.1 module encode/decode/print/free C src. * * This file was generated by snacc on Fri Jan 31 14:49:02 1997 * * UBC snacc written by Mike Sample * * NOTE: This is a machine generated file - editing not recommended */ #if HAVE_CONFIG_H #include #endif #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" AsnLen BEncVarBindContent PARAMS((b, v), BUF_TYPE b _AND_ VarBind* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; itemLen = BEncObjectSyntaxContent( b, (v->value)); totalLen += itemLen; itemLen = BEncObjectNameContent( b, (&v->name)); itemLen += BEncDefLen( b, itemLen); itemLen += BEncTag1(b, UNIV, PRIM, 6); totalLen += itemLen; return (totalLen); } /* BEncVarBindContent */ void BDecVarBindContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ VarBind* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; AsnLen totalElmtsLen2 = 0; AsnLen elmtLen2; AsnTag tagId2; tagId1 = BDecTag(b, &totalElmtsLen1, env); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, OID_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecObjectNameContent( b, tagId1, elmtLen1, (&v->name), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -100); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, INTEGER_TAG_CODE)) || ( tagId1 ==MAKE_TAG_ID( UNIV, PRIM, OCTETSTRING_TAG_CODE))|| ( tagId1 == MAKE_TAG_ID( UNIV, CONS, OCTETSTRING_TAG_CODE)) || ( tagId1 ==MAKE_TAG_ID( UNIV, PRIM, OID_TAG_CODE)) || ( tagId1 ==MAKE_TAG_ID( UNIV, PRIM, NULLTYPE_TAG_CODE)) || ( tagId1 == MAKE_TAG_ID( APPL, PRIM, 0))|| ( tagId1 == MAKE_TAG_ID( APPL, CONS, 0)) || ( tagId1 == MAKE_TAG_ID( APPL, PRIM, 1)) || ( tagId1 == MAKE_TAG_ID( APPL, PRIM, 2)) || ( tagId1 == MAKE_TAG_ID( APPL, PRIM, 3)) || ( tagId1 == MAKE_TAG_ID( APPL, PRIM, 4))|| ( tagId1 == MAKE_TAG_ID( APPL, CONS, 4)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); (v->value) = (ObjectSyntax*) Asn1Alloc(sizeof(ObjectSyntax)); CheckAsn1Alloc((v->value), env); BDecObjectSyntaxContent( b, tagId1, elmtLen1, (v->value), &totalElmtsLen1, env); seqDone = TRUE; if ( elmtLen0 == INDEFINITE_LEN ) BDecEoc(b, &totalElmtsLen1, env); else if (totalElmtsLen1 != elmtLen0) longjmp(env, -101); } else longjmp(env, -102); if (!seqDone) longjmp(env, -103); (*bytesDecoded) += totalElmtsLen1; } /* BDecVarBindContent */ void PrintVarBind PARAMS((f, v, indent), FILE* f _AND_ VarBind* v _AND_ unsigned short int indent) { if (v == NULL) return; fprintf(f,"{ -- SEQUENCE --\n"); Indent(f, indent + stdIndentG); fprintf(f,"name "); PrintObjectName(f, (&v->name), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"value "); PrintObjectSyntax(f, (v->value), indent + stdIndentG); fprintf(f,"\n"); Indent(f, indent); fprintf(f,"}"); } /* PrintVarBind */ AsnLen BEncVarBindListContent PARAMS((b, v), BUF_TYPE b _AND_ VarBindList* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; listLen = 0; FOR_EACH_LIST_ELMT_RVS( component, v) { BEncEocIfNec(b); itemLen = BEncVarBindContent( b, component); itemLen += BEncConsLen( b, itemLen); itemLen += BEncTag1(b, UNIV, CONS, 16); listLen += itemLen; } return (listLen); } /* BEncVarBindListContent */ void BDecVarBindListContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ VarBindList* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; for ( totalElmtsLen1 = 0; (totalElmtsLen1 < elmtLen0) || (elmtLen0 == INDEFINITE_LEN);) { VarBind** tmpVar; tagId1 = BDecTag(b, &totalElmtsLen1, env); if ( (tagId1 == EOC_TAG_ID) && (elmtLen0 == INDEFINITE_LEN)) { BDEC_2ND_EOC_OCTET(b, &totalElmtsLen1, env) break; /* got EOC so can exit this SET OF/SEQ OF's for loop*/ } if ( (tagId1 == MAKE_TAG_ID( UNIV, CONS, SEQ_TAG_CODE))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); tmpVar = (VarBind**) AsnListAppend(v); (*tmpVar) = (VarBind*) Asn1Alloc(sizeof(VarBind)); CheckAsn1Alloc((*tmpVar), env); BDecVarBindContent( b, tagId1, elmtLen1, (*tmpVar), &totalElmtsLen1, env); } /* end of tag check if */ else /* wrong tag */ { Asn1Error("Unexpected Tag\n"); longjmp(env, -104); } } /* end of for */ (*bytesDecoded) += totalElmtsLen1; } /* BDecVarBindListContent */ void PrintVarBindList PARAMS((f, v, indent), FILE* f _AND_ VarBindList* v _AND_ unsigned short int indent) { VarBind* tmp; if (v == NULL) return; fprintf(f,"{ -- SEQUENCE OF -- \n"); FOR_EACH_LIST_ELMT(tmp, v) { Indent(f, indent+ stdIndentG); PrintVarBind(f, tmp, indent + stdIndentG); if (tmp != (VarBind*)LAST_LIST_ELMT(v)) fprintf(f,",\n"); } fprintf(f,"\n"); Indent(f, indent); fprintf(f,"}"); } /* PrintVarBindList */ AsnLen BEncPDUContent PARAMS((b, v), BUF_TYPE b _AND_ PDU* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; BEncEocIfNec(b); itemLen = BEncVarBindListContent( b, (v->variable_bindings)); itemLen += BEncConsLen( b, itemLen); itemLen += BEncTag1(b, UNIV, CONS, 16); totalLen += itemLen; itemLen = BEncAsnIntContent( b, (&v->error_index)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, UNIV, PRIM, 2); totalLen += itemLen; itemLen = BEncPDUIntContent( b, (&v->error_status)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, UNIV, PRIM, 2); totalLen += itemLen; itemLen = BEncAsnIntContent( b, (&v->request_id)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, UNIV, PRIM, 2); totalLen += itemLen; return (totalLen); } /* BEncPDUContent */ void BDecPDUContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ PDU* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; tagId1 = BDecTag(b, &totalElmtsLen1, env); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, INTEGER_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecAsnIntContent( b, tagId1, elmtLen1, (&v->request_id), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -105); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, INTEGER_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecPDUIntContent( b, tagId1, elmtLen1, (&v->error_status), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -106); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, INTEGER_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecAsnIntContent( b, tagId1, elmtLen1, (&v->error_index), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -107); if ((( tagId1 == MAKE_TAG_ID( UNIV, CONS, SEQ_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); (v->variable_bindings) = AsnListNew(sizeof(char*)); CheckAsn1Alloc((v->variable_bindings), env); BDecVarBindListContent( b, tagId1, elmtLen1, (v->variable_bindings), &totalElmtsLen1, env); seqDone = TRUE; if ( elmtLen0 == INDEFINITE_LEN ) BDecEoc(b, &totalElmtsLen1, env); else if (totalElmtsLen1 != elmtLen0) longjmp(env, -108); } else longjmp(env, -109); if (!seqDone) longjmp(env, -110); (*bytesDecoded) += totalElmtsLen1; } /* BDecPDUContent */ void PrintPDU PARAMS((f, v, indent), FILE* f _AND_ PDU* v _AND_ unsigned short int indent) { if (v == NULL) return; fprintf(f,"{ -- SEQUENCE --\n"); Indent(f, indent + stdIndentG); fprintf(f,"request-id "); PrintAsnInt(f, (&v->request_id), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"error-status "); PrintPDUInt(f, (&v->error_status), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"error-index "); PrintAsnInt(f, (&v->error_index), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"variable-bindings "); PrintVarBindList(f, (v->variable_bindings), indent + stdIndentG); fprintf(f,"\n"); Indent(f, indent); fprintf(f,"}"); } /* PrintPDU */ AsnLen BEncTrap_PDUContent PARAMS((b, v), BUF_TYPE b _AND_ Trap_PDU* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; BEncEocIfNec(b); itemLen = BEncVarBindListContent( b, (v->variable_bindings)); itemLen += BEncConsLen( b, itemLen); itemLen += BEncTag1(b, UNIV, CONS, 16); totalLen += itemLen; itemLen = BEncTimeTicksContent( b, (&v->time_stamp)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, APPL, PRIM, 3); totalLen += itemLen; itemLen = BEncAsnIntContent( b, (&v->specific_trap)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, UNIV, PRIM, 2); totalLen += itemLen; itemLen = BEncTrap_PDUIntContent( b, (&v->generic_trap)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, UNIV, PRIM, 2); totalLen += itemLen; itemLen = BEncNetworkAddressContent( b, (v->agent_addr)); totalLen += itemLen; itemLen = BEncAsnOidContent( b, (&v->enterprise)); itemLen += BEncDefLen( b, itemLen); itemLen += BEncTag1(b, UNIV, PRIM, 6); totalLen += itemLen; return (totalLen); } /* BEncTrap_PDUContent */ void BDecTrap_PDUContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ Trap_PDU* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; AsnLen totalElmtsLen2 = 0; AsnLen elmtLen2; AsnTag tagId2; tagId1 = BDecTag(b, &totalElmtsLen1, env); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, OID_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecAsnOidContent( b, tagId1, elmtLen1, (&v->enterprise), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -111); if ((( tagId1 == MAKE_TAG_ID( APPL, PRIM, 0)) || ( tagId1 == MAKE_TAG_ID( APPL, CONS, 0)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); (v->agent_addr) = (NetworkAddress*) Asn1Alloc(sizeof(NetworkAddress)); CheckAsn1Alloc((v->agent_addr), env); BDecNetworkAddressContent( b, tagId1, elmtLen1, (v->agent_addr), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -112); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, INTEGER_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecTrap_PDUIntContent( b, tagId1, elmtLen1, (&v->generic_trap), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -113); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, INTEGER_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecAsnIntContent( b, tagId1, elmtLen1, (&v->specific_trap), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -114); if ((( tagId1 == MAKE_TAG_ID( APPL, PRIM, 3)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecTimeTicksContent( b, tagId1, elmtLen1, (&v->time_stamp), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -115); if ((( tagId1 == MAKE_TAG_ID( UNIV, CONS, SEQ_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); (v->variable_bindings) = AsnListNew(sizeof(char*)); CheckAsn1Alloc((v->variable_bindings), env); BDecVarBindListContent( b, tagId1, elmtLen1, (v->variable_bindings), &totalElmtsLen1, env); seqDone = TRUE; if ( elmtLen0 == INDEFINITE_LEN ) BDecEoc(b, &totalElmtsLen1, env); else if (totalElmtsLen1 != elmtLen0) longjmp(env, -116); } else longjmp(env, -117); if (!seqDone) longjmp(env, -118); (*bytesDecoded) += totalElmtsLen1; } /* BDecTrap_PDUContent */ void PrintTrap_PDU PARAMS((f, v, indent), FILE* f _AND_ Trap_PDU* v _AND_ unsigned short int indent) { if (v == NULL) return; fprintf(f,"{ -- SEQUENCE --\n"); Indent(f, indent + stdIndentG); fprintf(f,"enterprise "); PrintAsnOid(f, (&v->enterprise), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"agent-addr "); PrintNetworkAddress(f, (v->agent_addr), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"generic-trap "); PrintTrap_PDUInt(f, (&v->generic_trap), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"specific-trap "); PrintAsnInt(f, (&v->specific_trap), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"time-stamp "); PrintTimeTicks(f, (&v->time_stamp), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"variable-bindings "); PrintVarBindList(f, (v->variable_bindings), indent + stdIndentG); fprintf(f,"\n"); Indent(f, indent); fprintf(f,"}"); } /* PrintTrap_PDU */ AsnLen BEncPDUsContent PARAMS((b, v), BUF_TYPE b _AND_ PDUs* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; switch(v->choiceId) { case(PDUS_GET_REQUEST): BEncEocIfNec(b); itemLen = BEncGetRequest_PDUContent( b, (v->a.get_request)); itemLen += BEncConsLen( b, itemLen); itemLen += BEncTag1(b, CNTX, CONS, 0); totalLen += itemLen; break; case(PDUS_GET_NEXT_REQUEST): BEncEocIfNec(b); itemLen = BEncGetNextRequest_PDUContent( b, (v->a.get_next_request)); itemLen += BEncConsLen( b, itemLen); itemLen += BEncTag1(b, CNTX, CONS, 1); totalLen += itemLen; break; case(PDUS_GET_RESPONSE): BEncEocIfNec(b); itemLen = BEncGetResponse_PDUContent( b, (v->a.get_response)); itemLen += BEncConsLen( b, itemLen); itemLen += BEncTag1(b, CNTX, CONS, 2); totalLen += itemLen; break; case(PDUS_SET_REQUEST): BEncEocIfNec(b); itemLen = BEncSetRequest_PDUContent( b, (v->a.set_request)); itemLen += BEncConsLen( b, itemLen); itemLen += BEncTag1(b, CNTX, CONS, 3); totalLen += itemLen; break; case(PDUS_TRAP): BEncEocIfNec(b); itemLen = BEncTrap_PDUContent( b, (v->a.trap)); itemLen += BEncConsLen( b, itemLen); itemLen += BEncTag1(b, CNTX, CONS, 4); totalLen += itemLen; break; } return (totalLen); } /* BEncPDUsContent */ void BDecPDUsContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ PDUs* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; switch(tagId0) { case(MAKE_TAG_ID( CNTX, CONS, 0)): (v->choiceId) = PDUS_GET_REQUEST; (v->a.get_request) = (GetRequest_PDU*) Asn1Alloc(sizeof(GetRequest_PDU)); CheckAsn1Alloc((v->a.get_request), env); BDecGetRequest_PDUContent( b, tagId0, elmtLen0, (v->a.get_request), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( CNTX, CONS, 1)): (v->choiceId) = PDUS_GET_NEXT_REQUEST; (v->a.get_next_request) = (GetNextRequest_PDU*) Asn1Alloc(sizeof(GetNextRequest_PDU)); CheckAsn1Alloc((v->a.get_next_request), env); BDecGetNextRequest_PDUContent( b, tagId0, elmtLen0, (v->a.get_next_request), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( CNTX, CONS, 2)): (v->choiceId) = PDUS_GET_RESPONSE; (v->a.get_response) = (GetResponse_PDU*) Asn1Alloc(sizeof(GetResponse_PDU)); CheckAsn1Alloc((v->a.get_response), env); BDecGetResponse_PDUContent( b, tagId0, elmtLen0, (v->a.get_response), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( CNTX, CONS, 3)): (v->choiceId) = PDUS_SET_REQUEST; (v->a.set_request) = (SetRequest_PDU*) Asn1Alloc(sizeof(SetRequest_PDU)); CheckAsn1Alloc((v->a.set_request), env); BDecSetRequest_PDUContent( b, tagId0, elmtLen0, (v->a.set_request), &totalElmtsLen1, env); break; case(MAKE_TAG_ID( CNTX, CONS, 4)): (v->choiceId) = PDUS_TRAP; (v->a.trap) = (Trap_PDU*) Asn1Alloc(sizeof(Trap_PDU)); CheckAsn1Alloc((v->a.trap), env); BDecTrap_PDUContent( b, tagId0, elmtLen0, (v->a.trap), &totalElmtsLen1, env); break; default: Asn1Error("ERROR - unexpected tag in CHOICE\n"); longjmp(env, -119); break; } /* end switch */ (*bytesDecoded) += totalElmtsLen1; } /* BDecPDUsContent */ void PrintPDUs PARAMS((f, v, indent), FILE* f _AND_ PDUs* v _AND_ unsigned short int indent) { switch(v->choiceId) { case(PDUS_GET_REQUEST): fprintf(f,"get-request "); PrintGetRequest_PDU(f, (v->a.get_request), indent + stdIndentG); break; case(PDUS_GET_NEXT_REQUEST): fprintf(f,"get-next-request "); PrintGetNextRequest_PDU(f, (v->a.get_next_request), indent + stdIndentG); break; case(PDUS_GET_RESPONSE): fprintf(f,"get-response "); PrintGetResponse_PDU(f, (v->a.get_response), indent + stdIndentG); break; case(PDUS_SET_REQUEST): fprintf(f,"set-request "); PrintSetRequest_PDU(f, (v->a.set_request), indent + stdIndentG); break; case(PDUS_TRAP): fprintf(f,"trap "); PrintTrap_PDU(f, (v->a.trap), indent + stdIndentG); break; } } /* PrintPDUs */ AsnLen BEncMessage PARAMS((b, v), BUF_TYPE b _AND_ Message* v) { AsnLen l; BEncEocIfNec(b); l = BEncMessageContent(b, v); l += BEncConsLen(b, l); l += BEncTag1(b, UNIV, CONS, SEQ_TAG_CODE); return(l); } /* BEncMessage */ void BDecMessage PARAMS((b, result, bytesDecoded, env), BUF_TYPE b _AND_ Message* result _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { AsnTag tag; AsnLen elmtLen1; if ( ((tag = BDecTag(b, bytesDecoded, env)) != MAKE_TAG_ID(UNIV, CONS, SEQ_TAG_CODE))) { Asn1Error("BDecMessage: ERROR - wrong tag\n"); longjmp(env, -120); } elmtLen1 = BDecLen(b, bytesDecoded, env); BDecMessageContent(b, tag, elmtLen1, result, bytesDecoded, env); } /* BDecMessage */ AsnLen BEncMessageContent PARAMS((b, v), BUF_TYPE b _AND_ Message* v) { AsnLen totalLen = 0; AsnLen itemLen; AsnLen listLen; void* component; itemLen = BEncPDUsContent( b, (v->data)); totalLen += itemLen; itemLen = BEncAsnOctsContent( b, (&v->community)); itemLen += BEncDefLen( b, itemLen); itemLen += BEncTag1(b, UNIV, PRIM, 4); totalLen += itemLen; itemLen = BEncMessageIntContent( b, (&v->version)); BEncDefLenTo127( b, itemLen); itemLen++; itemLen += BEncTag1(b, UNIV, PRIM, 2); totalLen += itemLen; return (totalLen); } /* BEncMessageContent */ void BDecMessageContent PARAMS((b, tagId0, elmtLen0, v, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId0 _AND_ AsnLen elmtLen0 _AND_ Message* v _AND_ AsnLen* bytesDecoded _AND_ ENV_TYPE env) { int seqDone = FALSE; AsnLen totalElmtsLen1 = 0; AsnLen elmtLen1; AsnTag tagId1; int mandatoryElmtCount1 = 0; AsnLen totalElmtsLen2 = 0; AsnLen elmtLen2; AsnTag tagId2; tagId1 = BDecTag(b, &totalElmtsLen1, env); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, INTEGER_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecMessageIntContent( b, tagId1, elmtLen1, (&v->version), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -121); if ((( tagId1 == MAKE_TAG_ID( UNIV, PRIM, OCTETSTRING_TAG_CODE)) || ( tagId1 == MAKE_TAG_ID( UNIV, CONS, OCTETSTRING_TAG_CODE)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); BDecAsnOctsContent( b, tagId1, elmtLen1, (&v->community), &totalElmtsLen1, env); tagId1 = BDecTag(b, &totalElmtsLen1, env); } else longjmp(env, -122); if ((( tagId1 == MAKE_TAG_ID( CNTX, CONS, 0)) || ( tagId1 == MAKE_TAG_ID( CNTX, CONS, 1)) || ( tagId1 == MAKE_TAG_ID( CNTX, CONS, 2)) || ( tagId1 == MAKE_TAG_ID( CNTX, CONS, 3)) || ( tagId1 == MAKE_TAG_ID( CNTX, CONS, 4)))) { elmtLen1 = BDecLen (b, &totalElmtsLen1, env); (v->data) = (PDUs*) Asn1Alloc(sizeof(PDUs)); CheckAsn1Alloc((v->data), env); BDecPDUsContent( b, tagId1, elmtLen1, (v->data), &totalElmtsLen1, env); seqDone = TRUE; if ( elmtLen0 == INDEFINITE_LEN ) BDecEoc(b, &totalElmtsLen1, env); else if (totalElmtsLen1 != elmtLen0) longjmp(env, -123); } else longjmp(env, -124); if (!seqDone) longjmp(env, -125); (*bytesDecoded) += totalElmtsLen1; } /* BDecMessageContent */ void PrintMessage PARAMS((f, v, indent), FILE* f _AND_ Message* v _AND_ unsigned short int indent) { if (v == NULL) return; fprintf(f,"{ -- SEQUENCE --\n"); Indent(f, indent + stdIndentG); fprintf(f,"version "); PrintMessageInt(f, (&v->version), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"community "); PrintAsnOcts(f, (&v->community), indent + stdIndentG); fprintf(f, ",\n"); Indent(f, indent + stdIndentG); fprintf(f,"data "); PrintPDUs(f, (v->data), indent + stdIndentG); fprintf(f,"\n"); Indent(f, indent); fprintf(f,"}\n"); } /* PrintMessage */ linux-atm-2.5.1/src/ilmid/rfc1157_snmp.h0000644000200100001440000001252407360675442016464 0ustar chasusers/* * rfc1157_snmp.h * * "RFC1157-SNMP" ASN.1 module C type definitions and prototypes * * This .h file was by snacc on Fri Jan 31 14:49:02 1997 * * UBC snacc written compiler by Mike Sample * * NOTE: This is a machine generated file - editing not recommended */ #ifndef _rfc1157_snmp_h_ #define _rfc1157_snmp_h_ #define COLDSTART 0 #define WARMSTART 1 #define LINKDOWN 2 #define LINKUP 3 #define AUTHENTICATIONFAILURE 4 #define EGPNEIGHBORLOSS 5 #define ENTERPRISESPECIFIC 6 typedef AsnInt Trap_PDUInt; /* INTEGER { COLDSTART(0), WARMSTART(1), LINKDOWN(2), LINKUP(3), AUTHENTICATIONFAILURE(4), EGPNEIGHBORLOSS(5), ENTERPRISESPECIFIC(6) } */ #define BEncTrap_PDUIntContent BEncAsnIntContent #define BDecTrap_PDUIntContent BDecAsnIntContent #define PrintTrap_PDUInt PrintAsnInt #define NOERROR 0 #define TOOBIG 1 #define NOSUCHNAME 2 #define BADVALUE 3 #define READONLY 4 #define GENERR 5 typedef AsnInt PDUInt; /* INTEGER { NOERROR(0), TOOBIG(1), NOSUCHNAME(2), BADVALUE(3), READONLY(4), GENERR(5) } */ #define BEncPDUIntContent BEncAsnIntContent #define BDecPDUIntContent BDecAsnIntContent #define PrintPDUInt PrintAsnInt #define VERSION_1 0 typedef AsnInt MessageInt; /* INTEGER { VERSION_1(0) } */ #define BEncMessageIntContent BEncAsnIntContent #define BDecMessageIntContent BDecAsnIntContent #define PrintMessageInt PrintAsnInt typedef struct VarBind /* SEQUENCE */ { ObjectName name; /* ObjectName */ struct ObjectSyntax* value; /* ObjectSyntax */ } VarBind; AsnLen BEncVarBindContent PROTO((BUF_TYPE b, VarBind* v)); void BDecVarBindContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, VarBind* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintVarBind PROTO((FILE* f, VarBind* v, unsigned short int indent)); typedef AsnList VarBindList; /* SEQUENCE OF VarBind */ AsnLen BEncVarBindListContent PROTO((BUF_TYPE b, VarBindList* v)); void BDecVarBindListContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, VarBindList* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintVarBindList PROTO((FILE* f, VarBindList* v, unsigned short int indent)); typedef struct PDU /* SEQUENCE */ { AsnInt request_id; /* INTEGER */ PDUInt error_status; /* PDUInt */ AsnInt error_index; /* INTEGER */ VarBindList* variable_bindings; /* VarBindList */ } PDU; AsnLen BEncPDUContent PROTO((BUF_TYPE b, PDU* v)); void BDecPDUContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, PDU* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintPDU PROTO((FILE* f, PDU* v, unsigned short int indent)); typedef struct Trap_PDU /* [4] IMPLICIT SEQUENCE */ { AsnOid enterprise; /* OBJECT IDENTIFIER */ struct NetworkAddress* agent_addr; /* NetworkAddress */ Trap_PDUInt generic_trap; /* Trap-PDUInt */ AsnInt specific_trap; /* INTEGER */ TimeTicks time_stamp; /* TimeTicks */ VarBindList* variable_bindings; /* VarBindList */ } Trap_PDU; AsnLen BEncTrap_PDUContent PROTO((BUF_TYPE b, Trap_PDU* v)); void BDecTrap_PDUContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, Trap_PDU* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintTrap_PDU PROTO((FILE* f, Trap_PDU* v, unsigned short int indent)); typedef struct PDU GetRequest_PDU; /* [0] IMPLICIT PDU */ #define BEncGetRequest_PDUContent BEncPDUContent #define BDecGetRequest_PDUContent BDecPDUContent #define PrintGetRequest_PDU PrintPDU typedef struct PDU GetNextRequest_PDU; /* [1] IMPLICIT PDU */ #define BEncGetNextRequest_PDUContent BEncPDUContent #define BDecGetNextRequest_PDUContent BDecPDUContent #define PrintGetNextRequest_PDU PrintPDU typedef struct PDU GetResponse_PDU; /* [2] IMPLICIT PDU */ #define BEncGetResponse_PDUContent BEncPDUContent #define BDecGetResponse_PDUContent BDecPDUContent #define PrintGetResponse_PDU PrintPDU typedef struct PDU SetRequest_PDU; /* [3] IMPLICIT PDU */ #define BEncSetRequest_PDUContent BEncPDUContent #define BDecSetRequest_PDUContent BDecPDUContent #define PrintSetRequest_PDU PrintPDU typedef struct PDUs /* CHOICE */ { enum PDUsChoiceId { PDUS_GET_REQUEST, PDUS_GET_NEXT_REQUEST, PDUS_GET_RESPONSE, PDUS_SET_REQUEST, PDUS_TRAP } choiceId; union PDUsChoiceUnion { GetRequest_PDU* get_request; /* GetRequest-PDU */ GetNextRequest_PDU* get_next_request; /* GetNextRequest-PDU */ GetResponse_PDU* get_response; /* GetResponse-PDU */ SetRequest_PDU* set_request; /* SetRequest-PDU */ struct Trap_PDU* trap; /* Trap-PDU */ } a; } PDUs; AsnLen BEncPDUsContent PROTO((BUF_TYPE b, PDUs* v)); void BDecPDUsContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, PDUs* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintPDUs PROTO((FILE* f, PDUs* v, unsigned short int indent)); typedef struct Message /* SEQUENCE */ { MessageInt version; /* MessageInt */ AsnOcts community; /* OCTET STRING */ struct PDUs* data; /* PDUs */ } Message; AsnLen BEncMessage PROTO((BUF_TYPE b, Message* v)); void BDecMessage PROTO(( BUF_TYPE b, Message* result, AsnLen* bytesDecoded, ENV_TYPE env)); AsnLen BEncMessageContent PROTO((BUF_TYPE b, Message* v)); void BDecMessageContent PROTO(( BUF_TYPE b, AsnTag tagId0, AsnLen elmtLen0, Message* v, AsnLen* bytesDecoded, ENV_TYPE env)); void PrintMessage PROTO((FILE* f, Message* v, unsigned short int indent)); #endif /* conditional include of rfc1157_snmp.h */ linux-atm-2.5.1/src/ilmid/states.c0000644000200100001440000001670507706331407015634 0ustar chasusers#include #include #include #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" #include "message.h" #include "util.h" #include "io.h" #include "atmd.h" #include "mib.h" #include "atmf_uni.h" #include "states.h" #include "ilmid.h" #include "actions.h" #include "wait.h" extern int retries; extern int ilmi_errno; extern long int requestID; extern AsnOid *esi_oid; extern AttPoint *apoint; extern Config *config; extern int alarm_flag; extern State ilmi_state; extern AttPoint *newapoint; Message *wait_for_response( int fd, int itf, Msgs *msgs, int sec ); void copy_attachment_point( AttPoint *, AttPoint * ); int compare_attachment_point( AttPoint *, AttPoint * ); #define RESPONSE_TIMEOUT 2 #define POLL_PERIOD 15 #define COMPONENT "ILMI" /* state functions */ int state_stopped( int fd, int itf, Msgs *msgs ){ diag( COMPONENT, DIAG_INFO, "State S1: stopped" ); ilmi_state = down; action_A1( fd, msgs ); /* reset uptime */ action_A2( fd, msgs ); /* reset attachment point info */ action_A4( fd, msgs ); /* clear tables */ return S2; } int state_failing( int fd, int itf, Msgs *msgs ){ Message *m; diag( COMPONENT, DIAG_INFO, "State S2: failing" ); ilmi_state = down; action_A11( fd, msgs ); /* send coldstart */ action_A12( fd, msgs ); /* send "get" for attachment point */ /* continue to ask for attachment point as long as it times out */ while(( m = wait_for_attachment_point( fd, itf, msgs )) == NULL ){ if( ilmi_errno == ECOLDSTART ) return S1; action_A11( fd, msgs ); /* send coldstart */ action_A12( fd, msgs ); /* send "get" for attachment point */ } action_A11( fd, msgs ); /* one more for good measure */ return S3; } int state_establishing( int fd, int itf, Msgs *msgs ){ Message *m; diag( COMPONENT, DIAG_INFO, "State S3: establishing" ); ilmi_state = down; /* if they are the same ... */ if( compare_attachment_point( apoint, newapoint ) == 0 ){ action_A13( fd, msgs ); /* request config */ } else{ // reset_apoint( apoint ); /* copy( dest, src ) */ copy_attachment_point( apoint, newapoint ); /* action_A3 */ action_A9( fd, msgs ); /* release SVCs */ action_A13( fd, msgs ); /* request config */ action_A7( fd, msgs ); /* retries = 0 */ action_A5( fd, msgs ); /* start timer */ } while(( m = wait_for_config( fd, itf, msgs )) == NULL ){ if( ilmi_errno == ETIMEOUT ) action_A13( fd, msgs ); else if( ilmi_errno == ECOLDSTART ) return S1; } return S4; } int state_config( int fd, int itf, Msgs *msgs ){ Message *tmp; int newstate = S1; diag( COMPONENT, DIAG_INFO, "State S4: config" ); ilmi_state = down; if( config->atmfAtmLayerUniVersion == 0 ){ diag( COMPONENT, DIAG_ERROR, "remote IME did not negotiate " "a UNI version -- using configured uni version." ); } else if( config->atmfAtmLayerUniVersion < atmfAtmLayerUniVersionValue ){ diag( COMPONENT, DIAG_ERROR, "remote IME does not support" " the locally configured uni version" ); atmfAtmLayerUniVersionValue = config->atmfAtmLayerUniVersion; } if( config->atmfAtmLayerDeviceType == 2 /* NODE */ ){ action_A6( fd, msgs ); /* stop timer */ action_A10( fd, msgs ); /* Start signalling */ action_A14( fd, msgs ); /* request address status */ action_A7( fd, msgs ); /* retries = 0 */ action_A5( fd, msgs ); /* start timer */ newstate = S5; /* retrieve network prefixes */ } else if( config->atmfAtmLayerDeviceType == 1 /* USER */ ){ diag( COMPONENT, DIAG_ERROR, "Remote device is also a host" ); action_A10( fd, msgs ); /* start signalling */ action_A14( fd, msgs ); /* get next prefix */ action_A7( fd, msgs ); /* retries = 0 */ action_A5( fd, msgs ); /* start timer */ newstate = S6; } else if( config->atmfAtmLayerDeviceType == 0 /* ??? */ ){ diag( COMPONENT, DIAG_ERROR, "Remote IME does not know " "what type of device it is -- assume NODE" ); action_A6( fd, msgs ); /* stop timer */ action_A10( fd, msgs ); /* Start signalling */ action_A14( fd, msgs ); /* request address status */ action_A7( fd, msgs ); /* retries = 0 */ action_A5( fd, msgs ); /* start timer */ newstate = S5; /* retrieve network prefixes */ } while(( tmp = wait_for_status( fd, itf, msgs )) == NULL ){ if( ilmi_errno == ETIMEOUT ){ action_A14( fd, msgs ); /* request address status */ action_A8( fd, msgs ); /* retries++ */ action_A5( fd, msgs ); /* start timer */ } else if( ilmi_errno == ECOLDSTART ){ return S1; } } action_get_sysgroup( fd, msgs ); while(( tmp = wait_for_sysgroup( fd, itf, msgs )) == NULL ){ if( ilmi_errno == ETIMEOUT ){ action_get_sysgroup( fd, msgs ); action_A8( fd, msgs ); /* retries++ */ action_A5( fd, msgs ); /* start timer */ } else if( ilmi_errno == ECOLDSTART ){ return S1; } } return newstate; } int state_retrievePrefixes( int fd, int itf, Msgs *msgs ){ int newstate = S1; diag( COMPONENT, DIAG_INFO, "State S5: retrieve prefixes" ); ilmi_state = down; /* assume address registration is supported on peer */ wait_for_prefix( fd, itf, msgs ); newstate = S6; /* register network prefixes */ return newstate; } int state_registerPrefixes( int fd, int itf, Msgs *msgs ){ Message *m; diag( COMPONENT, DIAG_INFO, "State S6: register prefixes" ); ilmi_state = down; /* If RegistrationAdminStatus == 0, switch is confused. Assume * it supports registration. */ if(( config->atmfAddressRegistrationAdminStatus == 1 ) || ( config->atmfAddressRegistrationAdminStatus == 0 )){ action_A6( fd, msgs ); /* stop timer */ action_A15( fd, msgs ); /* set request for table entry */ action_A7( fd, msgs ); /* retries = 0 */ action_A5( fd, msgs ); /* start timer */ while(( m = wait_for_setresponse( fd, itf, msgs )) == NULL ){ if( ilmi_errno == ETIMEOUT ){ /* set request for table entry */ action_A15( fd, msgs ); action_A8( fd, msgs ); /* retries++ */ action_A5( fd, msgs ); /* start timer */ } else if( ilmi_errno == ECOLDSTART ){ return S1; } } } else{ diag( COMPONENT, DIAG_ERROR, "address registration not supported" ); action_A6( fd, msgs ); /* stop timer */ action_A12( fd, msgs ); /* request a.point */ action_A7( fd, msgs ); /* retries = 0 */ action_A5( fd, msgs ); /* start timer */ } return S9; /* verify */ } int state_retrieveAddresses( int fd, int itf, Msgs *msgs ){ /* This would only be called on a switch -- not yet implemented */ diag( COMPONENT, DIAG_INFO, "State S7: retrieve addresses" ); ilmi_state = down; return S9; } int state_registerAddresses( int fd, int itf, Msgs *msgs ){ /* not yet implemented */ diag( COMPONENT, DIAG_INFO, "State S8: register addresses" ); ilmi_state = down; return S9; } /* Should spend most of our time here */ /* ask for updates. if new prefix is set, update and notify user */ int state_verify( int fd, int itf, Msgs *msgs ){ Message *m; diag( COMPONENT, DIAG_INFO, "State S9: verify" ); ilmi_state = up; action_A6( fd, msgs ); /* stop timer */ action_A7( fd, msgs ); /* retries = 0 */ action_A5( fd, msgs ); /* start timer */ m = wait_for_response( fd, itf, msgs, POLL_PERIOD ); if(( m == NULL ) && ( ilmi_errno == ECOLDSTART )){ return S1; } else if( ilmi_errno == EALARM ){ /* interface information must be no older than 30 seconds */ alarm_flag = 0; action_A12( fd, msgs ); /* request attachment point */ while((( m = wait_for_attachment_point( fd, itf, msgs )) == NULL ) && ( retries < 4 )){ action_A12( fd, msgs ); action_A8( fd, msgs ); } if( retries >= 4 ) return S2; /* check for attachment point change */ } return S9; } linux-atm-2.5.1/src/ilmid/states.h0000644000200100001440000000144707706331407015636 0ustar chasusers#ifndef __STATES_H #define __STATES_H #include "message.h" #include "asn1/asn_incl.h" #include "ilmid.h" /* Ilmi states */ #define S1 0 #define S2 1 #define S3 2 #define S4 3 #define S5 4 #define S6 5 #define S7 6 #define S8 7 #define S9 8 #define STATES 9 int state_stopped( int fd, int itf, Msgs *msgs ); int state_failing( int fd, int itf, Msgs *msgs ); int state_establishing( int fd, int itf, Msgs *msgs ); int state_config( int fd, int itf, Msgs *msgs ); int state_retrievePrefixes( int fd, int itf, Msgs *msgs ); int state_registerPrefixes( int fd, int itf, Msgs *msgs ); int state_retrieveAddresses( int fd, int itf, Msgs *msgs ); int state_registerAddresses( int fd, int itf, Msgs *msgs ); int state_verify( int fd, int itf, Msgs *msgs ); #endif linux-atm-2.5.1/src/ilmid/sysgroup.c0000644000200100001440000000415607360675442016227 0ustar chasusers/* * sysgroup.c - MIB-II system group * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #if HAVE_CONFIG_H #include #endif #include #include "sysgroup.h" #include "string.h" AsnOid sysDescr = {8, "\53\06\01\02\01\01\01\00"}; AsnOid sysObjectID = {8, "\53\06\01\02\01\01\02\00"}; AsnOid sysUpTime = {8, "\53\06\01\02\01\01\03\00"}; AsnOid sysContact = {8, "\53\06\01\02\01\01\04\00"}; AsnOid sysName = {8, "\53\06\01\02\01\01\05\00"}; AsnOid sysLocation = {8, "\53\06\01\02\01\01\06\00"}; AsnOid sysServices = {8, "\53\06\01\02\01\01\07\00"}; AsnOcts sysDescrValue = {25, "ATM on Linux Version " VERSION}; AsnOid sysObjectIDValue = {8, "\53\06\01\04\01\03\01\01"}; AsnOcts sysContactValue = {14, "root@localhost"}; AsnOcts sysNameValue = {23, "localhost.my.domain.com"}; AsnOcts sysLocationValue = {36, "Connected to an ATM switch somewhere"}; AsnInt sysServicesValue = 4; static time_t up_time; void resetUpTime(void) { up_time = time(0); } TimeTicks accessUpTime(void) { /* Return time in hundreds of seconds */ return (TimeTicks) ((time(0) - up_time) * 100); } AsnInt getUpTime(VarBind *varbind, Variable *var) { varbind->value = Asn1Alloc(sizeof(struct ObjectSyntax)); varbind->value->choiceId = OBJECTSYNTAX_SIMPLE; varbind->value->a.simple = Asn1Alloc(sizeof(struct SimpleSyntax)); varbind->value->a.simple->choiceId = SIMPLESYNTAX_NUMBER; varbind->value->a.simple->a.number = (AsnInt) accessUpTime(); return NOERROR; } linux-atm-2.5.1/src/ilmid/sysgroup.h0000644000200100001440000000277707360675442016243 0ustar chasusers/* * sysgroup.h - MIB-II system group * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #ifndef SYSGROUP_H #define SYSGROUP_H #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" #include "mib.h" extern AsnOid sysDescr; extern AsnOid sysObjectID; extern AsnOid sysUpTime; extern AsnOid sysContact; extern AsnOid sysName; extern AsnOid sysLocation; extern AsnOid sysServices; extern AsnOcts sysDescrValue; extern AsnOid sysObjectIDValue; extern AsnOcts sysContactValue; extern AsnOcts sysNameValue; extern AsnOcts sysLocationValue; extern AsnInt sysServicesValue; AsnInt getString(VarBind *varbind, Variable *var); AsnInt getOid(VarBind *varbind, Variable *var); void resetUpTime(void); TimeTicks accessUpTime(void); AsnInt getUpTime(VarBind *varbind, Variable *var); AsnInt getInteger(VarBind *varbind, Variable *var); #endif linux-atm-2.5.1/src/ilmid/util.c0000644000200100001440000000476407360675442015316 0ustar chasusers/* * util.c - Various utility procedures * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #if HAVE_CONFIG_H #include #endif #include "util.h" #include "atmd.h" AsnOidResult AsnOidCompare(AsnOid *o1, AsnOid *o2) { int result; if(o1->octetLen > o2->octetLen) { result = memcmp(o1->octs, o2->octs, o2->octetLen); if(result < 0) return AsnOidLess; else return AsnOidGreater; } else if(o1->octetLen < o2->octetLen) { result = memcmp(o1->octs, o2->octs, o1->octetLen); if(result > 0) return AsnOidGreater; else if(result == 0) return AsnOidRoot; else return AsnOidLess; } else { result = memcmp(o1->octs, o2->octs, o1->octetLen); if(result < 0) return AsnOidLess; else if(result == 0) return AsnOidEqual; else return AsnOidGreater; } } int AsnOidSize(AsnOid *oid) { int n, size; for(n = 1, size = 2; n < oid->octetLen; n++) if(!(oid->octs[n] & 0x80)) size++; return size; } VarBind *AppendVarBind(VarBindList *list) { AsnListNode *newNode; VarBind *entry; newNode = alloc_t(AsnListNode); newNode->data = alloc_t(VarBind); newNode->next = NULL; if(list->last == NULL) { newNode->prev = NULL; list->first = newNode; list->last = newNode; } else { newNode->prev = list->last; list->last->next = newNode; list->last = newNode; } list->curr = newNode; list->count++; return newNode->data; } void AppendListNode(VarBindList *list, AsnListNode *node) { node->next = NULL; if(list->last == NULL) { node->prev = NULL; list->first = node; list->last = node; } else { node->prev = list->last; list->last->next = node; list->last = node; } list->curr = node; list->count++; return; } linux-atm-2.5.1/src/ilmid/util.h0000644000200100001440000000266307360675442015317 0ustar chasusers/* * util.h - Various utility procedures * * Written by Scott W. Shumate * * Copyright (c) 1995-97 All Rights Reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * I ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. */ #ifndef UTIL_H #define UTIL_H #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" #include "atmd.h" #define AsnOidCopy(o1, o2) ({memcpy((o1)->octs, (o2)->octs, (o1)->octetLen = (o2)->octetLen);}) #define AsnOidAppend(o1, o2) ({memcpy(&(o1)->octs[(o1)->octetLen], (o2)->octs, (o2)->octetLen); \ (o1)->octetLen += (o2)->octetLen;}) typedef enum _AsnOidResult { AsnOidLess, AsnOidRoot, AsnOidEqual, AsnOidGreater } AsnOidResult; AsnOidResult AsnOidCompare(AsnOid *o1, AsnOid *o2); int AsnOidSize(AsnOid *oid); VarBind *AppendVarBind(VarBindList *list); void AppendListNode(VarBindList *list, AsnListNode *node); #endif linux-atm-2.5.1/src/ilmid/wait.c0000644000200100001440000001613310321242516015255 0ustar chasusers#include #include #include #include #include "asn_incl.h" #include "rfc1155_smi.h" #include "rfc1157_snmp.h" #include "message.h" #include "util.h" #include "io.h" #include "atmd.h" #include "mib.h" #include "atmf_uni.h" #include "sysgroup.h" #include "ilmid.h" extern int ilmi_errno; extern AttPoint *apoint; extern Config *config; extern SysGroup *remsys; Message *wait_for_response( int fd, int itf, Msgs *msgs, int sec ); void copy_attachment_point( AttPoint *, AttPoint * ); int compare_attachment_point( AttPoint *, AttPoint * ); extern AttPoint *newapoint; #define RESPONSE_TIMEOUT 2 #define POLL_PERIOD 15 #define COMPONENT "ILMI" /* support functions */ #define RESP_RID(x) ((x)->data->a.get_response->request_id) #define GETNEXT_RID(x) ((x)->data->a.get_next_request->request_id) void reset_apoint( AttPoint *a ){ if( a->atmfPortMyIfName.octs != NULL ){ free( a->atmfPortMyIfName.octs ); a->atmfPortMyIfName.octs = NULL; } if( a->atmfMySystemIdentifier.octs != NULL ){ free( a->atmfMySystemIdentifier.octs ); a->atmfMySystemIdentifier.octs = NULL; } memset( a, 0, sizeof( AttPoint )); } static void reset_remsys( void ){ if( remsys->sysDescr.octs != NULL ) free( remsys->sysDescr.octs ); if( remsys->sysObjectID.octs != NULL ) free( remsys->sysObjectID.octs ); if( remsys->sysContact.octs != NULL ) free( remsys->sysContact.octs ); if( remsys->sysName.octs != NULL ) free( remsys->sysName.octs ); if( remsys->sysLocation.octs != NULL ) free( remsys->sysLocation.octs ); memset( remsys, 0, sizeof( SysGroup )); } void wait_for_prefix( int fd, int itf, Msgs *msgs ){ while(( wait_for_response( fd, itf, msgs, RESPONSE_TIMEOUT ) != NULL ) && ( ilmi_errno != ESETPREFIX )); } static void AsnOctsCopy( dest, src ) AsnOcts *dest; AsnOcts *src; { if( src->octetLen > 0 ){ dest->octs = (char *)malloc( src->octetLen + 1 ); memset( dest->octs, 0, src->octetLen + 1 ); dest->octetLen = src->octetLen; memcpy( dest->octs, src->octs, src->octetLen ); } else { dest->octs = (char *)malloc( 8 ); dest->octetLen = 8; memcpy( dest->octs, "(empty)\0", 8 ); } } Message *wait_for_sysgroup( int fd, int itf, Msgs *msgs ){ Message *m = NULL; VarBind *varbind; VarBindList *vbl; m = wait_for_response( fd, itf, msgs, RESPONSE_TIMEOUT ); if( m == NULL ) return NULL; while( GETNEXT_RID( msgs->sysmsg ) != RESP_RID( m )) m = wait_for_response( fd, itf, msgs, RESPONSE_TIMEOUT ); reset_remsys(); vbl = m->data->a.get_response->variable_bindings; FOR_EACH_LIST_ELMT( varbind, vbl ){ if( AsnOidCompare( &sysDescr, &varbind->name ) == AsnOidEqual ){ AsnOctsCopy( &remsys->sysDescr, varbind->value->a.simple->a.string ); } else if( AsnOidCompare( &sysObjectID, &varbind->name ) == AsnOidEqual ){ AsnOctsCopy( &remsys->sysObjectID, varbind->value->a.simple->a.string ); } else if( AsnOidCompare( &sysUpTime, &varbind->name ) == AsnOidEqual ){ remsys->sysUpTime = varbind->value->a.simple->a.number; } else if( AsnOidCompare( &sysContact, &varbind->name ) == AsnOidEqual ){ AsnOctsCopy( &remsys->sysContact, varbind->value->a.simple->a.string ); } else if( AsnOidCompare( &sysName, &varbind->name ) == AsnOidEqual ){ AsnOctsCopy( &remsys->sysName, varbind->value->a.simple->a.string ); } else if( AsnOidCompare( &sysLocation, &varbind->name ) == AsnOidEqual ){ AsnOctsCopy( &remsys->sysLocation, varbind->value->a.simple->a.string ); } else if( AsnOidCompare( &sysServices, &varbind->name ) == AsnOidEqual ){ remsys->sysServices = varbind->value->a.simple->a.number; } } return m; } Message *wait_for_attachment_point( int fd, int itf, Msgs *msgs ){ Message *m = NULL; VarBind *varbind; VarBindList *vbl; m = wait_for_response( fd, itf, msgs, RESPONSE_TIMEOUT ); if( m == NULL ) return NULL; while( GETNEXT_RID( msgs->apointmsg ) != RESP_RID( m )){ m = wait_for_response( fd, itf, msgs, RESPONSE_TIMEOUT ); if( m == NULL ) return NULL; } reset_apoint( newapoint ); vbl = m->data->a.get_response->variable_bindings; FOR_EACH_LIST_ELMT( varbind, vbl ){ if( AsnOidCompare( &atmfMySystemIdentifier, &varbind->name ) == AsnOidEqual ){ AsnOctsCopy( &(newapoint->atmfMySystemIdentifier), varbind->value->a.simple->a.string ); } else if( AsnOidCompare( &atmfPortMyIdentifier, &varbind->name ) == AsnOidEqual ){ newapoint->atmfPortMyIfIdentifier = varbind->value->a.simple->a.number; } else if( AsnOidCompare( &sysUpTime, &varbind->name ) == AsnOidEqual ){ newapoint->sysUpTime = varbind->value->a.simple->a.number; } else if( AsnOidCompare( &atmfPortMyIfName, &varbind->name ) == AsnOidEqual ){ AsnOctsCopy( &(newapoint->atmfPortMyIfName), varbind->value->a.simple->a.string ); } } return m; } Message *wait_for_config( int fd, int itf, Msgs *msgs ){ Message *m = NULL; VarBind *varbind; VarBindList *vbl; m = wait_for_response( fd, itf, msgs, RESPONSE_TIMEOUT ); if( m == NULL ) return NULL; if( RESP_RID( m ) != GETNEXT_RID( msgs->config )){ diag( COMPONENT, DIAG_ERROR, "received response with invalid request id" ); } vbl = m->data->a.get_response->variable_bindings; FOR_EACH_LIST_ELMT( varbind, vbl ){ if( AsnOidCompare( &atmfAtmLayerDeviceType, &varbind->name ) == AsnOidEqual ) config->atmfAtmLayerDeviceType = varbind->value->a.simple->a.number; else if( AsnOidCompare( &atmfAtmLayerUniVersion, &varbind->name ) == AsnOidEqual ) config->atmfAtmLayerUniVersion = varbind->value->a.simple->a.number; else if( AsnOidCompare( &atmfAtmLayerUniType, &varbind->name ) == AsnOidEqual ) config->atmfAtmLayerUniType = varbind->value->a.simple->a.number; else if( AsnOidCompare( &atmfAtmLayerMaxVpiBits, &varbind->name ) == AsnOidEqual ) config->atmfAtmLayerMaxVpiBits = varbind->value->a.simple->a.number; else if( AsnOidCompare( &atmfAtmLayerMaxVciBits, &varbind->name ) == AsnOidEqual ) config->atmfAtmLayerMaxVciBits = varbind->value->a.simple->a.number; else if( AsnOidCompare( &atmfAddressRegistrationAdminStatus, &varbind->name ) == AsnOidEqual ) config->atmfAddressRegistrationAdminStatus = varbind->value->a.simple->a.number; } return m; } Message *wait_for_status( int fd, int itf, Msgs *msgs ){ Message *m = NULL; VarBind *varbind; VarBindList *vbl; m = wait_for_response( fd, itf, msgs, RESPONSE_TIMEOUT ); if( m == NULL ) return NULL; while( RESP_RID( m ) != GETNEXT_RID( msgs->addrtable )){ m = wait_for_response( fd, itf, msgs, RESPONSE_TIMEOUT ); if( m == NULL ) return NULL; } /* retrieve the lecs address */ vbl = m->data->a.get_response->variable_bindings; FOR_EACH_LIST_ELMT(varbind, vbl) { if (AsnOidCompare(&atmfSrvcRegATMAddress, &varbind->name) == AsnOidRoot) { add_lecs(itf, varbind->value->a.simple->a.string->octs); } else if (AsnOidCompare(&atmfAddressStatus, &varbind->name) == AsnOidRoot) { diag(COMPONENT, DIAG_ERROR, "address already registered in switch"); } } return m; } Message *wait_for_setresponse( int fd, int itf, Msgs *msgs ){ Message *m = NULL; m = wait_for_response( fd, itf, msgs, RESPONSE_TIMEOUT ); return m; } linux-atm-2.5.1/src/ilmid/wait.h0000644000200100001440000000070407706331407015272 0ustar chasusers#ifndef __WAIT_H #define __WAIT_H #include "ilmid.h" void wait_for_prefix( int fd, int itf, Msgs *msgs ); Message *wait_for_sysgroup( int fd, int itf, Msgs *msgs ); Message *wait_for_attachment_point( int fd, int itf, Msgs *msgs ); Message *wait_for_config( int fd, int itf, Msgs *msgs ); Message *wait_for_status( int fd, int itf, Msgs *msgs ); Message *wait_for_setresponse( int fd, int itf, Msgs *msgs ); void reset_apoint( AttPoint *a ); #endif linux-atm-2.5.1/src/ilmid/asn1/0000755000200100001440000000000011304770375015016 5ustar chasuserslinux-atm-2.5.1/src/ilmid/asn1/CVS/0000755000200100001440000000000011304767137015453 5ustar chasuserslinux-atm-2.5.1/src/ilmid/asn1/CVS/Root0000644000200100001440000000007411304767137016322 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/ilmid/asn1/CVS/Repository0000644000200100001440000000003111304767137017547 0ustar chasuserslinux-atm/src/ilmid/asn1 linux-atm-2.5.1/src/ilmid/asn1/CVS/Entries0000644000200100001440000000313111304767137017005 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /README/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_bits.c/1.2.4.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /asn_bits.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_config.h/1.2.2.1/Sat Jul 19 21:07:19 2003//TV2_5_1 /asn_incl.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_int.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_int.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_len.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_len.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_list.c/1.2.4.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /asn_list.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_null.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_null.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_octs.c/1.2.4.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /asn_octs.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_oid.c/1.2.4.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /asn_oid.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_tag.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /asn_tag.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /exp_buf.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /exp_buf.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /min_buf.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /nibble_alloc.c/1.2.2.1.2.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /nibble_alloc.h/1.2.2.1/Fri May 2 19:26:06 2003//TV2_5_1 /print.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /print.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /sbuf.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /str_stk.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /str_stk.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 D linux-atm-2.5.1/src/ilmid/asn1/CVS/Tag0000644000200100001440000000001011304767137016100 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/ilmid/asn1/.cvsignore0000644000200100001440000000003310666025263017011 0ustar chasusersMakefile Makefile.in .deps linux-atm-2.5.1/src/ilmid/asn1/Makefile-0.790000644000200100001440000000074307360675442017063 0ustar chasusersCC = cc CFLAGS = -O LIBS = SRCS = asn_len.c asn_tag.c asn_int.c asn_octs.c asn_bits.c str_stk.c \ asn_oid.c asn_null.c asn_list.c nibble_alloc.c print.c \ OBJS = $(SRCS:%.c=%.o) default: all all: libasn1.a .c.o: $(CC) $(CFLAGS) -c $< libasn1.a: $(OBJS) ar cr libasn1.a $(OBJS) depend: # makedepend $(INCLUDES) $(SRCS) $(CPP) -M $(SRCS) >.tmpdepend mv .tmpdepend .depend clean: rm -rf libasn1.a $(OBJS) ifeq (.depend,$(wildcard .depend)) include .depend endif linux-atm-2.5.1/src/ilmid/asn1/Makefile.am0000644000200100001440000000065007360675442017061 0ustar chasusersnoinst_LIBRARIES = libasn1.a libasn1_a_SOURCES = asn_len.c asn_len.h asn_tag.c asn_tag.h \ asn_int.c asn_int.h asn_octs.c asn_octs.h \ asn_bits.c asn_bits.h str_stk.c str_stk.h \ asn_oid.c asn_oid.h asn_null.c asn_null.h \ asn_list.c asn_list.h nibble_alloc.c nibble_alloc.h \ print.c print.h \ asn_config.h min_buf.h sbuf.h exp_buf.h EXTRA_libasn1_a_SOURCES = asn_incl.h exp_buf.c EXTRA_DIST = README linux-atm-2.5.1/src/ilmid/asn1/README0000644000200100001440000000753207360675442015713 0ustar chasuserssnacc ASN.1 Compiler Release 1.1 - (updated Jul 93) ----------------------------------------------------- This package provides the C/yacc/lex source code for snacc, an ASN.1 to C or C++ compiler. Snacc is short for "Sample Neufeld Asn.1 to C Compiler" and ASN.1 stands for Abstract Syntax Notation One (CCITT X.208/ ISO 8824). See the COPYRIGHT file for copyright information. What It Does ------------ Given an ASN.1 source file(s) snacc can produce: 1. C routines for BER encoding, decoding, printing and freeing. 2. C++ routines for BER encoding, decoding, and printing. 3. A type table that can be used with C driver routines for BER encoding, decoding, printing and freeing. 4. if you are really lucky, a core dump! :) Snacc produces reasonably efficient C or C++ routines and data structures to support BER encoding and decoding values of the given ASN.1 data structures. Printing routines for the decoded values are also generated. For C only, hierarchical freeing routines are generated (but are not recommended for efficiency reasons). When using the C or C++ (not table) options, snacc creates the following C files for each ASN.1 source file (module): 1. .h file for the C/C++ translation of the ASN.1 data structure and prototypes for the generated routines. 2. .c/.C file for the C/C++ encode, decode, print and free routines. When using the table option, snacc produces a type table file (a BER encoding) that can later be loaded at runtime by the table driven encoding and decoding routines. See the latex or PostScript version of the documentation in the snacc/doc directory for indepth information on this tool. For a quick introduction, look at the examples in snacc/c_examples, snacc/c++_examples and snacc/tbl_example. Features of ASN.1 Supported --------------------------- - parses ASN.1 '90 (subtype notation etc.) - macro definitions do not generate syntax errors but are are not processed. (retained as string) - value notation is parsed and for OBJECT IDENTIFIERs, INTEGERs and BOOLEANS (any other value in { }'s is currently kept as a string) - handles multiple ASN.1 module compiling/linking (IMPORTS/EXPORTS) - some X.400 and SNMP macros are parsed - supports ";" separted type or value definitions in the ASN.1 source. This is useful when dealing with some macros that introduce parsing problems. Does not require the ";"'s though. - ANY DEFINED BY types are handled using the SNMP OBJECT-TYPE macro to define the identifier to type mapping. Bugs are still quite likely even though this is the second release of snacc. if you find any or have other comments please email: snacc-bugs@cs.ubc.ca To Install It ------------- By default, the snacc makefile uses GNU bison and GNU flex (instead of yacc and lex). If you do not have these installed, see the snacc/src/README and snacc/src/makefile. Otherwise, type "make" in this directory. Hopefully this will put the snacc binary in the snacc/bin directory and build the C runtime library, the table library and the table tools. Alternatively, type "make all" to install these and the C++ library. Compiling problems may occurr on different flavours of UNIX but they should not be too difficult fix. Likely sources of problems include non-standard include files and lex, yacc and cc idiosyncrasies. If your yacc croaks with a message about too many productions use bison. Same thing with lex -> use flex. Bison and flex are both freely available from numerous ftp sites. (even cs.ubc.ca in /mirror2/gnu) The snacc compiler and the generated code will compile under ANSI and non-ANSI C compilers. See the README and the makefile in the snacc/src directory for more compiling information. Snacc has been successfully installed on Sun SPARCs, HP700s, IBM RS 6000s, MIPS, i486/Linux, and many other machines. linux-atm-2.5.1/src/ilmid/asn1/asn_bits.c0000644000200100001440000002456411235572166017000 0ustar chasusers/* * asn_bits.c - BER encode, decode, print and free routines for ASN.1 * BIT STRING type * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #if HAVE_CONFIG_H #include #endif #include #include #include "asn_config.h" #include "asn_len.h" #include "asn_tag.h" #include "str_stk.h" #include "asn_bits.h" static unsigned short int unusedBitsG; char numToHexCharTblG[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd' ,'e', 'f'}; /* * encodes universal TAG LENGTH and Contents of and ASN.1 BIT STRING */ AsnLen BEncAsnBits PARAMS((b, data), BUF_TYPE b _AND_ AsnBits* data) { AsnLen len; len = BEncAsnBitsContent(b, data); len += BEncDefLen(b, len); len += BEncTag1(b, UNIV, PRIM, BITSTRING_TAG_CODE); return(len); } /* BEncAsnInt */ /* * decodes universal TAG LENGTH and Contents of and ASN.1 BIT STRING */ void BDecAsnBits PARAMS((b, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnBits* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { AsnTag tag; AsnLen elmtLen; if (((tag =BDecTag(b, bytesDecoded, env)) != MAKE_TAG_ID(UNIV, PRIM, BITSTRING_TAG_CODE)) && (tag != MAKE_TAG_ID(UNIV, CONS, BITSTRING_TAG_CODE))) { Asn1Error("BDecAsnBits: ERROR - wrong tag on BIT STRING.\n"); longjmp(env, -40); } elmtLen = BDecLen (b, bytesDecoded, env); BDecAsnBitsContent( b, tag, elmtLen, result, bytesDecoded, env); } /* BDecAsnBits */ /* * Encodes the BIT STRING value (including the unused bits * byte) to the given buffer. */ AsnLen BEncAsnBitsContent PARAMS((b, bits), BUF_TYPE b _AND_ AsnBits* bits) { unsigned long int unusedBits; unsigned long int byteLen; if (bits->bitLen == 0) byteLen = 0; else byteLen = ((bits->bitLen-1) / 8) + 1; BufPutSegRvs(b, bits->bits, byteLen); unusedBits = (bits->bitLen % 8); if (unusedBits != 0) unusedBits = 8 - unusedBits; BufPutByteRvs(b, unusedBits); return(byteLen + 1); } /* BEncAsnBitsContent */ /* * Used when decoding to combine constructed pieces into one * contiguous block. * Fills string stack with references to the pieces of a * construced bit string. sets unusedBitsG appropriately. * and strStkG.totalByteLenG to bytelen needed to hold the bitstring */ static void FillBitStringStk PARAMS((b, elmtLen0, bytesDecoded, env), BUF_TYPE b _AND_ AsnLen elmtLen0 _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { unsigned long int refdLen; unsigned long int totalRefdLen; char* strPtr; unsigned long int totalElmtsLen1 = 0; unsigned long int tagId1; unsigned long int elmtLen1; unsigned long int lenToRef; unsigned long int unusedBits; for ( ; (totalElmtsLen1 < elmtLen0) || (elmtLen0 == INDEFINITE_LEN);) { tagId1 = BDecTag(b, &totalElmtsLen1, env); if ( (tagId1 == EOC_TAG_ID) && (elmtLen0 == INDEFINITE_LEN)) { BDEC_2ND_EOC_OCTET(b, &totalElmtsLen1, env); break; } elmtLen1 = BDecLen (b, &totalElmtsLen1, env); if ( tagId1 == MAKE_TAG_ID( UNIV, PRIM, BITSTRING_TAG_CODE)) { /* * primitive part of string, put references to piece(s) in * str stack */ /* * get unused bits octet */ if (unusedBitsG != 0) { /* * whoa - only allowed non-octet aligned bits on * on last piece of bits string */ Asn1Error("FillBitStringStk: ERROR - a component of a constructed BIT STRING that is not the last has non-zero unused bits\n"); longjmp(env, -1); } if (elmtLen1 != 0) unusedBitsG = BufGetByte(b); totalRefdLen = 0; lenToRef =elmtLen1-1; /* remove one octet for the unused bits oct*/ refdLen = lenToRef; while (1) { strPtr = BufGetSeg( b, &refdLen); PUSH_STR(strPtr, refdLen, env); totalRefdLen += refdLen; if (totalRefdLen == lenToRef) break; /* exit this while loop */ if (refdLen == 0) /* end of data */ { Asn1Error("FillBitStringStk: ERROR - expecting more data\n"); longjmp(env, -2); } refdLen = lenToRef - totalRefdLen; } totalElmtsLen1 += elmtLen1; } else if ( tagId1 == MAKE_TAG_ID( UNIV, CONS, BITSTRING_TAG_CODE)) { /* * constructed octets string embedding in this constructed * octet string. decode it. */ FillBitStringStk( b, elmtLen1, &totalElmtsLen1, env); } else /* wrong tag */ { Asn1Error("FillBitStringStk: ERROR - decoded non-BIT STRING tag inside a constructed BIT STRING\n"); longjmp(env, -3); } } /* end of for */ (*bytesDecoded) += totalElmtsLen1; } /* FillBitStringStk */ /* * Decodes a seq of universally tagged bits until either EOC is * encountered or the given len decoded. Returns them in a * single concatenated bit string */ static void BDecConsAsnBits PARAMS((b, len, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnLen len _AND_ AsnBits* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { char* bufCurr; unsigned long int curr; RESET_STR_STK(); /* * decode each piece of the octet string, puting * an entry in the octet/bit string stack for each */ FillBitStringStk(b, len, bytesDecoded, env); /* alloc single str long enough for combined bitstring */ result->bitLen = strStkG.totalByteLen*8 - unusedBitsG; bufCurr = result->bits = Asn1Alloc(strStkG.totalByteLen); /* copy bit string pieces (buffer refs) into single block */ for (curr = 0; curr < strStkG.nextFreeElmt; curr++) { memcpy(bufCurr, strStkG.stk[curr].str, strStkG.stk[curr].len); bufCurr += strStkG.stk[curr].len; } } /* BDecConsAsnBits */ /* * Decodes the content of a BIT STRING (including the unused bits octet) * Always returns a single contiguous bit string */ void BDecAsnBitsContent PARAMS((b, tagId, len, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId _AND_ AsnLen len _AND_ AsnBits* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { char* tmp; /* * tagId is encoded tag shifted into long int. * if CONS bit is set then constructed bit string */ if (TAG_IS_CONS(tagId)) BDecConsAsnBits(b, len, result, bytesDecoded, env); else /* primitive octet string */ { (*bytesDecoded) += len; len--; result->bitLen = (len * 8) - (unsigned int)BufGetByte(b); result->bits = Asn1Alloc(len); BufCopy( result->bits, b, len); if (BufReadError(b)) { Asn1Error("BDecAsnBitsContent: ERROR - decoded past end of data\n"); longjmp(env, -4); } } } /* BDecAsnBitsContent */ /* * Frees the string part of a BIT STRING */ void FreeAsnBits PARAMS((v), AsnBits* v) { Asn1Free(v->bits); } /* FreeAsnBits */ /* * Prints the contents of the given BIT STRING to the * given file. indent is ignored. Always uses ASN.1 Value Notaion * Hex format. (Should be binary versions in some cases) */ void PrintAsnBits PARAMS((f,v, indent), FILE* f _AND_ AsnBits* v _AND_ unsigned short indent) { int i; unsigned long int octetLen; if (v->bitLen == 0) octetLen = 0; else octetLen = (v->bitLen-1)/8 +1; fprintf(f,"'"); for(i = 0; i < octetLen; i++) fprintf(f,"%c%c", TO_HEX(v->bits[i] >> 4), TO_HEX(v->bits[i])); fprintf(f,"'H"); } /* PrintAsnBits */ /* * Returns TRUE if the given BIT STRINGs are identical. * Otherwise returns FALSE. */ int AsnBitsEquiv PARAMS((b1, b2), AsnBits* b1 _AND_ AsnBits* b2) { int octetsLessOne; int octetBits; if ((b1->bitLen == 0) && (b2->bitLen == 0)) return(TRUE); octetsLessOne = (b1->bitLen-1)/8; octetBits = 7 - (b1->bitLen % 8); /* trailing bits may not be significant */ return ( (b1->bitLen == b2->bitLen) && (memcmp(b1->bits, b2->bits, octetsLessOne) == 0) && (( b1->bits[octetsLessOne] & (0xFF << octetBits)) == ( b1->bits[octetsLessOne] & (0xFF << octetBits)))); } /* AsnBitsEquiv */ /* * Set given bit to 1. Most significant bit is bit 0, least significant * is bit (v1->bitLen -1) */ void SetAsnBit PARAMS((b1, bit), AsnBits* b1 _AND_ unsigned long int bit) { unsigned long int octet; unsigned long int octetsBit; if (bit < b1->bitLen) { octet = bit/8; octetsBit = 7 - (bit % 8);/* bit zero is first/most sig bit in octet */ b1->bits[octet] |= 1 << octetsBit; } } /* SetAsnBit */ /* * Set given bit to 0. Most significant bit is bit 0, least significant * is bit (v1->bitLen -1) */ void ClrAsnBit PARAMS((b1, bit), AsnBits* b1 _AND_ unsigned long int bit) { unsigned long int octet; unsigned long int octetsBit; if (bit < b1->bitLen) { octet = bit/8; octetsBit = 7 - (bit % 8);/* bit zero is first/most sig bit in octet */ b1->bits[octet] &= ~(1 << octetsBit); } } /* ClrAsnBit */ /* * Get given bit. Most significant bit is bit 0, least significant * is bit (v1->bitLen -1). Returns TRUE if the bit is 1. Returns FALSE * if the bit is 0. if the bit is out of range then returns 0. */ int GetAsnBit PARAMS((b1, bit), AsnBits* b1 _AND_ unsigned long int bit) { unsigned long int octet; unsigned long int octetsBit; if (bit < b1->bitLen) { octet = bit/8; octetsBit = 7 - (bit % 8); /* bit zero is first/most sig bit in octet*/ return (b1->bits[octet] & (1 << octetsBit)); } return(0); } /* AsnBits::GetBit */ linux-atm-2.5.1/src/ilmid/asn1/asn_bits.h0000644000200100001440000000321707360675442017002 0ustar chasusers/* * asn_bits.h * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #ifndef _asn_bits_h_ #define _asn_bits_h_ typedef struct AsnBits { int bitLen; char* bits; } AsnBits; extern char numToHexCharTblG[]; #define TO_HEX(fourBits) (numToHexCharTblG[(fourBits) & 0x0f]) #define ASNBITS_PRESENT(abits) ((abits)->bits != NULL) AsnLen BEncAsnBits PROTO((BUF_TYPE b, AsnBits* data)); void BDecAsnBits PROTO((BUF_TYPE b, AsnBits* result, AsnLen* bytesDecoded, ENV_TYPE env)); AsnLen BEncAsnBitsContent PROTO((BUF_TYPE b, AsnBits* bits)); void BDecAsnBitsContent PROTO((BUF_TYPE b, AsnLen len, AsnTag tagId, AsnBits* result, AsnLen* bytesDecoded, ENV_TYPE env)); void FreeAsnBits PROTO((AsnBits* v)); void PrintAsnBits PROTO((FILE* f, AsnBits* b, unsigned short int indent)); int AsnBitsEquiv PROTO((AsnBits* b1, AsnBits* b2)); void SetAsnBit PROTO((AsnBits* b1, unsigned long int bit)); void ClrAsnBit PROTO((AsnBits* b1, unsigned long int bit)); int GetAsnBit PROTO((AsnBits* b1, unsigned long int bit)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/asn_config.h0000644000200100001440000001201507706331407017274 0ustar chasusers/* * asn_config.h - configures the ANSI/non ansi, defines * decoder alloc routines and buffer routines * * MS 91 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #ifndef _asn_config_h_ #define _asn_config_h_ #include #include /* for isprint() in asn_octs.c */ #include /* for jmp_buf type, setjmp and longjmp */ #include /* memcpy, etc */ #include /* for free */ /* for pow() used in asn_real.c - must include to avoid casting err on pow */ #include /* * define IEEE_REAL_FMT if your system/compiler uses the native ieee double * this should improve the performance of encoding reals. * If your system has the IEEE library routines (iszero, isinf etc) * then define IEEE_REAL_LIB. If neither are defined then * frexp is used. Performance is probaby best for IEEE_REAL_FMT. * * #define IEEE_REAL_FMT * #define IEEE_REAL_LIB */ /* * define __USE_ANSI_C__ if your compiler supports it */ #define __USE_ANSI_C__ #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #ifndef NULL #define NULL 0 #endif /* * Inspired by gdb 4.0, for better or worse... * (grabbed from Barry Brachman - MS) * * These macros munge C routine declarations such * that they work for ANSI or non-ANSI C compilers */ #ifdef __USE_ANSI_C__ #define PROTO(X) X #define PARAMS(arglist, args) (args) #define NOPARAMS() (void) #define _AND_ , #define DOTS , ... #else #define PROTO(X) () #define PARAMS(arglist, args) arglist args; #define NOPARAMS() () #define _AND_ ; #define DOTS #define void char #endif /* used to test if optionals are present */ #define NOT_NULL(ptr) ((ptr) != NULL) /* * Asn1Error(char* str) - configure error handler */ #define Asn1Error(str) fprintf(stderr,"%s", str); /* * Asn1Warning(char* str) - configure warning mechanism * (currently never called) */ #define Asn1Warning(str) fprintf(stderr,"%s", str); /* * configure memory scheme used by decoder to allocate memory * for the decoded value. * The Asn1Free will be called in the optionally generated * hierachical free routines. * * nibble_alloc allocs from a single buffer and EVERYTHING * is freed by a single fcn call. Individual elmts cannot be freed */ #include "nibble_alloc.h" #define Asn1Alloc(size) NibbleAlloc(size) #define Asn1Free(ptr) /* empty */ #define CheckAsn1Alloc(ptr, env)\ if ((ptr) == NULL)\ longjmp(env, -27); #define ENV_TYPE jmp_buf /* * configure buffer routines that the encoders (write) * and decoders(read) use. This config technique kind * of bites but is allows efficient macro calls. The * Generated code & lib routines call/use the "Buf????" * version of the macro - you define their meaning here. */ #ifdef USE_EXP_BUF #include "exp_buf.h" #define BUF_TYPE ExpBuf** #define BufGetByte(b) ExpBufGetByte(b) #define BufGetSeg(b, lenPtr) ExpBufGetSeg(b, lenPtr) #define BufCopy(dst, b, len) ExpBufCopy( dst, b, len) #define BufSkip(b, len) ExpBufSkip(b, len) #define BufPeekByte(b) ExpBufPeekByte( b) #define BufPutByteRvs(b, byte) ExpBufPutByteRvs( b, byte) #define BufPutSegRvs(b, data, len) ExpBufPutSegRvs( b, data, len) #define BufReadError(b) ExpBufReadError(b) #define BufWriteError(b) ExpBufWriteError(b) #else /* SBUF or MIN_BUF */ #ifdef USE_MIN_BUF #include "min_buf.h" #define BUF_TYPE char** #define BufGetByte(b) MinBufGetByte(b) #define BufGetSeg(b, lenPtr) MinBufGetSeg(b, lenPtr) #define BufCopy(dst, b, len) MinBufCopy(dst, b, len) #define BufSkip(b, len) MinBufSkip(b, len) #define BufPeekByte(b) MinBufPeekByte(b) #define BufPutByteRvs(b, byte) MinBufPutByteRvs(b, byte) #define BufPutSegRvs(b, data, len) MinBufPutSegRvs(b, data, len) #define BufReadError(b) MinBufReadError(b) #define BufWriteError(b) MinBufWriteError(b) #else /* SBUF */ #include "sbuf.h" #define BUF_TYPE SBuf* #define BufGetByte(b) SBufGetByte(b) #define BufGetSeg(b, lenPtr) SBufGetSeg(b, lenPtr) #define BufCopy(dst, b, len) SBufCopy(dst, b, len) #define BufSkip(b, len) SBufSkip(b, len) #define BufPeekByte(b) SBufPeekByte(b) #define BufPutByteRvs(b, byte) SBufPutByteRvs(b, byte) #define BufPutSegRvs(b, data, len) SBufPutSegRvs(b, data, len) #define BufReadError(b) SBufReadError(b) #define BufWriteError(b) SBufWriteError(b) #endif #endif #include "print.h" /* for printing set up */ #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/asn_incl.h0000644000200100001440000000150107360675442016760 0ustar chasusers/* * asn_incl.h * includes hdr files nec for a user prg that calls the generated * encoding/decoding routines. * * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #include "asn_config.h" #include "asn_len.h" #include "asn_tag.h" #include "asn_int.h" #include "asn_octs.h" #include "asn_bits.h" #include "asn_oid.h" #include "asn_null.h" #include "asn_list.h" linux-atm-2.5.1/src/ilmid/asn1/asn_int.c0000644000200100001440000002026607360675442016631 0ustar chasusers/* * asn_int.c - BER encode, decode, print and free routines for the * ASN.1 INTEGER type * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #if HAVE_CONFIG_H #include #endif #include "asn_config.h" #include "asn_len.h" #include "asn_tag.h" #include "asn_int.h" /* * encodes universal TAG LENGTH and Contents of and ASN.1 INTEGER */ AsnLen BEncAsnInt PARAMS((b, data), BUF_TYPE b _AND_ AsnInt* data) { AsnLen len; len = BEncAsnIntContent(b, data); len += BEncDefLen(b, len); len += BEncTag1(b, UNIV, PRIM, INTEGER_TAG_CODE); return(len); } /* BEncAsnInt */ /* * decodes universal TAG LENGTH and Contents of and ASN.1 INTEGER */ void BDecAsnInt PARAMS((b, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnInt* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { AsnTag tag; AsnLen elmtLen; if ( (tag =BDecTag(b, bytesDecoded, env)) != MAKE_TAG_ID(UNIV, PRIM, INTEGER_TAG_CODE)) { Asn1Error("BDecAsnInt: ERROR wrong tag on INTEGER.\n"); longjmp(env, -40); } elmtLen = BDecLen (b, bytesDecoded, env); BDecAsnIntContent( b, tag, elmtLen, result, bytesDecoded, env); } /* BDecAsnInt */ /* * encodes signed long integer's contents */ AsnLen BEncAsnIntContent PARAMS((b, data), BUF_TYPE b _AND_ AsnInt* data) { int len; int i; unsigned long int mask; unsigned long int dataCpy; #define INT_MASK (0x7f80L << ((sizeof(AsnInt) - 2) * 8)) dataCpy = *data; /* * calculate encoded length of the integer (content) */ mask = INT_MASK; if ((long int)dataCpy < 0) for (len = sizeof(AsnInt) ; len > 1 ; --len) { if ( (dataCpy & mask) == mask) mask >>= 8; else break; } else for (len = sizeof(AsnInt) ; len > 1 ; --len) { if ( (dataCpy & mask) == 0) mask >>= 8; else break; } /* * write the BER integer */ for (i = 0; i < len; i++) { BufPutByteRvs(b, dataCpy); dataCpy >>= 8; } return(len); } /* BEncAsnIntContent */ /* * Decodes content of BER a INTEGER value. The given tag is ignored. */ void BDecAsnIntContent PARAMS((b, tagId, len, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId _AND_ AsnLen len _AND_ AsnInt* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { int i; long int retVal; unsigned long int byte; if ( len > sizeof(AsnInt)) { Asn1Error("BDecAsnIntContent: ERROR - integer to big to decode.\n"); longjmp(env, -7); } /* * look at integer value */ byte = (unsigned long int) BufGetByte(b); if (byte & 0x80) /* top bit of first byte is sign bit */ retVal = (-1 << 8) | byte; else retVal = byte; /* * write from buffer into long int */ for (i = 1; i < len; i++) retVal = (retVal << 8) | (unsigned long int)(BufGetByte(b)); if (BufReadError(b)) { Asn1Error( "BDecAsnIntContent: ERROR - decoded past end of data \n"); longjmp(env, -8); } (*bytesDecoded) += len; *result = retVal; } /* BDecAsnIntContent */ /* * Prints the given integer to the given FILE* in Value Notation. * indent is ignored. */ void PrintAsnInt PARAMS((f, v, indent), FILE* f _AND_ AsnInt* v _AND_ unsigned short int indent) { fprintf(f,"%d", *v); } /* * The following deal with UNSIGNED long ints. * They do the same as the above routines for unsigned values. * * The compiler generated code does not call them. (It should * based on subtype info but it does not). */ /* * encodes universal TAG LENGTH and Contents of and ASN.1 INTEGER */ AsnLen BEncUAsnInt PARAMS((b, data), BUF_TYPE b _AND_ UAsnInt* data) { AsnLen len; len = BEncUAsnIntContent(b, data); len += BEncDefLen(b, len); len += BEncTag1(b, UNIV, PRIM, INTEGER_TAG_CODE); return(len); } /* BEncUAsnInt */ /* * decodes universal TAG LENGTH and Contents of and ASN.1 INTEGER */ void BDecUAsnInt PARAMS((b, result, bytesDecoded, env), BUF_TYPE b _AND_ UAsnInt* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { AsnTag tag; AsnLen elmtLen; if ( (tag =BDecTag(b, bytesDecoded, env)) != MAKE_TAG_ID(UNIV, PRIM, INTEGER_TAG_CODE)) { Asn1Error("BDecAsnInt: ERROR wrong tag on INTGER.\n"); longjmp(env, -40); } elmtLen = BDecLen (b, bytesDecoded, env); BDecUAsnIntContent( b, tag, elmtLen, result, bytesDecoded, env); } /* BDecUAsnInt */ /* * encodes unsigned long integer. This allows you to correctly * handle unsiged values that used the most significant (sign) bit. */ AsnLen BEncUAsnIntContent PARAMS((b, data), BUF_TYPE b _AND_ UAsnInt* data) { int len; int retLen; int i; unsigned long int mask; unsigned long int dataCpy; dataCpy = *data; /* * calculate encoded length of the integer (content) */ mask = INT_MASK; if ((long int)dataCpy < 0) { /*write integer as normal (remember writing in reverse) */ for (i = 0; i < sizeof(UAsnInt); i++) { BufPutByteRvs(b, dataCpy); dataCpy >>= 8; } /* * write zero byte at beginning of int, since high bit * is set and need to differentiate between sign * bit and high bit in unsigned case. * (this code follows the prev for loop since writing * in reverse) */ BufPutByteRvs(b, 0); return(sizeof(UAsnInt)+1); } else { for (len = sizeof(UAsnInt) ; len > 1 ; --len) { if ( (dataCpy & mask) == 0) mask >>= 8; else break; } /* write the BER integer */ for (i = 0; i < len; i++) { BufPutByteRvs(b, dataCpy); dataCpy >>= 8; } return (len); } } /* BEncUAsnIntContent */ /* * decode integer portion - no tag or length expected or decoded * assumes unsigned integer - This routine is useful for * integer subtyped to > 0 eg Guage ::= INTEGER (0..4294967295) */ void BDecUAsnIntContent PARAMS((b, tag, len, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tag _AND_ AsnLen len _AND_ UAsnInt* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { int i; unsigned long int retVal; retVal = (unsigned long int) BufGetByte(b); if ( len > (sizeof(UAsnInt)+1)) { Asn1Error("BDecUAsnIntContent: ERROR - integer to big to decode.\n"); longjmp(env, -9); } else if (retVal & 0x80) /* top bit of first byte is sign bit */ { Asn1Error("BDecUAsnIntContent: ERROR - integer is negative.\n"); longjmp(env, -10); } else if ( (len == (sizeof(UAsnInt)+1)) && (retVal != 0) ) { /* * first octet must be zero 5 octets long - extra 0 octet * at beginning is only used for value > 0 that need the * high bit */ Asn1Error("BDecUAsnIntContent: ERROR - integer is negative.\n"); longjmp(env, -11); } /* * write from buffer into long int */ for (i = 1; i < len; i++) retVal = (retVal << 8) | (unsigned long int)(BufGetByte(b)); if (BufReadError(b)) { Asn1Error( "BDecUIntegerContent: ERROR - decoded past end of data\n"); longjmp(env, -12); } (*bytesDecoded) += len; *result = retVal; } /* BDecUAsnIntContent */ void PrintUAsnInt PARAMS((f, v, indent), FILE* f _AND_ UAsnInt* v _AND_ unsigned short int indent) { fprintf(f,"%u", *v); } linux-atm-2.5.1/src/ilmid/asn1/asn_int.h0000644000200100001440000000354007360675442016632 0ustar chasusers/* * asn_int.h * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _asn_int_h_ #define _asn_int_h_ typedef long int AsnInt; typedef unsigned long int UAsnInt; AsnLen BEncAsnInt PROTO((BUF_TYPE b, AsnInt* data)); void BDecAsnInt PROTO((BUF_TYPE b, AsnInt* result, AsnLen* bytesDecoded, ENV_TYPE env)); AsnLen BEncAsnIntContent PROTO((BUF_TYPE b, AsnInt* data)); void BDecAsnIntContent PROTO((BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnInt* result, AsnLen* bytesDecoded, ENV_TYPE env)); /* do nothing */ #define FreeAsnInt(v) void PrintAsnInt PROTO((FILE* f, AsnInt* v, unsigned short int indent)); AsnLen BEncUAsnInt PROTO((BUF_TYPE b, UAsnInt* data)); void BDecUAsnInt PROTO((BUF_TYPE b, UAsnInt* result, AsnLen* bytesDecoded, ENV_TYPE env)); AsnLen BEncUAsnIntContent PROTO((BUF_TYPE b, UAsnInt* data)); void BDecUAsnIntContent PROTO((BUF_TYPE b, AsnTag tagId, AsnLen len, UAsnInt* result, AsnLen* bytesDecoded, ENV_TYPE env)); /* do nothing */ #define FreeUAsnInt(v) void PrintUAsnInt PROTO((FILE* f, UAsnInt* v, unsigned short int indent)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/asn_len.c0000644000200100001440000001000407360675442016602 0ustar chasusers/* * asn_len.c - BER encode, decode and utilities for ASN.1 lengths. * * indefinite lens are representd by the highest AsnLen * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #if HAVE_CONFIG_H #include #endif #include "asn_config.h" #include "asn_len.h" AsnLen BEncDefLen PARAMS((b, len), BUF_TYPE b _AND_ AsnLen len) { /* * unrolled for efficiency * check each possibitlity of the 4 byte integer */ if (len < 128) { BufPutByteRvs( b, len); return (1); } else if (len < 256) { BufPutByteRvs( b, len); BufPutByteRvs( b, 0x81); return(2); } else if (len < 65536) { BufPutByteRvs( b, len); BufPutByteRvs( b, len >> 8); BufPutByteRvs( b, 0x82); return (3); } else if (len < 16777216) { BufPutByteRvs( b, len); BufPutByteRvs( b, len >> 8); BufPutByteRvs( b, len >> 16); BufPutByteRvs( b, 0x83); return (4); } else { BufPutByteRvs( b, len); BufPutByteRvs( b, len >> 8); BufPutByteRvs( b, len >> 16); BufPutByteRvs( b, len >> 24); BufPutByteRvs( b, 0x84); return (5); } } /* BEncDefLen */ /* * non unrolled version */ AsnLen BEncDefLen2 PARAMS( (b, len), BUF_TYPE b _AND_ long int len) { int i; unsigned long int j; if (len < 128) { BufPutByteRvs(b, len); return(1); } else { for (i = 0, j = len; j > 0; j >>= 8, i++) BufPutByteRvs(b, j); BufPutByteRvs(b, 0x80 | i); return(i + 1); } } /* BEncDefLen2 */ /* * decodes and returns an ASN.1 length */ AsnLen BDecLen PARAMS( (b, bytesDecoded, env), BUF_TYPE b _AND_ unsigned long int* bytesDecoded _AND_ jmp_buf env) { AsnLen len; AsnLen byte; int lenBytes; byte = (unsigned long int) BufGetByte(b); if (BufReadError(b)) { Asn1Error("BDecLen: ERROR - decoded past end of data\n"); longjmp(env, -13); } (*bytesDecoded)++; if (byte < 128) /* short length */ return(byte); else if (byte == (AsnLen) 0x080) /* indef len indicator */ return(INDEFINITE_LEN); else /* long len form */ { /* * strip high bit to get # bytes left in len */ lenBytes = byte & (AsnLen) 0x7f; if (lenBytes > sizeof(AsnLen)) { Asn1Error("BDecLen: ERROR - length overflow\n"); longjmp(env, -14); } (*bytesDecoded) += lenBytes; for (len = 0; lenBytes > 0; lenBytes--) len = (len << 8) | (AsnLen) BufGetByte(b); if (BufReadError(b)) { Asn1Error("BDecLen: ERROR - decoded past end of data\n"); longjmp(env, -15); } return(len); } /* not reached */ } /* BDecLen */ /* MACRO AsnLen BEncEoc PARAMS((b), BUF_TYPE b) { BufPutByteRvs(b, 0); BufPutByteRvs(b, 0); return(2); } BEncEoc */ /* * Decodes an End of Contents (EOC) marker from the given buffer. * Flags and error if the octets are non-zero or if a read error * occurs. Increments bytesDecoded by the length of the EOC marker. */ void BDecEoc PARAMS((b, bytesDecoded, env), BUF_TYPE b _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { if ( (BufGetByte(b) != 0) || (BufGetByte(b) != 0) || BufReadError(b)) { Asn1Error("BDecEoc: ERROR - non zero byte in EOC or end of data reached\n"); longjmp(env, -16); } (*bytesDecoded) += 2; } /* BDecEoc */ linux-atm-2.5.1/src/ilmid/asn1/asn_len.h0000644000200100001440000000454407360675442016623 0ustar chasusers/* * asn_len.h * * Warning: many of these routines are MACROs for performance reasons * - be carful where you use them. Don't use more than one per * assignment statement - * (eg itemLen += BEncEoc(b) + BEncFoo(b) ..; this * will break the code) * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _asn_len_h_ #define _asn_len_h_ typedef unsigned long int AsnLen; /* max unsigned value - used for internal rep of indef len */ #define INDEFINITE_LEN ~0L #ifdef USE_INDEF_LEN #define BEncEocIfNec(b) BEncEoc(b); /* * include len for EOC (2 must be first due to BEncIndefLen * - ack! ugly macros!) */ #define BEncConsLen(b, len) 2 + BEncIndefLen(b) #else /* use definite length - faster?/smaller encodings */ /* do nothing since only using definite lens */ #define BEncEocIfNec(b) #define BEncConsLen(b, len) BEncDefLen(b, len) #endif /* * writes indefinite length byte to buffer. 'returns' encoded len (1) */ #define BEncIndefLen( b)\ 1;\ BufPutByteRvs( b, 0x80); #define BEncEoc( b)\ 2;\ BufPutByteRvs(b, 0);\ BufPutByteRvs(b, 0); /* * use if you know the encoded length will be 0 >= len <= 127 * Eg for booleans, nulls, any resonable integers and reals * * NOTE: this particular Encode Routine does NOT return the length * encoded (1). */ #define BEncDefLenTo127(b, len)\ BufPutByteRvs( b, (unsigned char) len) #define BDEC_2ND_EOC_OCTET(b, bytesDecoded, env)\ {\ if ((BufGetByte(b) != 0) || BufReadError(b)) {\ Asn1Error("ERROR - second octet of EOC not zero\n");\ longjmp(env, -28);}\ (*bytesDecoded)++;\ } AsnLen BEncDefLen PROTO((BUF_TYPE b, AsnLen len)); AsnLen BDecLen PROTO((BUF_TYPE b, AsnLen* bytesDecoded, ENV_TYPE env)); /* AsnLen BEncEoc PROTO((BUF_TYPE b)); */ void BDecEoc PROTO((BUF_TYPE b, AsnLen* bytesDecoded, ENV_TYPE env)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/asn_list.c0000644000200100001440000001550211235572166017002 0ustar chasusers/* * asn_list.c - borrowed from Murray Goldberg * * the following routines implement the list data structure * * Copyright (C) 1992 the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #if HAVE_CONFIG_H #include #endif #include #include "asn_config.h" #include "asn_list.h" /* * this routine removes the current node from the list. After removal the * current pointer will point to the next node in line, or NULL if the * removed item was at the tail of the list. */ void AsnListRemove PARAMS( (list), AsnList* list ) { AsnListNode* node; if( list->curr ) { if( list->curr->next ) list->curr->next->prev = list->curr->prev; else list->last = list->curr->prev; if( list->curr->prev ) list->curr->prev->next = list->curr->next; else list->first = list->curr->next; node = list->curr; list->curr = list->curr->next; list->count--; free( node ); } } /* * this creates a new node after the current node and returns the * address of the memory allocated for data. The current pointer is changed * to point to the newly added node in the list. If the current pointer is * initially off the list then this operation fails. */ void* AsnListAdd PARAMS((list), AsnList* list ) { AsnListNode* newNode; void* dataAddr; if( list->curr ) { newNode = (AsnListNode *) Asn1Alloc( sizeof(AsnListNode) + list->dataSize ); dataAddr = (void *) &(newNode->data); newNode->next = list->curr->next; newNode->prev = list->curr; if( list->curr->next ) list->curr->next->prev = newNode; else list->last = newNode; list->curr->next = newNode; list->curr = newNode; list->count++; } else dataAddr = NULL; return( dataAddr ); } /* * this creates a new node before the current node and returns the * address of the memory allocated for data. The current pointer is changed * to point to the newly added node in the list. If the current pointer is * initially off the list then this operation fails. */ void* AsnListInsert PARAMS( (list), AsnList* list ) { AsnListNode* newNode; void* dataAddr; if( list->curr ) { newNode = (AsnListNode *) Asn1Alloc( sizeof(AsnListNode) + list->dataSize ); dataAddr = (void *) &(newNode->data); newNode->next = list->curr; newNode->prev = list->curr->prev; if( list->curr->prev ) list->curr->prev->next = newNode; else list->first = newNode; list->curr->prev = newNode; list->curr = newNode; list->count++; } else dataAddr = NULL; return( dataAddr ); } void AsnListInit PARAMS((list, dataSize), AsnList* list _AND_ int dataSize) { list->first = list->last = list->curr = NULL; list->count = 0; list->dataSize = dataSize; } /* AsnListInit */ AsnList* AsnListNew PARAMS( (dataSize), int dataSize ) { AsnList* list; list = (AsnList *) Asn1Alloc( sizeof(AsnList) ); list->first = list->last = list->curr = NULL; list->count = 0; list->dataSize = dataSize; return( list ); } /* * backs up the current pointer by one and returns the data address of the new * current node. If the current pointer is off the list, the new current node * will be the last node of the list (unless the list is empty). */ void* AsnListPrev PARAMS( (list), AsnList* list ) { void* retVal; if( list->curr == NULL ) list->curr = list->last; else list->curr = list->curr->prev; if( list->curr == NULL ) retVal = NULL; else retVal = (void *) &(list->curr->data); return( retVal ); } /* * advances the current pointer by one and returns the data address of the new * current node. If the current pointer is off the list, the new current node * will be the first node of the list (unless the list is empty). */ void* AsnListNext PARAMS( (list), AsnList* list ) { void* retVal; if( list->curr == NULL ) list->curr = list->first; else list->curr = list->curr->next; if( list->curr == NULL ) retVal = NULL; else retVal = (void *) &(list->curr->data); return( retVal ); } /* * returns the data address of the last node (if there is one) and sets the * current pointer to this node. */ void* AsnListLast PARAMS((list), AsnList* list ) { void* retVal; list->curr = list->last; if( list->curr == NULL ) retVal = NULL; else retVal = (void *) &(list->curr->data); return( retVal ); } /* * returns the data address of the first node (if there is one) and sets the * current pointer to this node. */ void* AsnListFirst PARAMS( (list), AsnList* list ) { void* retVal; list->curr = list->first; if( list->curr == NULL ) retVal = NULL; else retVal = (void *) &(list->curr->data); return( retVal ); } /* * this creates a new node at the beginning of the list and returns the * address of the memory allocated for data. The current pointer is changed * to point to the newly added node in the list. */ void* AsnListPrepend PARAMS( (list), AsnList* list ) { AsnListNode* newNode; void* dataAddr; newNode = (AsnListNode *) Asn1Alloc( sizeof(AsnListNode) + list->dataSize ); dataAddr = (void *) &(newNode->data); newNode->prev = NULL; if( list->first == NULL ) { newNode->next = NULL; list->first = list->last = newNode; } else { newNode->next = list->first; list->first->prev = newNode; list->first = newNode; } list->curr = newNode; list->count++; return( dataAddr ); } /* * this creates a new node at the end of the list and returns the * address of the memory allocated for data. The current pointer is changed * to point to the newly added node in the list. */ void* AsnListAppend PARAMS( (list), AsnList* list ) { AsnListNode* newNode; void* dataAddr; newNode = (AsnListNode *) Asn1Alloc( sizeof(AsnListNode) + list->dataSize ); dataAddr = (void *) &(newNode->data); newNode->next = NULL; if( list->last == NULL ) { newNode->prev = NULL; list->first = list->last = newNode; } else { newNode->prev = list->last; list->last->next = newNode; list->last = newNode; } list->curr = newNode; list->count++; return( dataAddr ); } void* AsnListCurr PARAMS( (list), AsnList* list ) { void* retVal; if( list->curr ) retVal = (void *) &(list->curr->data); else retVal = NULL; return( retVal ); } int AsnListCount PARAMS( (list), AsnList* list ) { return( list->count ); } linux-atm-2.5.1/src/ilmid/asn1/asn_list.h0000644000200100001440000000751207360675442017016 0ustar chasusers/* * asn_list.h * * --------- * | AsnList | * | last |-------------------------------------------| * | curr |--------------------------| | * | first|--------| | | * --------- | | | * V V V * --------- --------- --------- * |AsnListNode |AsnListNode |AsnListNode * | next |---...->| next |--...-->| next |-----|i. * .i|----| prev |<--...--| prev |<--...--| prev | * | data | | data | | data | * --------- --------- --------- * * Originally by Murray Goldberg * Modified for ASN.1 use. * MS 92 * Copyright (C) 1992 the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _asn_list_h_ #define _asn_list_h_ typedef struct AsnListNode { struct AsnListNode *prev; struct AsnListNode *next; void *data; /* this must be the last field of this structure */ } AsnListNode; typedef struct AsnList { AsnListNode *first; AsnListNode *last; AsnListNode *curr; int count; /* number of elements in list */ int dataSize; /* space required in each node for the data */ } AsnList; #define FOR_EACH_LIST_ELMT( elmt, al)\ if ((al) != NULL)\ for ((al)->curr = (al)->first;\ ((al)->curr != NULL) && (((elmt) =(void*)(al)->curr->data) != NULL);\ (al)->curr = (al)->curr->next ) #define FOR_EACH_LIST_ELMT_RVS( elmt, al)\ if ((al) != NULL)\ for ((al)->curr = (al)->last;\ (((al)->curr != NULL)) && (((elmt) =(void*)(al)->curr->data) != NULL);\ (al)->curr = (al)->curr->prev ) #define FOR_REST_LIST_ELMT( elmt, al)\ if ((al) != NULL)\ for (; (((al)->curr != NULL)) && (((elmt) =(void*)(al)->curr->data) != NULL);\ (al)->curr = (al)->curr->next ) /* * The following macros return the pointer stored in the * data part of the listNode. The do not change the current * list pointer. */ #define CURR_LIST_ELMT(al) ((al)->curr->data) #define NEXT_LIST_ELMT(al) ((al)->curr->next->data) #define PREV_LIST_ELMT(al) ((al)->curr->prev->data) #define LAST_LIST_ELMT(al) ((al)->last->data) #define FIRST_LIST_ELMT(al) ((al)->first->data) #define LIST_EMPTY(al) ((al)->count == 0) #define LIST_COUNT(al) ((al)->count) /* * list nodes are the parts of the list that contain ptrs/data * to/of the list elmts. */ #define CURR_LIST_NODE(al) ((al)->curr) #define FIRST_LIST_NODE(al) ((al)->first) #define LAST_LIST_NODE(al) ((al)->last) #define PREV_LIST_NODE(al) ((al)->curr->prev) #define NEXT_LIST_NODE(al) ((al)->curr->next) #define SET_CURR_LIST_NODE(al, listNode) ((al)->curr = (listNode)) void AsnListRemove PROTO(( AsnList * )); void *AsnListAdd PROTO(( AsnList * )); void *AsnListInsert PROTO(( AsnList * )); void AsnListInit PROTO((AsnList* list, int dataSize)); AsnList *AsnListNew PROTO(( int )); void *AsnListPrev PROTO(( AsnList * )); void *AsnListNext PROTO(( AsnList * )); void *AsnListLast PROTO(( AsnList * )); void *AsnListFirst PROTO(( AsnList * )); void *AsnListPrepend PROTO(( AsnList * )); void *AsnListAppend PROTO(( AsnList * )); void *AsnListCurr PROTO(( AsnList * )); int AsnListCount PROTO(( AsnList * )); AsnList* AsnListConcat PROTO((AsnList*, AsnList*)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/asn_null.c0000644000200100001440000000432607360675442017010 0ustar chasusers/* * asn_null.c - BER encode, decode, print and free routines for the * ASN.1 NULL type. * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #if HAVE_CONFIG_H #include #endif #include "asn_config.h" #include "asn_len.h" #include "asn_tag.h" #include "asn_null.h" /* * encodes universal TAG LENGTH and Contents of and ASN.1 NULL */ AsnLen BEncAsnNull PARAMS((b, data), BUF_TYPE b _AND_ AsnNull* data) { AsnLen len; len = BEncAsnNullContent(b, data); len += BEncDefLen(b, len); len += BEncTag1(b, UNIV, PRIM, NULLTYPE_TAG_CODE); return(len); } /* BEncAsnNull */ /* * decodes universal TAG LENGTH and Contents of and ASN.1 NULL */ void BDecAsnNull PARAMS((b, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnNull* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { AsnTag tag; AsnLen elmtLen; if ( (tag =BDecTag(b, bytesDecoded, env)) != MAKE_TAG_ID(UNIV, PRIM, NULLTYPE_TAG_CODE)) { Asn1Error("BDecAsnNull: ERROR wrong tag on NULL.\n"); longjmp(env, -40); } elmtLen = BDecLen (b, bytesDecoded, env); BDecAsnNullContent( b, tag, elmtLen, result, bytesDecoded, env); } /* BDecAsnNull */ void BDecAsnNullContent PARAMS((b, tagId, len, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId _AND_ AsnLen len _AND_ AsnNull* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { if ( len != 0) { Asn1Error("BDecAsnNullContent: ERROR - NULL type's len must be 0\n"); longjmp(env, -17); } } /* BDecAsnNullContent */ /* * Prints the NULL value to the given FILE* in Value Notation. * ignores the indent. */ void PrintAsnNull PARAMS((f,v, indent), FILE* f _AND_ AsnNull* v _AND_ unsigned short int indent) { fprintf(f,"NULL"); } linux-atm-2.5.1/src/ilmid/asn1/asn_null.h0000644000200100001440000000242607360675442017014 0ustar chasusers/* * asn_null.h * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #ifndef _asn_null_h_ #define _asn_null_h_ typedef char AsnNull; AsnLen BEncAsnNull PROTO((BUF_TYPE b, AsnNull* data)); void BDecAsnNull PROTO((BUF_TYPE b, AsnNull* result, AsnLen* bytesDecoded, ENV_TYPE env)); /* 'return' length of encoded NULL value, 0 */ #define BEncAsnNullContent(b, data) 0 void BDecAsnNullContent PROTO((BUF_TYPE b, AsnTag tag, AsnLen len, AsnNull* result, AsnLen* bytesDecoded, ENV_TYPE env)); /* do nothing */ #define FreeAsnNull(v) void PrintAsnNull PROTO((FILE* f, AsnNull * b, unsigned short int indent)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/asn_octs.c0000644000200100001440000001724511235572166017005 0ustar chasusers/* * asn_octs.c - BER encode, decode, print and free routines for the * ASN.1 OCTET STRING type. * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #if HAVE_CONFIG_H #include #endif #include #include #include "asn_config.h" #include "asn_len.h" #include "asn_tag.h" #include "str_stk.h" #include "asn_bits.h" /* for TO_HEX macro */ #include "asn_octs.h" /* * encodes universal TAG LENGTH and Contents of and ASN.1 OCTET STRING */ AsnLen BEncAsnOcts PARAMS((b, data), BUF_TYPE b _AND_ AsnOcts* data) { AsnLen len; len = BEncAsnOctsContent(b, data); len += BEncDefLen(b, len); len += BEncTag1(b, UNIV, PRIM, OCTETSTRING_TAG_CODE); return(len); } /* BEncAsnOcts */ /* * decodes universal TAG LENGTH and Contents of and ASN.1 OCTET STRING */ void BDecAsnOcts PARAMS((b, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnOcts* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { AsnTag tag; AsnLen elmtLen; if (( (tag =BDecTag(b, bytesDecoded, env)) != MAKE_TAG_ID(UNIV, PRIM, OCTETSTRING_TAG_CODE)) && (tag != MAKE_TAG_ID(UNIV, CONS, OCTETSTRING_TAG_CODE))) { Asn1Error("BDecAsnOcts: ERROR - wrong tag on OCTET STRING.\n"); longjmp(env, -40); } elmtLen = BDecLen (b, bytesDecoded, env); BDecAsnOctsContent( b, tag, elmtLen, result, bytesDecoded, env); } /* BDecAsnOcts */ /* * BER encodes just the content of an OCTET STRING. */ AsnLen BEncAsnOctsContent PARAMS((b, o), BUF_TYPE b _AND_ AsnOcts* o) { BufPutSegRvs(b, o->octs, o->octetLen); return(o->octetLen); } /* BEncAsnOctsContent */ /* * Used for decoding constructed OCTET STRING values into * a contiguous local rep. * fills string stack with references to the pieces of a * construced octet string */ static void FillOctetStringStk PARAMS((b, elmtLen0, bytesDecoded, env), BUF_TYPE b _AND_ AsnLen elmtLen0 _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { unsigned long int refdLen; unsigned long int totalRefdLen; char* strPtr; unsigned long int totalElmtsLen1 = 0; unsigned long int tagId1; unsigned long int elmtLen1; for ( ; (totalElmtsLen1 < elmtLen0) || (elmtLen0 == INDEFINITE_LEN);) { tagId1 = BDecTag(b, &totalElmtsLen1, env); if ( (tagId1 == EOC_TAG_ID) && (elmtLen0 == INDEFINITE_LEN)) { BDEC_2ND_EOC_OCTET(b, &totalElmtsLen1, env); break; } elmtLen1 = BDecLen (b, &totalElmtsLen1, env); if ( tagId1 == MAKE_TAG_ID( UNIV, PRIM, OCTETSTRING_TAG_CODE)) { /* * primitive part of string, put references to piece(s) in * str stack */ totalRefdLen = 0; refdLen = elmtLen1; while (1) { strPtr = BufGetSeg( b, &refdLen); PUSH_STR(strPtr, refdLen, env); totalRefdLen += refdLen; if (totalRefdLen == elmtLen1) break; /* exit this while loop */ if (refdLen == 0) /* end of data */ { Asn1Error("BDecConsOctetString: ERROR - attempt to decode past end of data\n"); longjmp(env, -18); } refdLen = elmtLen1 - totalRefdLen; } totalElmtsLen1 += elmtLen1; } else if ( tagId1 == MAKE_TAG_ID( UNIV, CONS, OCTETSTRING_TAG_CODE)) { /* * constructed octets string embedding in this constructed * octet string. decode it. */ FillOctetStringStk( b, elmtLen1, &totalElmtsLen1, env); } else /* wrong tag */ { Asn1Error("BDecConsOctetString: ERROR - decoded non-OCTET STRING tag inside a constructed OCTET STRING\n"); longjmp(env, -19); } } /* end of for */ (*bytesDecoded) += totalElmtsLen1; } /* FillOctetStringStk */ /* * Decodes a seq of universally tagged octets strings until either EOC is * encountered or the given len is decoded. Merges them into a single * string. puts a NULL terminator on the string but does not include * this in the length. */ static void BDecConsAsnOcts PARAMS((b, len, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnLen len _AND_ AsnOcts* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { char* bufCurr; unsigned long int curr; RESET_STR_STK(); /* * decode each piece of the octet string, puting * an entry in the octet string stack for each */ FillOctetStringStk(b, len, bytesDecoded, env); result->octetLen = strStkG.totalByteLen; /* alloc str for all octs pieces with extra byte for null terminator */ bufCurr = result->octs = Asn1Alloc(strStkG.totalByteLen +1); /* copy octet str pieces into single blk */ for (curr = 0; curr < strStkG.nextFreeElmt; curr++) { memcpy(bufCurr, strStkG.stk[curr].str, strStkG.stk[curr].len); bufCurr += strStkG.stk[curr].len; } /* add null terminator - this is not included in the str's len */ *bufCurr = '\0'; } /* BDecConsAsnOcts */ /* * Decodes the content of a BER OCTET STRING value */ void BDecAsnOctsContent PARAMS((b, tagId, len, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId _AND_ AsnLen len _AND_ AsnOcts* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { char* tmp; /* * tagId is encoded tag shifted into long int. * if CONS bit is set then constructed octet string */ if (TAG_IS_CONS(tagId)) BDecConsAsnOcts(b, len, result, bytesDecoded, env); else /* primitive octet string */ { result->octetLen = len; result->octs = Asn1Alloc(len+1); BufCopy(result->octs, b, len); if (BufReadError(b)) { Asn1Error("BDecOctetString: ERROR - decoded past end of data\n"); longjmp(env, -20); } /* add null terminator - this is not included in the str's len */ result->octs[len] = '\0'; (*bytesDecoded) += len; } } /* BDecAsnOctsContent */ /* * Frees the string part of the given OCTET STRING */ void FreeAsnOcts PARAMS((v), AsnOcts* v) { Asn1Free(v->octs); } /* FreeAsnOcts */ /* * Prints the given OCTET STRING value to the given FILE* in ASN.1 * Value Notation. Since the value notation uses the hard to read * hex format, the ASCII version is included in an ASN.1 comment. */ void PrintAsnOcts PARAMS((f,v, indent), FILE* f _AND_ AsnOcts* v _AND_ unsigned short indent) { int i; /* print hstring value */ fprintf(f,"'"); for(i = 0; i < v->octetLen; i++) fprintf(f,"%c%c", TO_HEX(v->octs[i] >> 4), TO_HEX(v->octs[i])); fprintf(f,"'H"); /* show printable chars in comment */ fprintf(f," -- \""); for(i = 0; i < v->octetLen; i++) { if (isprint(v->octs[i])) fprintf(f,"%c", v->octs[i]); else fprintf(f,"."); } fprintf(f,"\" --"); } /* * Returns TRUE if the given OCTET STRING values are identical. * Returns FALSE otherwise. */ int AsnOctsEquiv PARAMS((o1, o2), AsnOcts* o1 _AND_ AsnOcts* o2) { return( (o1->octetLen == o2->octetLen) && (memcmp(o1->octs, o2->octs, o1->octetLen) == 0)); } /* AsnOctsEquiv */ linux-atm-2.5.1/src/ilmid/asn1/asn_octs.h0000644000200100001440000000264307360675442017013 0ustar chasusers/* * asn_octs.h * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _asn_octs_h_ #define _asn_octs_h_ typedef struct AsnOcts { unsigned long int octetLen; char* octs; } AsnOcts; #define ASNOCTS_PRESENT(aocts) ((aocts)->octs != NULL) AsnLen BEncAsnOcts PROTO((BUF_TYPE b, AsnOcts* data)); void BDecAsnOcts PROTO((BUF_TYPE b, AsnOcts* result, AsnLen* bytesDecoded, ENV_TYPE env)); AsnLen BEncAsnOctsContent PROTO((BUF_TYPE b, AsnOcts* octs)); void BDecAsnOctsContent PROTO((BUF_TYPE b, AsnLen len, AsnTag tagId, AsnOcts* result, AsnLen* bytesDecoded, ENV_TYPE env)); void FreeAsnOcts PROTO((AsnOcts* o)); void PrintAsnOcts PROTO((FILE* f, AsnOcts *o, unsigned short int indent)); int AsnOctsEquiv PROTO((AsnOcts* o1, AsnOcts* o2)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/asn_oid.c0000644000200100001440000001627111235572166016606 0ustar chasusers/* * asn_oid.c - BER encode, decode, print and free routines for the * ASN.1 OBJECT IDENTIFIER type. * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #if HAVE_CONFIG_H #include #endif #include #include #include "asn_config.h" #include "asn_len.h" #include "asn_tag.h" #include "asn_octs.h" #include "asn_oid.h" /* * encodes universal TAG LENGTH and Contents of and ASN.1 OBJECT ID */ AsnLen BEncAsnOid PARAMS((b, data), BUF_TYPE b _AND_ AsnOid* data) { AsnLen len; len = BEncAsnOidContent(b, data); len += BEncDefLen(b, len); len += BEncTag1(b, UNIV, PRIM, OID_TAG_CODE); return(len); } /* BEncAsnOid */ /* * decodes universal TAG LENGTH and Contents of and ASN.1 OBJECT ID */ void BDecAsnOid PARAMS((b, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnOid* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { AsnTag tag; AsnLen elmtLen; if ( (tag =BDecTag(b, bytesDecoded, env)) != MAKE_TAG_ID(UNIV, PRIM, INTEGER_TAG_CODE)) { Asn1Error("BDecAsnOid: ERROR - wrong tag on OBJECT IDENTIFIER.\n"); longjmp(env, -40); } elmtLen = BDecLen (b, bytesDecoded, env); BDecAsnOidContent( b, tag, elmtLen, result, bytesDecoded, env); } /* BDecAsnOid */ /* * Decodes just the content of the OID. * AsnOid is handled the same as a primtive octet string */ void BDecAsnOidContent PARAMS((b, tagId, len, result, bytesDecoded, env), BUF_TYPE b _AND_ AsnTag tagId _AND_ AsnLen len _AND_ AsnOid* result _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { result->octetLen = len; result->octs = Asn1Alloc(len); BufCopy(result->octs, b, len); if (BufReadError(b)) { Asn1Error("BDecAsnOidContent: ERROR - decoded past end of data\n"); longjmp(env, -21); } (*bytesDecoded) += len; } /* BDecAsnOidContent */ /* * Prints the given OID to the given FILE* in ASN.1 Value Notation. * Since the internal rep of an OID is 'encoded', this routine * decodes each individual arc number to print it. */ void PrintAsnOid PARAMS((f,v, indent), FILE* f _AND_ AsnOid* v _AND_ unsigned short int indent) { unsigned short int firstArcNum; unsigned long int arcNum; int i; fprintf(f,"{"); /* un-munge first two arc numbers */ for (arcNum = 0, i=0; (i < v->octetLen) && (v->octs[i] & 0x80);i++) arcNum = (arcNum << 7) + (v->octs[i] & 0x7f); arcNum = (arcNum << 7) + (v->octs[i] & 0x7f); i++; firstArcNum = arcNum/40; if (firstArcNum > 2) firstArcNum = 2; fprintf(f,"%u %u", firstArcNum, arcNum - (firstArcNum * 40)); for (; i < v->octetLen ; ) { for (arcNum = 0; (i < v->octetLen) && (v->octs[i] & 0x80);i++) arcNum = (arcNum << 7) + (v->octs[i] & 0x7f); arcNum = (arcNum << 7) + (v->octs[i] & 0x7f); i++; fprintf(f," %u", arcNum); } fprintf(f,"}"); } /* PrintAsnOid */ /* * given an OID, figures out the length for the encoded version */ AsnLen EncodedOidLen PARAMS((oid), OID* oid) { AsnLen totalLen; unsigned long headArcNum; unsigned long tmpArcNum; OID* tmpOid; /* * oid must have at least 2 elmts */ if (oid->next == NULL) return 0; headArcNum = (oid->arcNum * 40) + oid->next->arcNum; /* * figure out total encoded length of oid */ tmpArcNum = headArcNum; for ( totalLen = 1; (tmpArcNum >>= 7) != 0; totalLen++); for (tmpOid = oid->next->next; tmpOid != NULL; tmpOid = tmpOid->next) { totalLen++; tmpArcNum = tmpOid->arcNum; for (; (tmpArcNum >>= 7) != 0; totalLen++); } return (totalLen); } /* EncodedOidLen */ /* * given an oid list and a pre-allocated ENC_OID * (use EncodedOidLen to figure out byte length needed) * fills the ENC_OID with a BER encoded version * of the oid. */ void BuildEncodedOid PARAMS( (oid, result), OID* oid _AND_ AsnOid* result) { unsigned long len; unsigned long headArcNum; unsigned long tmpArcNum; char* buf; int i; OID* tmpOid; buf = result->octs; /* * oid must have at least 2 elmts */ if (oid->next == NULL) return; /* * munge together first two arcNum * note first arcnum must be <= 2 * and second must be < 39 if first = 0 or 1 * see (X.209) for ref to this stupidity */ headArcNum = (oid->arcNum * 40) + oid->next->arcNum; tmpArcNum = headArcNum; /* * calc # bytes needed for head arc num */ for (len = 0; (tmpArcNum >>= 7) != 0; len++); /* * write more signifcant bytes (if any) of head arc num * with 'more' bit set */ for (i=0 ; i < len; i++) *(buf++) = 0x80 | (headArcNum >> ((len-i)*7)); /* * write least significant byte of head arc num */ *(buf++) = 0x7f & headArcNum; /* * write following arc nums, if any */ for (tmpOid = oid->next->next; tmpOid != NULL; tmpOid = tmpOid->next) { /* * figure out encoded length -1 of this arcNum */ tmpArcNum = tmpOid->arcNum; for (len = 0; (tmpArcNum >>= 7) != 0; len++); /* * write more signifcant bytes (if any) * with 'more' bit set */ for (i=0 ; i < len; i++) *(buf++) = 0x80 | (tmpOid->arcNum >> ((len-i)*7)); /* * write least significant byte */ *(buf++) = 0x7f & tmpOid->arcNum; } } /* BuildEncodedOid */ /* * convert an AsnOid into an OID (linked list) * NOT RECOMMENDED for use in protocol implementations */ void UnbuildEncodedOid PARAMS( (eoid, result), AsnOid* eoid _AND_ OID** result) { OID** nextOid; OID* headOid; int arcNum; int i; int firstArcNum; int secondArcNum; for (arcNum = 0, i=0; (i < eoid->octetLen) && (eoid->octs[i] & 0x80);i++) arcNum = (arcNum << 7) + (eoid->octs[i] & 0x7f); arcNum = (arcNum << 7) + (eoid->octs[i] & 0x7f); i++; firstArcNum = arcNum / 40; if (firstArcNum > 2 ) firstArcNum = 2; secondArcNum = arcNum - (firstArcNum * 40); headOid = (OID*)malloc(sizeof(OID)); headOid->arcNum = firstArcNum; headOid->next = (OID*)malloc(sizeof(OID)); headOid->next->arcNum = secondArcNum; nextOid = &headOid->next->next; for ( ; i < eoid->octetLen; ) { for (arcNum = 0 ; (i < eoid->octetLen) && (eoid->octs[i] & 0x80);i++) arcNum = (arcNum << 7) + (eoid->octs[i] & 0x7f); arcNum = (arcNum << 7) + (eoid->octs[i] & 0x7f); i++; *nextOid = (OID*)malloc(sizeof(OID)); (*nextOid)->arcNum = arcNum; nextOid = &(*nextOid)->next; } *result = headOid; } /* UnbuildEncodedOid */ linux-atm-2.5.1/src/ilmid/asn1/asn_oid.h0000644000200100001440000000334207360675442016613 0ustar chasusers/* * asn_oid.h * * this file depends on asn_octs.h * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #ifndef _asn_oid_h_ #define _asn_oid_h_ #include "asn_octs.h" typedef AsnOcts AsnOid; /* standard oid type */ #define ASNOID_PRESENT(aoid) ASNOCTS_PRESENT(aoid) AsnLen BEncAsnOid PROTO((BUF_TYPE b, AsnOid* data)); void BDecAsnOid PROTO((BUF_TYPE b, AsnOid* result, AsnLen* bytesDecoded, ENV_TYPE env)); #define BEncAsnOidContent(b, oid) BEncAsnOctsContent(b, oid) void BDecAsnOidContent PROTO((BUF_TYPE b, AsnTag tag, AsnLen len, AsnOid* result, AsnLen* bytesDecoded, ENV_TYPE env)); #define FreeAsnOid FreeAsnOcts void PrintAsnOid PROTO((FILE* f, AsnOid* b, unsigned short int indent)); #define AsnOidsEquiv(o1, o2) AsnOctsEquiv(o1, o2) /* linked oid type that may be easier to use in some circumstances */ #define NULL_OID_ARCNUM -1 typedef struct OID { struct OID* next; long int arcNum; } OID; AsnLen EncodedOidLen PROTO((OID* oid)); void BuildEncodedOid PROTO( (OID* oid, AsnOid* result)); void UnbuildEncodedOid PROTO( (AsnOid* eoid, OID** result)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/asn_tag.c0000644000200100001440000000421707360675442016610 0ustar chasusers/* * asn_tag.c - BER encode, decode and untility routines for ASN.1 Tags. * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #if HAVE_CONFIG_H #include #endif #include "asn_config.h" #include "asn_len.h" #include "asn_tag.h" /* * Returns an AsnTag. An AsnTag is simply an encoded tag * shifted to fill up an unsigned long int (first tag byte * in most sig byte of long int) * This rep permits easy case stmt comparison of tags. * NOTE: The unsigned long rep for tag BREAKS if the * the tag's code is over 2^21 (very unlikely) * * RETURNS 0 if decoded a 0 byte (ie first byte of an EOC) */ AsnTag BDecTag PARAMS( (b, bytesDecoded, env), BUF_TYPE b _AND_ AsnLen* bytesDecoded _AND_ jmp_buf env) { AsnTag tagId; AsnTag tmpTagId; int i; tagId = ((AsnTag)BufGetByte(b)) << ((sizeof(AsnTag)-1)*8); (*bytesDecoded)++; /* check if long tag format (ie code > 31) */ if ( (tagId & (((AsnTag) 0x1f) << ((sizeof(AsnTag)-1)*8))) == (((AsnTag)0x1f) << ((sizeof(AsnTag)-1)*8))) { i = 2; do { tmpTagId = (AsnTag) BufGetByte(b); tagId |= (tmpTagId << ((sizeof(AsnTag)-i)*8)); (*bytesDecoded)++; i++; } while ((tmpTagId & (AsnTag)0x80) && (i < sizeof(AsnTag))); /* * check for tag that is too long */ if (i > (sizeof(AsnTag)+1)) { Asn1Error("BDecTag: ERROR - tag value overflow\n"); longjmp(env, -25); } } if (BufReadError(b)) { Asn1Error("BDecTag: ERROR - decoded past the end of data\n"); longjmp(env, -26); } return(tagId); } /* BDecTag */ linux-atm-2.5.1/src/ilmid/asn1/asn_tag.h0000644000200100001440000001270007360675442016611 0ustar chasusers/* * asn_tag.h * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #ifndef _asn_tag_h_ #define _asn_tag_h_ typedef unsigned long int AsnTag; /* * The MAKE_TAG_ID macro generates the TAG_ID rep for the * the given class/form/code (rep'd in integer for) * if the class/form/code are constants the the compiler (should) * calculate the tag completely --> zero runtime overhead. * This is good for efficiently comparing tags in switch statements * (decoding) etc. because run-time bit fiddling (eliminated) minimized */ #define TB sizeof(AsnTag) /* Tag Id's byte len */ #define UL unsigned long #define MAKE_TAG_ID( cl, fm, cd)\ ( (((UL)(cl)) << ((TB -1) * 8)) | ( ((UL)(fm)) << ((TB -1) * 8)) | (MAKE_TAG_ID_CODE(((UL)(cd))))) #define MAKE_TAG_ID_CODE(cd)\ ( (cd < 31) ? (MAKE_TAG_ID_CODE1(cd)):\ ((cd < 128)? (MAKE_TAG_ID_CODE2(cd)):\ ((cd < 16384)? (MAKE_TAG_ID_CODE3(cd)):\ (MAKE_TAG_ID_CODE4(cd))))) #define MAKE_TAG_ID_CODE1(cd) (cd << ((TB -1) * 8)) #define MAKE_TAG_ID_CODE2(cd) ((31 << ((TB -1) * 8)) | (cd << ((TB-2) * 8))) #define MAKE_TAG_ID_CODE3(cd) ((31 << ((TB -1) * 8))\ | ((cd & 0x3f80) << 9)\ | ( 0x0080 << ((TB-2) * 8))\ | ((cd & 0x007F) << ((TB-3)* 8)) ) #define MAKE_TAG_ID_CODE4(cd) ((31 << ((TB -1) * 8))\ | ((cd & 0x1fc000) << 2)\ | ( 0x0080 << ((TB-2) * 8))\ | ((cd & 0x3f80) << 1)\ | ( 0x0080 << ((TB-3) * 8))\ | ((cd & 0x007F) << ((TB-4)*8)) ) typedef enum { ANY_CLASS = -2, NULL_CLASS = -1, UNIV = 0, APPL = (1 << 6), CNTX = (2 << 6), PRIV = (3 << 6) } BER_CLASS; #ifdef notdef typedef enum { ANY_FORM = -2, NULL_FORM = -1, PRIM = 0, CONS = (1 << 5) } BER_FORM; #else #define ANY_FORM -2 #define NULL_FORM -1 #define PRIM 0 #define CONS (1L << 5) #endif typedef enum { NO_TAG_CODE = 0, BOOLEAN_TAG_CODE = 1, INTEGER_TAG_CODE, BITSTRING_TAG_CODE, OCTETSTRING_TAG_CODE, NULLTYPE_TAG_CODE, OID_TAG_CODE, OD_TAG_CODE, EXTERNAL_TAG_CODE, REAL_TAG_CODE, ENUM_TAG_CODE, SEQ_TAG_CODE = 16, SET_TAG_CODE, NUMERICSTRING_TAG_CODE, PRINTABLESTRING_TAG_CODE, TELETEXSTRING_TAG_CODE, VIDEOTEXSTRING_TAG_CODE, IA5STRING_TAG_CODE, UTCTIME_TAG_CODE, GENERALIZEDTIME_TAG_CODE, GRAPHICSTRING_TAG_CODE, VISIBLESTRING_TAG_CODE, GENERALSTRING_TAG_CODE } BER_UNIV_CODE; #define TT61STRING_TAG_CODE TELETEXSTRING_TAG_CODE #define ISO646STRING_TAG_CODE VISIBLESTRING_TAG_CODE /* * the TAG_ID_[CLASS/FORM/CODE] macros are not * super fast - try not to use during encoding/decoding */ #define TAG_ID_CLASS( tid) ( (tid & (0xC0 << ((TB-1) *8))) >> ((TB -1) * 8)) #define TAG_ID_FORM( tid) ( (tid & (0x20 << ((TB-1) *8))) >> ((TB -1) * 8)) /* * TAG_IS_CONS evaluates to true if the given AsnTag type * tag has the constructed bit set. */ #define TAG_IS_CONS(tag) ((tag) & (CONS << ((TB-1) *8))) /* not a valid tag - usually the first EOC octet */ #define EOC_TAG_ID 0 /* * tag encoders. given constant values for class form & * code in the source, these can be optimized by the compiler * (e.g. do the shifts and bitwise ands & ors etc) * * This is the prototype that the following BEncTag routines * would use if they were routines. They return the number of * octets written to the buffer. * * *AsnLen BEncTag PROTO((BUF_TYPE b, BER_CLASS class, BER_FORM form, int code)); * * WARNING: these are FRAGILE macros (What people will do for performance!) * Be careful of situations like: * if (foo) * encLen += BEncTag1(...); * Use {}'s to enclose any ASN.1 related routine that you are * treating as a single statement in your code. */ #define BEncTag1( b, class, form, code)\ 1;\ BufPutByteRvs( b, (class) | (form) | (code)); #define BEncTag2( b, class, form, code)\ 2;\ BufPutByteRvs( b, code);\ BufPutByteRvs( b, (class) | (form) | 31); #define BEncTag3( b, class, form, code)\ 3;\ BufPutByteRvs( b, (code) & 0x7F);\ BufPutByteRvs( b, 0x80 | ((code) >> 7));\ BufPutByteRvs( b, (class) | (form) | 31); #define BEncTag4( b, class, form, code)\ 4;\ BufPutByteRvs( b, (code) & 0x7F);\ BufPutByteRvs( b, 0x80 | ((code) >> 7));\ BufPutByteRvs( b, 0x80 | ((code) >> 14));\ BufPutByteRvs( b, (class) | (form) | 31); #define BEncTag5( b, class, form, code)\ 5;\ BufPutByteRvs( b, (code) & 0x7F);\ BufPutByteRvs( b, 0x80 | ((code) >> 7));\ BufPutByteRvs( b, 0x80 | ((code) >> 14));\ BufPutByteRvs( b, 0x80 | ((code) >> 21));\ BufPutByteRvs( b, (class) | (form) | 31); /* the following are protos for routines ins asn_tag.c */ AsnTag BDecTag PROTO((BUF_TYPE b, AsnLen* bytesDecoded, ENV_TYPE env)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/exp_buf.c0000644000200100001440000003634307360675442016631 0ustar chasusers/* * exp_buf.c - buffer routines for the buffer structure * * * --------- ---------- * | ExpBuf |<------>| ExpBuf |<------> ...ExpBufs * | |--- | |--- * ---------- | ---------- | * V V * -------- -------- * | DATA | | DATA | * | BLK | | BLK | * -------- -------- * * * ExpBuf * -------------- * | readError | * | writeError | * | dataStart |----------- * | dataEnd |-------- | * | curr |------ | | * | next | | | | * | prev | | | | data * | blkStart |=====|=|==|==>-------------------------- * | blkEnd |--- | | | | | (each line * -------------- | | | | | | reps a byte * | | | |-->| - - - - - - - - - - - -| diff in addr) * | | | | valid | * | |-|----->| | * | | | data | * | | | | * | | | - - - - - - - - - - - -| * | |----->|(one byte after last valid data byte) * | | | * | -------------------------- * |-----------> (one byte after last byte in data blk) * * * readError - set to non-zero to indicate attempt to read past end of * of data * writeError- set to non-zero to indicate write error. * Set if Alloc of new buf fails * dataStart - pts to first VALID data byte ie *dataStart is first byte * dataEnd - pts to byte AFTER last VALID byte *dataEnd is not in the data * but *(dataEnd -1) is in the data * curr - used for current read ptr - points to next byte to be read * so *curr is the next byte to be read. * next - pts to next BUF in list, NULL for last BUF in list * prev - pts to prev BUF in list, NULL for first BUF in list * blkStart - pts to start of the data blk. *blkStart is first byte * in the buffer's data blk. * blkEnd - pts to byte AFTER last writable byte of the dataBlk. * *(blkEnd-1) is the last byte in the buffer's data blk. * * NOTES: * - dataEnd is currently always the same as blkEnd * - at End Of Data (EOD) (no more data to be read) * if (curr == dataEnd) * - buffer has no valid data if (dataStart == dataEnd) * - number of valid data bytes = (dataEnd - dataStart) * - size of the data block = (blkEnd - blkStart) * * - the write reverse routines modify dataStart * - the read routines modify the curr ptr. * - there are no 'forward' write routines at the moment * (if there were they would adjust dataEnd) * * * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #if HAVE_CONFIG_H #include #endif #include "asn_config.h" #include "exp_buf.h" /* default buffer data block size (used when allocating) */ unsigned long expBufDataBlkSizeG = 1024; #ifdef DEBUG /* otherwise macros */ /* * sets the size of the data block to attach to * an ExpBuf when allocating a new one */ void ExpBufInit PARAMS((dataBlkSize), unsigned long dataBlkSize) { expBufDataBlkSizeG = dataBlkSize; } /* InitBuffers */ /* * Allocates and returns an uninitialized ExpBuf with * no a data attached. */ ExpBuf* ExpBufAllocBuf() { return ((ExpBuf*)malloc(sizeof(ExpBuf))); } void ExpBufFreeBuf PARAMS( (ptr), ExpBuf* ptr) { free(ptr); } char* ExpBufAllocData() { return((char*)malloc(expBufDataBlkSizeG)); } void ExpBufFreeData PARAMS( (ptr), char* ptr) { free( ptr); } ExpBuf* ExpBufNext PARAMS( (b), ExpBuf* b) { return(b->next); } ExpBuf* ExpBufPrev PARAMS( (b), ExpBuf* b) { return(b->prev); } /* * set curr ptr used in reads to the first byte * to be read */ void ExpBufResetInReadMode PARAMS((b), ExpBuf* b) { b->curr = b->dataStart; b->readError = 0; b->writeError = 1; /* catch wrong mode errors */ } /* * sets dataStart to end of buffer * so following writes (backward) * over-write any existing data associated with * the buffer */ void ExpBufResetInWriteRvsMode PARAMS((b), ExpBuf* b) { b->dataEnd = b->dataStart = b->blkEnd; b->writeError = 0; b->readError = 1; /* catch wrong mode errors */ } /* * returns true if no more data can be read from * the given buffer. only valid when buffer in read (fwd) * mode. */ int ExpBufAtEod PARAMS((b), ExpBuf* b) { return(b->curr == b->dataEnd); } /* * returns true if no more reverse writes can be done * to the buffer. Only valid when buffers in reverse * write mode */ int ExpBufFull PARAMS((b), ExpBuf* b) { return((b)->dataStart == (b)->blkStart); } /* * returns true if the given buffer has no * valid data in it's data block */ int ExpBufHasNoData PARAMS((b), ExpBuf* b) { return(b->dataStart == b->dataEnd); } /* * returns the number of valid data bytes in the * given buffer's data block */ unsigned long ExpBufDataSize PARAMS((b), ExpBuf* b) { return(b->dataEnd - b->dataStart); } /* * returns size of data block that is attached to * the given buffer. */ unsigned long ExpBufDataBlkSize PARAMS((b), ExpBuf* b) { return(b->blkEnd - b->blkStart); } /* * returns a ptr the beginning of the valid data of * the given buffer. * returns NULL is there is no valid data. */ char* ExpBufDataPtr PARAMS((b), ExpBuf* b) { if (ExpBufHasNoData(b)) return(NULL); else return(b->dataStart); } #endif /* DEBUG */ /* * returns last ExpBuf in a list of bufs. * The given buf can be any buf in the list. */ ExpBuf* ExpBufListLastBuf PARAMS((b), ExpBuf* b) { for (; b->next != NULL; b = b->next); return(b); } /* * returns first buf in a list of bufs . * The given buf can be any buf in the list */ ExpBuf* ExpBufListFirstBuf PARAMS((b), ExpBuf* b) { for (; b->prev != NULL; b = b->prev); return(b); } /* * Allocates a Buf and allocates an attaches a * data block of expBufDataBlkSizeG to that buffer. * sets up the blk for writing in that the data start * and data end point to the byte after the data blk. */ ExpBuf* ExpBufAllocBufAndData() { ExpBuf* retVal; retVal = ExpBufAllocBuf(); if (retVal == NULL) return(NULL); retVal->readError = 0; retVal->writeError = 0; retVal->blkStart = ExpBufAllocData(); if (retVal->blkStart == NULL) { ExpBufFreeBuf(retVal); return(NULL); } retVal->next = NULL; retVal->prev = NULL; retVal->curr = retVal->blkEnd = retVal->dataStart = retVal->dataEnd = retVal->blkStart + expBufDataBlkSizeG; return(retVal); } /* ExpBufAllocBufAndData */ /* * Frees ExpBuf's and associated data blocks after * after (next ptr) and including the given buffer, b. */ void ExpBufFreeBufAndDataList PARAMS( (b), ExpBuf* b) { ExpBuf* tmp; for(; b != NULL;) { tmp = b->next; ExpBufFreeBufAndData(b); b = tmp; } } /* ExpBufFreeBufAndDataList */ /* * puts the given data in a buffer and sets it up for reading * the data. This results in a "full" buffer with a data * blk size of given data's len */ void ExpBufInstallDataInBuf PARAMS( ( buf, data, len), ExpBuf* buf _AND_ char* data _AND_ unsigned long int len) { buf->readError = 0; buf->writeError = 0; buf->blkStart = buf->dataStart = buf->curr = data; buf->next = NULL; buf->prev = NULL; buf->blkEnd = buf->dataEnd = data + len; } /* ExpBufInstallDataInBuf */ /* Buf reading and writing routines follow */ /* READ * returns the next byte to be read without * advancing the pointer. No check for end of * data - this is lame */ unsigned char ExpBufPeekByte PARAMS( (b), ExpBuf** b) { if ((*b)->curr == (*b)->dataEnd) (*b)->readError = 1; return(*(*b)->curr); } /* ExpBufPeek */ /* READ * copy the next len chars in the buffer to the given * dst char string. The curr ptr in the buffer is advanced * appropriately */ int ExpBufCopy PARAMS( (dst, b, len), char* dst _AND_ ExpBuf** b _AND_ unsigned long int len) { unsigned long int gotLen; int totalGotLen = 0; char* srcPtr; gotLen = len; while (1) /* optimize std path - eg only one ExpBufGetSeg needed */ { srcPtr = ExpBufGetSeg(b, &gotLen); memcpy(dst + totalGotLen, srcPtr, gotLen); totalGotLen += gotLen; if (totalGotLen >= len) return(totalGotLen); if (gotLen == 0) /* eod */ { (*b)->readError = 1; return(totalGotLen); } gotLen = len - totalGotLen; } /* not reached */ } /* ExpBufCopy */ /* * advance the curr ptr in the given buffer over the next * len bytes */ void ExpBufSkip PARAMS( (b, len), ExpBuf** b _AND_ unsigned long int len) { unsigned long int lenRemaining; lenRemaining = len; while ((len > 0) && ExpBufGetSeg(b, &lenRemaining)) { len -= lenRemaining; if (lenRemaining == 0) { (*b)->readError = 1; return; } lenRemaining = len; } } /* ExpBufSkip */ /* READ * returns a ptr to the next "len" bytes (contiguous). * if "len" is greater than the available contiguous bytes * len is set the the number of contig. bytes the returned * ptr references. Subsequent call to ExpBufGetSeg or other ExpBufGet * routines will return ptrs to the following bytes (ie curr is advanced). * Changes *b to pt to the next buffer and sets curr for the * that buffer to dataStart if the current one has been totally read. * * if the value returned in the len param is zero or the * returned char* is NULL then at end of data (eod) * */ char* ExpBufGetSeg PARAMS( (b, len), ExpBuf** b _AND_ unsigned long int* len) { int bytesLeft; char* retVal; if (ExpBufAtEod(*b)) { *len = 0; return(NULL); } bytesLeft = (*b)->dataEnd - (*b)->curr; retVal = (*b)->curr; /* check for "buffer fault" */ if ( bytesLeft <= *len) { *len = bytesLeft; if ((*b)->next != NULL) { *b = (*b)->next; /* get next buffer with valid data */ while ( ((*b)->next != NULL) && ExpBufHasNoData(*b) ) *b = (*b)->next; /* reset current pointer to beggining of data if nec */ (*b)->curr = (*b)->dataStart; } else (*b)->curr += *len; } else (*b)->curr += *len; return(retVal); } /* ExpBufGetSeg */ /* * WRITE * Copies len bytes from the data pointer into the given buffer * * FILLS EXP_BUFFERS BACKWARDS! from the end of the data to the beginning * LINKS BUFFERS BACKWARDS! if a buf is full it allocs another an * puts it at the HEAD of the buffer list * * changes *b to pt to the new "prev" buffer if the current one * has been totally filled * Rvs is for REVERSE! * * modifies the dataStart pointer to reflect the new data */ void ExpBufPutSegRvs PARAMS( (b, data, len), ExpBuf** b _AND_ char* data _AND_ unsigned long int len) { int bytesLeft; ExpBuf* buf; char* dataPtr; buf = *b; if (buf->writeError) return; bytesLeft = buf->dataStart - buf->blkStart; dataPtr = data + len; /* pts to end of data to be written */ /* optimize fast path */ do { if (bytesLeft > len) /* enough room in this buffer for write */ { buf->dataStart -= len; memcpy(buf->dataStart, data, len); break; /* this is the normal exit from this loop */ } else { /* * going to fill this buffer completely, * so alloc other one (only if one is not * already linked in) */ dataPtr = dataPtr - bytesLeft; buf->dataStart = buf->blkStart; memcpy(buf->dataStart, dataPtr, bytesLeft); len -= bytesLeft; if (buf->prev == NULL) { /* alloc & insert new buf at head of buffer list */ buf = ExpBufAllocBufAndData(); if (buf == NULL) { (*b)->writeError = 1; return; } buf->next = *b; (*b)->prev = buf; } else buf = buf->prev; *b = buf; /* update head of list */ bytesLeft = buf->dataStart - buf->blkStart; } } while (1); /* not reached */ } /* ExpBufPutSegRvs */ /* * returns the next byte and advances the curr ptr by one. * sets the readError flag if there is no byte to read * (ie at end of data) */ unsigned char ExpBufGetByte PARAMS( (b), ExpBuf** b) { unsigned char retVal; if (ExpBufAtEod(*b)) { (*b)->readError = 1; return((unsigned char)0); } retVal = *(*b)->curr++; /* "buffer fault" - if end of this buf, go on to next, if any */ if ( ExpBufAtEod(*b) && ((*b)->next != NULL)) { *b = (*b)->next; /* get next buffer with valid data */ while ( ((*b)->next != NULL) && ExpBufHasNoData(*b) ) *b = (*b)->next; /* reset current pointer to beggining of data if nec */ (*b)->curr = (*b)->dataStart; } return(retVal); } /* ExpBufGetByte */ /* WRITE * Puts a single octet into the buffer * writes in reverse. * allocates new buffers as nec - may change * (*b) to new buffer since writing backwards */ void ExpBufPutByteRvs PARAMS( (b, byte), ExpBuf** b _AND_ unsigned char byte) { ExpBuf* new; if ((*b)->writeError) return; *(--(*b)->dataStart) = byte; /* * check if buffer is full and alloc new one if nec * and insert it before this one since writing backwards */ if (ExpBufFull(*b)) { if ((*b)->prev == NULL) { /* * no prev buf so alloc & insert * new buf as head of buffer list */ new = ExpBufAllocBufAndData(); if (new == NULL) { (*b)->writeError = 1; return; } new->next = *b; (*b)->prev = new; *b = new; } else { (*b) = (*b)->prev; ExpBufResetInWriteRvsMode(*b); } } } /* ExpBufPutByteRvs */ linux-atm-2.5.1/src/ilmid/asn1/exp_buf.h0000644000200100001440000001105107360675442016623 0ustar chasusers/* * exp_buf.h - read/write/alloc/free routines for a simple buffer structure * * MACROS are gross but execution speed is important * * NOTE: replacing the malloc and free with a allocs/frees * from/to buffer pools or similar tuned/fixed size * mem mgmt will improve performance. * * You should tune the buffer management to your environment * for best results * * MS 91 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _exp_buf_h_ #define _exp_buf_h_ typedef struct ExpBuf { char* dataStart; /* points to first valid data byte */ /* when empty, 1 byte past blk end (rvs write)*/ char* dataEnd; /* pts to first byte AFTER last valid data byte*/ char* curr; /* current location to read form */ /* points to next byte to read */ struct ExpBuf* next; /* next buf (NULL if no next buffer)*/ struct ExpBuf* prev; /* prev buf (NULL if no prev buffer)*/ char* blkStart; /* points to first byte of the blk */ char* blkEnd; /* points the first byte AFTER blks last byte */ int readError; /* non-zero is attempt to read past end of data*/ int writeError;/* non-zero is attempt write fails (no mor bufs)*/ } ExpBuf; /* init, alloc and free routines */ #ifdef DEBUG /* use fcns when debugging/macros later */ void ExpBufInit PROTO((unsigned long dataBlkSize)); ExpBuf* ExpBufAllocBuf(); void ExpBufFreeBuf PROTO((ExpBuf* ptr)); char* ExpBufAllocData(); void ExpBufFreeData PROTO((char* ptr)); void ExpBufFreeBufAndData PROTO(( ExpBuf* b)); ExpBuf* ExpBufNext PROTO((ExpBuf* b)); ExpBuf* ExpBufPrev PROTO((ExpBuf* b)); void ExpBufResetInReadMode PROTO((ExpBuf* b)); void ExpBufResetInWriteRvsMode PROTO((ExpBuf* b)); int ExpBufAtEod PROTO((ExpBuf* b)); int ExpBufFull PROTO((ExpBuf* b)); int ExpBufHasNoData PROTO((ExpBuf* b)); unsigned long ExpBufDataSize PROTO((ExpBuf* b)); unsigned long ExpBufDataBlkSize PROTO((ExpBuf* b)); char* ExpBufDataPtr PROTO((ExpBuf* b)); #else extern unsigned long expBufDataBlkSizeG; #define ExpBufInit(size) expBufDataBlkSizeG = size; #define ExpBufAllocBuf() ((ExpBuf*)malloc(sizeof(ExpBuf))) #define ExpBufFreeBuf(ptr) free(ptr) #define ExpBufAllocData() ((void*)malloc(expBufDataBlkSizeG)) #define ExpBufFreeData( ptr) free(ptr) #define ExpBufFreeBufAndData(b) { ExpBufFreeData((b)->blkStart);\ ExpBufFreeBuf(b);} #define ExpBufNext(b) ((b)->next) #define ExpBufPrev(b) ((b)->prev) #define ExpBufResetInReadMode(b) {(b)->curr = (b)->dataStart; (b)->readError = 0; (b)->writeError = 1;} #define ExpBufResetInWriteRvsMode(b) {(b)->dataStart = (b)->dataEnd = (b)->blkEnd; (b)->writeError = 0; (b)->readError = 1;} /* ExpBufAtEod only valid during reads (fwd) */ #define ExpBufAtEod(b) ((b)->curr == (b)->dataEnd) /* ExpBufFull only valid during write (reverse) */ #define ExpBufFull(b) ((b)->dataStart == (b)->blkStart) #define ExpBufHasNoData(b) ((b)->dataStart == (b)->dataEnd) #define ExpBufDataSize(b) ((b)->dataEnd - (b)->dataStart) #define ExpBufDataBlkSize(b) ((b)->blkEnd - (b)->blkStart) #define ExpBufDataPtr(b) (ExpBufHasNoData(b)? NULL: (b)->dataStart) #endif /* DEBUG */ #define ExpBufReadError(b) ((*b)->readError) #define ExpBufWriteError(b) ((*b)->writeError) ExpBuf* ExpBufAllocBufAndData(); void ExpBufInstallDataInBuf PROTO((ExpBuf* b, char* data, unsigned long int len)); void ExpBufFreeBufAndDataList PROTO(( ExpBuf* b)); ExpBuf* ExpBufListLastBuf PROTO((ExpBuf* b)); ExpBuf* ExpBufListFirstBuf PROTO((ExpBuf* b)); /* reading and writing routines */ void ExpBufSkip PROTO(( ExpBuf**, unsigned long len)); int ExpBufCopy PROTO(( char* dst, ExpBuf** b, unsigned long len)); unsigned char ExpBufPeekByte PROTO(( ExpBuf** b)); char* ExpBufGetSeg PROTO((ExpBuf** b, unsigned long* len)); void ExpBufPutSegRvs PROTO((ExpBuf** b, char* data, unsigned long len)); unsigned char ExpBufGetByte PROTO((ExpBuf** b)); void ExpBufPutByteRvs PROTO((ExpBuf** b, unsigned char byte)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/min_buf.h0000644000200100001440000000357207360675442016623 0ustar chasusers /* * min_buf.h - trivial buffer routines. * only use these for * encoding - if you know you 'buffer' is big enough * to hold the encoded value * * decoding - if you know that the encoding is error * free. * * * The minimal buffer is simply a block of mem referenced * by a char** (ie BUF_TYPE char**). These are very efficient * but should only be used when it is safe (see above) or you're * willing to risk reading past the end of the buffer or writing * 'past' the beginning (segmentation faults/bus errors etc). * * No checks for reading or writing past the buffer are done. * every operation is assumed to succeed. * MS 92 * * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _min_buf_h_ #define _min_buf_h_ #define MinBufGetByte(b)\ (unsigned char)(*((*(b))++)) #define MinBufGetSeg( b, lenPtr)\ *(b);\ (*b) += *lenPtr; #define MinBufCopy( dst, b, len)\ memcpy((dst), *(b), (len));\ (*(b)) += (len); #define MinBufSkip( b, len) ((*(b)) += len) #define MinBufPeekByte( b) (**(b)) #define MinBufPutByteRvs( b, byte)\ (*(--(*(b))) = (byte)) #define MinBufPutSegRvs( b, data, len)\ ((*(b)) = (*(b)) - (len));\ memcpy(*(b), (data), (len)); #define MinBufReadError(b) 0 /* always false */ #define MinBufWriteError(b) 0 /* always false */ #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/nibble_alloc.c0000644000200100001440000001014511235572166017571 0ustar chasusers/* * nibble_alloc.c - fast mem allocation for decoded values * * MS Dec 31/91 * * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #if HAVE_CONFIG_H #include #endif #include #include #include "asn_config.h" #include "nibble_alloc.h" NibbleMem* nmG = NULL; void InitNibbleMem PARAMS((initialSize, incrementSize), unsigned long int initialSize _AND_ unsigned long int incrementSize) { NibbleMem* nm; nm = (NibbleMem*) malloc(sizeof(NibbleMem)); nm->incrementSize = incrementSize; nm->currNibbleBuf = nm->firstNibbleBuf = (NibbleBuf*)malloc(sizeof(NibbleBuf)); nm->firstNibbleBuf->curr = nm->firstNibbleBuf->start = (char*) malloc(initialSize); nm->firstNibbleBuf->end = nm->firstNibbleBuf->start + initialSize; nm->firstNibbleBuf->next = NULL; memset(nm->currNibbleBuf->start, 0, initialSize); nmG = nm;/* set global */ } /* InitNibbleAlloc */ /* * alloc new nibble buf, link in, reset to curr nibble buf */ void ServiceNibbleFault PARAMS( (size), unsigned long size) { NibbleMem* nm; unsigned long newBufSize; nm = nmG; if (size > nm->incrementSize) newBufSize = size; else newBufSize = nm->incrementSize; nm->currNibbleBuf->next = (NibbleBuf*) malloc(sizeof(NibbleBuf)); nm->currNibbleBuf = nm->currNibbleBuf->next; nm->currNibbleBuf->curr = nm->currNibbleBuf->start = (char*) malloc(newBufSize); nm->currNibbleBuf->end = nm->currNibbleBuf->start + newBufSize; nm->currNibbleBuf->next = NULL; memset(nm->currNibbleBuf->start, 0, newBufSize); } /* serviceNibbleFault */ /* * returns requested space filled with zeros */ void* NibbleAlloc PARAMS( (size), unsigned long size) { NibbleMem* nm; char* retVal; unsigned long ndiff; nm = nmG; if ((nm->currNibbleBuf->end - nm->currNibbleBuf->curr) < size) ServiceNibbleFault(size); retVal = nm->currNibbleBuf->curr; /* * maintain word alignment */ ndiff = size % sizeof(long); if (ndiff != 0) { nm->currNibbleBuf->curr += size + sizeof(long) - ndiff; /* * this is a fix from Terry Sullivan * * makes sure curr does not go past the end ptr */ if (nm->currNibbleBuf->curr > nm->currNibbleBuf->end) nm->currNibbleBuf->curr = nm->currNibbleBuf->end; } else nm->currNibbleBuf->curr += size; return(retVal); } /* NibbleAlloc */ /* * frees all nibble buffers except the first, * resets the first to empty and zero's it */ void ResetNibbleMem() { NibbleMem* nm; int i; NibbleBuf* tmp; NibbleBuf* nextTmp; nm = nmG; /* * reset first nibble buf */ memset(nm->firstNibbleBuf->start, 0, nm->firstNibbleBuf->curr - nm->firstNibbleBuf->start); nm->firstNibbleBuf->curr = nm->firstNibbleBuf->start; /* * free incrementally added nibble bufs */ for (tmp = nm->firstNibbleBuf->next; tmp != NULL; ) { free(tmp->start); nextTmp = tmp->next; free(tmp); tmp = nextTmp; } nm->firstNibbleBuf->next = NULL; nm->currNibbleBuf = nm->firstNibbleBuf; } /* ResetNibbleMem */ /* * frees all nibble buffers, closing this * NibbleMem completely */ void ShutdownNibbleMem() { NibbleMem* nm; int i; NibbleBuf* tmp; NibbleBuf* nextTmp; nm = nmG; nmG = NULL; /* * free nibble bufs */ for (tmp = nm->firstNibbleBuf; tmp != NULL; ) { free(tmp->start); nextTmp = tmp->next; free(tmp); tmp = nextTmp; } free(nm); } /* ShutdownNibbleMem */ linux-atm-2.5.1/src/ilmid/asn1/nibble_alloc.h0000644000200100001440000000226407654543116017604 0ustar chasusers/* * nibble_alloc.h - handles buffer allocation * MS 91 * * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _nibble_alloc_h_ #define _nibble_alloc_h_ typedef struct NibbleBuf { char* start; char* end; char* curr; struct NibbleBuf* next; } NibbleBuf; typedef struct NibbleMem { NibbleBuf* firstNibbleBuf; NibbleBuf* currNibbleBuf; unsigned long int incrementSize; } NibbleMem; void InitNibbleMem PROTO((unsigned long int initialSize, unsigned long int incrementSize)); void ShutdownNibbleMem(void); void ServiceNibbleFault PROTO((unsigned long int size)); void* NibbleAlloc PROTO((unsigned long int size)); void ResetNibbleMem(void); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/print.c0000644000200100001440000000151307360675442016324 0ustar chasusers/* * print.c - library routines for printing ASN.1 values. * * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #if HAVE_CONFIG_H #include #endif #include "asn_config.h" #include "print.h" unsigned short int stdIndentG = 4; void Indent PARAMS((f, i), FILE* f _AND_ unsigned short int i) { for( ; i > 0; i--) fputc(' ', f); /* this may be slow */ } linux-atm-2.5.1/src/ilmid/asn1/print.h0000644000200100001440000000131307360675442016327 0ustar chasusers/* * print.h * * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _snaccc_print_h_ #define _snaccc_print_h_ extern unsigned short int stdIndentG; void Indent PROTO((FILE* f, unsigned short int i)); #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/sbuf.h0000644000200100001440000001226107360675442016136 0ustar chasusers/* * sbuf_buf.h - a buffer consisting of one contiguous block * that checks for read and write range errors. * MS 92 * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _asn_buf_h_ #define _asn_buf_h_ typedef struct SBuf { char* dataStart; /* byte last written (or end) */ char* dataEnd; /* ptr to first byte after last valid data byte */ char* blkStart; /* ptr to first byte of the buffer */ char* blkEnd; /* ptr to first byte past end of the buffer */ char* readLoc; /* next byte to read (or end) */ int writeError; /* whether write error occurred */ int readError; /* whether read error occurred */ } SBuf; /* initializes a buffer into an 'empty' state */ #define SBufInit(b, data, dataLen)\ { (b)->readError = (b)->writeError = 1;\ (b)->blkStart = data;\ (b)->blkEnd = data + dataLen;\ (b)->dataStart = (b)->dataEnd = (b)->readLoc = (b)->blkEnd;\ } #define SBufResetInReadMode(b)\ { (b)->readLoc = (b)->dataStart;\ (b)->readError = 0;\ (b)->writeError = 1;\ } #define SBufResetInWriteRvsMode(b)\ { (b)->dataStart = (b)->dataEnd = (b)->blkEnd;\ (b)->writeError = 0;\ (b)->readError = 1;\ } /* installs given block of data into a buffer and sets it up for reading */ #define SBufInstallData(b, data, dataLen)\ SBufInit(b, data, dataLen);\ (b)->dataStart = (b)->blkStart;\ SBufResetInReadMode(b); /* returns the number of bytes in the data portion */ #define SBufDataLen(b)\ ((b)->dataEnd - (b)->dataStart) /* returns the pointer to the first data byte */ #define SBufDataPtr(b)\ ((b)->dataStart) /* returns the size of block, the maximum size for data */ #define SBufBlkLen(b)\ ((b)->blkEnd - (b)->blkStart) /* returns a pointer to the first byte of the block */ #define SBufBlkPtr(b)\ ((b)->blkStart) /* returns true if there is no more data to be read in the SBuf */ #define SBufEod(b)\ ((b)->readLoc >= (b)->dataEnd) /* returns true if you attempted to read past the end of data */ #define SBufReadError(b)\ ((b)->readError) /* * returns true if you attempted to write past the end of the block * (remember SBufs do not expand like ExpBufs) */ #define SBufWriteError(b)\ ((b)->writeError) /* Skips the next skipLen bytes for reading */ #define SBufSkip(b, skipLen)\ { if ( ((b)->readLoc + skipLen) > (b)->dataEnd)\ {\ (b)->readLoc = (b)->dataEnd;\ (b)->readError = 1;\ }\ else\ (b)->readLoc += skipLen;\ } /* * copies copyLen bytes from buffer b into char* dst. * assumes dst is pre-allocated and is large enough. * Will set the read error flag is you attempt to copy * more than the number of unread bytes available. */ #define SBufCopy(dst, b, copyLen)\ { if (((b)->readLoc + copyLen) > (b)->dataEnd)\ {\ memcpy(dst, (b)->readLoc, (b)->dataEnd - (b)->readLoc);\ (b)->readLoc = (b)->dataEnd;\ (b)->readError = 1;\ }\ else\ {\ memcpy(dst, (b)->readLoc, copyLen);\ (b)->readLoc += copyLen;\ }\ } /* * returns the next byte from the buffer without advancing the * current read location. */ #define SBufPeekByte(b)\ ((SBufEod(b))? ((b)->readError = 1):(unsigned char) *((b)->readLoc)) /* * WARNING: this is a fragile macro. be careful where you use it. * return a pointer into the buffer for the next bytes to be read * if *lenPtr uread bytes are not available, *lenPtr will be set * to the number of byte that are available. The current read location * is advance by the number of bytes returned in *lenPtr. The read error * flag will NOT set, ever, by this routine. */ #define SBufGetSeg( b, lenPtr)\ ((b)->readLoc);\ if (((b)->readLoc + *lenPtr) > (b)->dataEnd)\ {\ *lenPtr = (b)->dataEnd - (b)->readLoc;\ (b)->readLoc = (b)->dataEnd;\ }\ else\ (b)->readLoc += *lenPtr; /* * Write in reverse the char* seg of segLen bytes to the buffer b. * A reverse write of segement really just prepends the given seg * (in original order) to the buffers existing data */ #define SBufPutSegRvs(b, seg, segLen)\ { if (((b)->dataStart - segLen) < (b)->blkStart)\ (b)->writeError = 1;\ else\ {\ (b)->dataStart -= segLen;\ memcpy((b)->dataStart, seg, segLen);\ }\ } /* * returns the next byte from buffer b's data and advances the * current read location by one byte. This will set the read error * flag if you attempt to read past the end of the SBuf */ #define SBufGetByte(b)\ (unsigned char)((SBufEod(b))? ((b)->readError = 1):*((b)->readLoc++)) /* * writes (prepends) the given byte to buffer b's data */ #define SBufPutByteRvs(b, byte)\ { if ((b)->dataStart <= (b)->blkStart)\ (b)->writeError = 1;\ else\ *(--(b)->dataStart) = byte;\ } #endif /* conditional include */ linux-atm-2.5.1/src/ilmid/asn1/str_stk.c0000644000200100001440000000150407360675442016661 0ustar chasusers/* * str_stk.c - maintains a stack of the components of a bit string * or octet string so they can be copied into a single chunk * * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #if HAVE_CONFIG_H #include #endif #include "asn_config.h" #include "str_stk.h" /* global for use by AsnBits and AsnOcts */ StrStk strStkG = { NULL, 128, 0, 64, 0, 0 }; linux-atm-2.5.1/src/ilmid/asn1/str_stk.h0000644000200100001440000000652707360675442016700 0ustar chasusers/* * str_stk.h - maintains a stack of the components of a bit string * or octet string so they can be copied into a single chunk * * * CONSTRUCTED BIT AND OCTET STRINGS SUCK. They should be * specified in the application's ASN.1 spec as SEQUENCE OF OCTET STRING * * this stack stuff is for decoding constructed bit/octet strings * so the user gets a single contiguous bit/octet str instead of * irritating little pieces. This does not cost a lot more than * a linked octet/bit string type since we're copying from the * buffer anyway, not referencing it directly (even in simple case). * It will cost more if the string stk overflows and * needs to be enlarged via realloc - set the values of * initialStkSizeG, and stkGrowSize carefully for your application. * Once the StkSize grows, it doesn't shrink back ever. * * Only three routine use/deal with this stack garbage * BDecConsAsnOcts * BDecConsAsnBits * SetupConsBitsOctsStringStk * * Copyright (C) 1992 Michael Sample and the University of British Columbia * * This library is free software; you can redistribute it and/or * modify it provided that this copyright/license information is retained * in original form. * * If you modify this file, you must clearly indicate your changes. * * This source code is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ typedef struct StrStkElmt { char* str; unsigned long int len; } StrStkElmt; typedef struct StrStk { StrStkElmt* stk; /* ptr to array of SSElmts with 'size' elmts */ unsigned long int initialNumElmts; unsigned long int numElmts; /* total # of elements in str stk */ unsigned long int growElmts; /* # elmts to increase size by when nec */ unsigned long int nextFreeElmt; /* index of next free element */ unsigned long int totalByteLen; /* octet len of string stored in stk */ } StrStk; extern StrStk strStkG; /* * initializes stk (Allocates if nec.) * once stk is enlarged, it doesn't shrink */ #define RESET_STR_STK()\ {\ strStkG.nextFreeElmt = 0;\ strStkG.totalByteLen = 0;\ if (strStkG.stk == NULL){\ strStkG.stk = (StrStkElmt*) malloc((strStkG.initialNumElmts) *sizeof(StrStkElmt));\ strStkG.numElmts = strStkG.initialNumElmts;}\ } /* * add a char*,len pair to top of stack. * grows stack if necessary using realloc (!) */ #define PUSH_STR(strPtr, strsLen, env)\ {\ if (strStkG.nextFreeElmt >= strStkG.numElmts)\ {\ strStkG.stk = (StrStkElmt*) realloc(strStkG.stk, (strStkG.numElmts + strStkG.growElmts) *sizeof(StrStkElmt));\ strStkG.numElmts += strStkG.growElmts;\ }\ strStkG.totalByteLen += strsLen;\ strStkG.stk[strStkG.nextFreeElmt].str = strPtr;\ strStkG.stk[strStkG.nextFreeElmt].len = strsLen;\ strStkG.nextFreeElmt++;\ } /* * Set up size values for the stack that is used for merging constructed * octet or bit string into single strings. * **** Call this before decoding anything. ***** * Note: you don't have to call this if the default values * for initialStkSizeG and stkGrowSizeG are acceptable */ #define SetupConsBitsOctsStringStk (initialNumberOfElmts, numberOfElmtsToGrowBy)\ {\ strStkG.initialNumElmts = initialNumberOfElmts; \ strStkG.growElmts = numberOfElmtsToGrowBy;\ } linux-atm-2.5.1/src/ilmid/asn1/Makefile.in0000644000200100001440000003627511304770375017100 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/ilmid/asn1 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru libasn1_a_AR = $(AR) $(ARFLAGS) libasn1_a_LIBADD = am_libasn1_a_OBJECTS = asn_len.$(OBJEXT) asn_tag.$(OBJEXT) \ asn_int.$(OBJEXT) asn_octs.$(OBJEXT) asn_bits.$(OBJEXT) \ str_stk.$(OBJEXT) asn_oid.$(OBJEXT) asn_null.$(OBJEXT) \ asn_list.$(OBJEXT) nibble_alloc.$(OBJEXT) print.$(OBJEXT) libasn1_a_OBJECTS = $(am_libasn1_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libasn1_a_SOURCES) $(EXTRA_libasn1_a_SOURCES) DIST_SOURCES = $(libasn1_a_SOURCES) $(EXTRA_libasn1_a_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LIBRARIES = libasn1.a libasn1_a_SOURCES = asn_len.c asn_len.h asn_tag.c asn_tag.h \ asn_int.c asn_int.h asn_octs.c asn_octs.h \ asn_bits.c asn_bits.h str_stk.c str_stk.h \ asn_oid.c asn_oid.h asn_null.c asn_null.h \ asn_list.c asn_list.h nibble_alloc.c nibble_alloc.h \ print.c print.h \ asn_config.h min_buf.h sbuf.h exp_buf.h EXTRA_libasn1_a_SOURCES = asn_incl.h exp_buf.c EXTRA_DIST = README all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/ilmid/asn1/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/ilmid/asn1/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libasn1.a: $(libasn1_a_OBJECTS) $(libasn1_a_DEPENDENCIES) -rm -f libasn1.a $(libasn1_a_AR) libasn1.a $(libasn1_a_OBJECTS) $(libasn1_a_LIBADD) $(RANLIB) libasn1.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn_bits.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn_int.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn_len.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn_list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn_null.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn_octs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn_oid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn_tag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exp_buf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nibble_alloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str_stk.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/ilmid/Makefile.in0000644000200100001440000006431511304770375016232 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ sbin_PROGRAMS = ilmid$(EXEEXT) ilmidiag$(EXEEXT) subdir = src/ilmid DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" PROGRAMS = $(sbin_PROGRAMS) am_ilmid_OBJECTS = rfc1157_snmp.$(OBJEXT) rfc1155_smi.$(OBJEXT) \ util.$(OBJEXT) io.$(OBJEXT) message.$(OBJEXT) \ atmf_uni.$(OBJEXT) mib.$(OBJEXT) sysgroup.$(OBJEXT) \ ilmid.$(OBJEXT) wait.$(OBJEXT) states.$(OBJEXT) \ actions.$(OBJEXT) ilmid_OBJECTS = $(am_ilmid_OBJECTS) am_ilmidiag_OBJECTS = ilmidiag.$(OBJEXT) ilmidiag_OBJECTS = $(am_ilmidiag_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(ilmid_SOURCES) $(ilmidiag_SOURCES) DIST_SOURCES = $(ilmid_SOURCES) $(ilmidiag_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = asn1 INCLUDES = -I$(srcdir)/../ilmid/asn1 ilmid_SOURCES = rfc1157_snmp.c rfc1157_snmp.h rfc1155_smi.c rfc1155_smi.h \ util.c util.h io.c io.h message.c message.h \ atmf_uni.c atmf_uni.h mib.c mib.h \ sysgroup.c sysgroup.h ilmid.c ilmid.h \ wait.c wait.h states.c states.h actions.c actions.h ilmid_LDADD = $(top_builddir)/src/lib/libatm.la \ $(top_builddir)/src/ilmid/asn1/libasn1.a ilmid_DEPENDENCIES = $(ilmid_LDADD) ilmidiag_SOURCES = ilmidiag.c ilmidiag_LDADD = $(top_builddir)/src/lib/libatm.la ilmidiag_DEPENDENCIES = $(ilmid_LDADD) man_MANS = ilmid.8 EXTRA_DIST = COPYRIGHT ilmid.8 all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/ilmid/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/ilmid/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ilmid$(EXEEXT): $(ilmid_OBJECTS) $(ilmid_DEPENDENCIES) @rm -f ilmid$(EXEEXT) $(LINK) $(ilmid_OBJECTS) $(ilmid_LDADD) $(LIBS) ilmidiag$(EXEEXT): $(ilmidiag_OBJECTS) $(ilmidiag_DEPENDENCIES) @rm -f ilmidiag$(EXEEXT) $(LINK) $(ilmidiag_OBJECTS) $(ilmidiag_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actions.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmf_uni.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ilmid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ilmidiag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/message.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mib.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfc1155_smi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfc1157_snmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/states.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sysgroup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wait.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man8: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" @list=''; test -n "$(man8dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-sbinPROGRAMS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man8 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-man uninstall-sbinPROGRAMS uninstall-man: uninstall-man8 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-sbinPROGRAMS ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man8 install-pdf install-pdf-am install-ps \ install-ps-am install-sbinPROGRAMS install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am uninstall-man \ uninstall-man8 uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/include/0000755000200100001440000000000011304770375014501 5ustar chasuserslinux-atm-2.5.1/src/include/CVS/0000755000200100001440000000000011304767137015136 5ustar chasuserslinux-atm-2.5.1/src/include/CVS/Root0000644000200100001440000000007411304767137016005 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/include/CVS/Repository0000644000200100001440000000002611304767137017236 0ustar chasuserslinux-atm/src/include linux-atm-2.5.1/src/include/CVS/Entries0000644000200100001440000000040611304767137016472 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /Makefile.am/1.2.2.1/Tue Nov 22 20:55:55 2005//TV2_5_1 /atm.h/1.2.2.1/Sun Feb 25 22:51:04 2007//TV2_5_1 /atmd.h/1.2.2.1/Sun Feb 25 22:51:04 2007//TV2_5_1 /atmsap.h/1.2.2.1/Sun Feb 25 22:51:04 2007//TV2_5_1 D linux-atm-2.5.1/src/include/CVS/Tag0000644000200100001440000000001011304767137015563 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/include/.cvsignore0000644000200100001440000000002510666025263016475 0ustar chasusersMakefile Makefile.in linux-atm-2.5.1/src/include/Makefile.am0000644000200100001440000000005010340702733016520 0ustar chasusersinclude_HEADERS = atm.h atmd.h atmsap.h linux-atm-2.5.1/src/include/atm.h0000644000200100001440000000612410570411330015421 0ustar chasusers/* atm.h - Functions useful for ATM applications */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef _ATM_H #define _ATM_H #include #include #include #ifdef __cplusplus extern "C" { #endif /* * For versions of glibc < 2.1 */ #ifndef AF_ATMPVC #define AF_ATMPVC 8 #endif #ifndef AF_ATMSVC #define AF_ATMSVC 20 #endif #ifndef PF_ATMPVC #define PF_ATMPVC AF_ATMPVC #endif #ifndef PF_ATMSVC #define PF_ATMSVC AF_ATMSVC #endif #ifndef SOL_ATM #define SOL_ATM 264 #endif #ifndef SOL_AAL #define SOL_AAL 265 #endif #define HOSTS_ATM "/etc/hosts.atm" /* text2atm flags */ #define T2A_PVC 1 /* address is PVC */ #define T2A_SVC 2 /* address is SVC */ #define T2A_UNSPEC 4 /* allow unspecified parts in PVC address */ #define T2A_WILDCARD 8 /* allow wildcards in PVC or SVC address */ #define T2A_NNI 16 /* allow NNI VPI range (PVC) */ #define T2A_NAME 32 /* allow name resolution */ #define T2A_REMOTE 64 /* OBSOLETE */ #define T2A_LOCAL 128 /* don't use ANS */ /* atm2text flags */ #define A2T_PRETTY 1 /* add syntactic sugar */ #define A2T_NAME 2 /* attempt name lookup */ #define A2T_REMOTE 4 /* OBSOLETE */ #define A2T_LOCAL 8 /* don't use ANS */ /* atm_equal flags */ #define AXE_WILDCARD 1 /* allow wildcard match */ #define AXE_PRVOPT 2 /* private part of SVC address is optional */ /* text2qos flags */ #define T2Q_DEFAULTS 1 /* structure contains default values */ /* text2sap flags */ #define T2S_NAME 1 /* attempt name lookup */ #define T2S_LOCAL 2 /* we may support NIS or such in the future */ /* sap2text flags */ #define S2T_NAME 1 /* attempt name lookup */ #define S2T_LOCAL 2 /* we may support NIS or such in the future */ /* sap_equal flags */ #define SXE_COMPATIBLE 1 /* check for compatibility instead of identity*/ #define SXE_NEGOTIATION 2 /* allow negotiation; requires SXE_COMPATIBLE; assumes "a" defines the available capabilities */ #define SXE_RESULT 4 /* return selected SAP */ #define MAX_ATM_ADDR_LEN (2*ATM_ESA_LEN+ATM_E164_LEN+5) /* 4 dots, 1 plus */ #define MAX_ATM_NAME_LEN 256 /* wild guess */ #define MAX_ATM_QOS_LEN 116 /* 5+4+2*(3+3*(7+9)+2)+1 */ #define MAX_ATM_SAP_LEN 255 /* BHLI(27)+1+3*BLLI(L2=33,L3=41,+1)+2 */ int text2atm(const char *text,struct sockaddr *addr,int length,int flags); int atm2text(char *buffer,int length,const struct sockaddr *addr,int flags); int atm_equal(const struct sockaddr *a,const struct sockaddr *b,int len, int flags); int sdu2cell(int s,int sizes,const int *sdu_size,int *num_sdu); int text2qos(const char *text,struct atm_qos *qos,int flags); int qos2text(char *buffer,int length,const struct atm_qos *qos,int flags); int qos_equal(const struct atm_qos *a,const struct atm_qos *b); int text2sap(const char *text,struct atm_sap *sap,int flags); int sap2text(char *buffer,int length,const struct atm_sap *sap,int flags); int sap_equal(const struct atm_sap *a,const struct atm_sap *b,int flags,...); int __t2q_get_rate(const char **text,int up); int __atmlib_fetch(const char **pos,...); /* internal use only */ #ifdef __cplusplus }; #endif #endif linux-atm-2.5.1/src/include/atmd.h0000644000200100001440000001267610570411330015576 0ustar chasusers/* atmd.h - Functions useful for demons (and some other ATM tools) */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef _ATMD_H #define _ATMD_H /*--------------------------- Common definitions ----------------------------*/ #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* doubly linked list primitives */ #define Q_INSERT_HEAD(r,i) ({ (i)->next = r; (i)->prev = NULL; \ if (r) (r)->prev = i; r = i; }) #define Q_INSERT_AFTER(r,i,a) ({ if (a) { (i)->next = (a)->next; \ (i)->prev = a; if ((a)->next) (a)->next->prev = i; (a)->next = i; } \ else { (i)->next = r; (i)->prev = NULL; if (r) (r)->prev = i; r = i; } }) #define Q_INSERT_BEFORE(r,i,b) ({ if (b) { (i)->next = b; \ (i)->prev = (b)->prev; if ((b)->prev) (b)->prev->next = i; else r = i; \ (b)->prev = i; } else { (i)->next = r; (i)->prev = NULL; \ if (r) (r)->prev = i; r = i; } }) #define Q_REMOVE(r,i) ({ if ((i)->next) (i)->next->prev = (i)->prev; \ if ((i)->prev) (i)->prev->next = (i)->next; else r = (i)->next; }) extern struct timeval now; extern int debug; #define alloc_t(t) ((t *) alloc(sizeof(t))) void *alloc(size_t size); uint32_t read_netl(void *p); /*--------------------------- Diagnostic messages ---------------------------*/ #include #define DIAG_DEBUG 3 #define DIAG_INFO 2 #define DIAG_WARN 1 #define DIAG_ERROR 0 #define DIAG_FATAL -1 void set_application(const char *name); void set_logfile(const char *name); FILE *get_logfile(void); void set_verbosity(const char *component,int level); int get_verbosity(const char *component); void vdiag(const char *component,int severity,const char *fmt,va_list ap); void diag(const char *component,int severity,const char *fmt,...); void diag_dump(const char *component,int severity,const char *title, const unsigned char *data,int len); /*------------------------------ Timer support ------------------------------*/ #include typedef struct _timer { struct timeval expiration; void (*callback)(void *user); void *user; struct _timer *prev,*next; } TIMER; TIMER *start_timer(long usec,void (*callback)(void *user),void *user); void stop_timer(TIMER *timer); void (*timer_handler(TIMER *timer))(void *user); struct timeval *next_timer(void); void pop_timer(TIMER *timer); void expire_timers(void); /*--------------------------- Unix domain sockets ---------------------------*/ #include #include typedef struct { int s; /* socket */ struct sockaddr_un addr; /* reply address */ int size; /* address size */ } UN_CTX; int un_create(const char *path,mode_t mode); /* * Creates a Unix domain DGRAM socket, binds it to the specified path, and * returns the socket descriptor. Returns a negative value on error. */ int un_attach(const char *path); /* * Creates a Unix domain DGRAM socket and connects it to the specified path. * The local side is bound to an ephemeral address. Returns the socket * descriptor on success, a negative value otherwise. */ int un_recv_connect(int s,void *buf,int size); /* * Performs a recv(s,buf,size,0) and connects the socket to the sender's * address. Returns a negative value on error. */ int un_reply(int s,void *buf,int size, int (*handler)(void *buf,int len,void *user),void *user); /* * Receives a message from the socket into the buffer provided by the caller, * invokes handler for processing and optionally sends back a reply. If the * handler returns a negative value or zero, no reply is sent. If the handler * returns a positive value, this is interpreted as the length of the reply to * send. The data is taken from the buffer. If any system call fails, un_reply * returns a negative value. Otherwise, it returns whatever was returned by the * handler function. */ int un_recv(UN_CTX *ctx,int s,void *buf,int size); /* * Receive a message into the specified buffer and store the information needed * to send a reply in ctx. Sets errno and returns a negative value on error. */ int un_send(const UN_CTX *ctx,void *buf,int len); /* * Send a reply to the sender identified by ctx. Sets errno and returns a * negative value on error. */ /* ------------------------- IP address operations ------------------------- */ #include #define T2I_NAME 1 /* do a name lookup */ #define T2I_ERROR 2 /* print error messages */ uint32_t text2ip(const char *text,const char *component,int flags); /* * Converts a text string to an IP address. If resolution fails, text2ip * returns INADDR_NONE. If T2I_ERROR is set, errors messages are printed. If * component is non-NULL, they are logged using diag(). Otherwise, they are * printed on standard error. Note that T2I_NAME uses gethostbyname() which * may attempt resolution via DNS or NIS. */ /* ------------------------ Kernel pointer handles ------------------------- */ #include #define KPRT_PRINT_BUFS 4 /* up to that many buffers are concurrently available */ int kptr_eq(const atm_kptr_t *a,const atm_kptr_t *b); /* * Returns 1 if A and B are equal, 0 otherwise. Note that unused areas of the * handles must be initialized to a system-wide constant pattern, e.g. 0. */ const char *kptr_print(const atm_kptr_t *p); /* * Returns a pointer to a static buffer containing an ASCII representation of * a kernel pointer handle. After KPRT_PRINT_BUFS calls to kptr_print, old * buffers are reused. */ #ifdef __cplusplus }; #endif #endif linux-atm-2.5.1/src/include/atmsap.h0000644000200100001440000000244510570411330016127 0ustar chasusers/* atmsap.h - ATM Service Access Point addressing definitions */ /* Written 1996-1998 by Werner Almesberger, EPFL LRC/ICA */ #ifndef _ATMSAP_H #define _ATMSAP_H #include #include #ifdef __cplusplus extern "C" { #endif /* * Selected ISO/IEC TR 9577 Network Layer Protocol Identifiers (NLPID) */ #define NLPID_IEEE802_1_SNAP 0x80 /* IEEE 802.1 SNAP */ /* * Selected Organizationally Unique Identifiers (OUIs) */ #define ATM_FORUM_OUI "\x00\xA0\x3E" /* ATM Forum */ #define EPFL_OUI "\x00\x60\xD7" /* EPF Lausanne, CH */ /* * Selected vendor-specific application identifiers (for B-HLI). Such an * identifier consists of three bytes containing the OUI, followed by four * bytes assigned by the organization owning the OUI. */ #define ANS_HLT_VS_ID ATM_FORUM_OUI "\x00\x00\x00\x01" /* ATM Name System, af-saa-0069.000 */ #define VOD_HLT_VS_ID ATM_FORUM_OUI "\x00\x00\x00\x02" /* VoD, af-saa-0049.001 */ #define AREQUIPA_HLT_VS_ID EPFL_OUI "\x01\x00\x00\x01" /* Arequipa */ #define TTCP_HLT_VS_ID EPFL_OUI "\x01\x00\x00\x03" /* ttcp_atm */ /* Mapping of "well-known" TCP, UDP, etc. port numbers to ATM BHLIs. btd-saa-api-bhli-01.02 */ void atm_tcpip_port_mapping(char *vs_id,uint8_t protocol,uint16_t port); #ifdef __cplusplus }; #endif #endif linux-atm-2.5.1/src/include/Makefile.in0000644000200100001440000003244611304770375016557 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/include DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(includedir)" HEADERS = $(include_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ include_HEADERS = atm.h atmd.h atmsap.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(includedir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags uninstall uninstall-am uninstall-includeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/lane/0000755000200100001440000000000011304770375013775 5ustar chasuserslinux-atm-2.5.1/src/lane/CVS/0000755000200100001440000000000011304767137014432 5ustar chasuserslinux-atm-2.5.1/src/lane/CVS/Root0000644000200100001440000000007411304767137015301 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/lane/CVS/Repository0000644000200100001440000000002311304767137016527 0ustar chasuserslinux-atm/src/lane linux-atm-2.5.1/src/lane/CVS/Entries0000644000200100001440000000420311304767137015765 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /COPYRIGHT.TUT/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /USAGE/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atm_lecs.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /atm_lecs.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /bus.8/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /connect.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /connect.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /connect_bus.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /db.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /db.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /dump.c/1.2.2.1/Thu May 1 13:23:19 2003//TV2_5_1 /dump.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /events.c/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /events.h/1.2/Tue Oct 9 22:33:06 2001//TV2_5_1 /lane.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lane.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lane_atm.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lane_atm.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /ldb.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /ldb.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lecs.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lecs.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lecs.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lecs_db.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lecs_db.l/1.2.4.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /lecs_load.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lecs_load.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /les.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /load.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /load.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /load_lex.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /load_lex.l/1.2.4.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /mem.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /mem.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /mem_lecs.c/1.2.4.1/Thu Jan 10 18:13:10 2008//TV2_5_1 /mem_lecs.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /packet.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /packet.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /timers.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /timers.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /units.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /units.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 D linux-atm-2.5.1/src/lane/CVS/Tag0000644000200100001440000000001011304767137015057 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/lane/.cvsignore0000644000200100001440000000010310666025263015766 0ustar chasusersMakefile Makefile.in .deps .libs bus lecs lecs_db.c les load_lex.c linux-atm-2.5.1/src/lane/COPYRIGHT.TUT0000644000200100001440000000137607360675442015760 0ustar chasusers/* * Marko Kiiskila carnil@cs.tut.fi * * Tampere University of Technology - Telecommunications Laboratory * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. * */ linux-atm-2.5.1/src/lane/Makefile-0.790000644000200100001440000000211507360675442016035 0ustar chasusers# # Makefile # $Id: Makefile-0.79,v 1.2 2001/10/09 22:33:06 paulsch Exp $ # # Compilation options # CFLAGS = -ansi -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs # # # The rules # # SYSPGMS = les bus lecs MAN8 = les.8 lecs.8 bus.8 LESBUSOBJS = mem.o load.o units.o load_lex.o timers.o dump.o atm.o \ events.o lane.o LESOBJS = $(LESBUSOBJS) packet.o connect.o db.o BUSOBJS = $(LESBUSOBJS) connect_bus.o LECSOBJS = lecs_db.o lecs_load.o lecs.o ldb.o mem_lecs.o atm_lecs.o OBJS = $(LESOBJS) $(BUSOBJS) $(LECSOBJS) CLEAN = clean_lane include ../Rules.make load_lex.c : load_lex.l $(LEX) -oload_lex.c load_lex.l lecs_db.c: lecs_db.l $(LEX) -olecs_db.c lecs_db.l les: $(LESOBJS) @echo "Linking $@" @$(CC) $(LDFLAGS) -o $@ $(LESOBJS) bus: $(BUSOBJS) @echo "Linking $@" @$(CC) $(LDFLAGS) -o $@ $(BUSOBJS) lecs: $(LECSOBJS) @echo "Linking $@" $(CC) $(LDFLAGS) -o $@ $(LECSOBJS) $(LDLIBS) clean_lane: rm -f $(SYSPGMS) *.o *.d *~ .*~ core *.bak *.tar* *.errs load_lex.c \ lecs_db.c *~ linux-atm-2.5.1/src/lane/Makefile.am0000644000200100001440000000110307360675442016032 0ustar chasuserssbin_PROGRAMS = les bus lecs LDADD = $(top_builddir)/src/lib/libatm.la LES_BUS_SRCS = mem.c mem.h load.c load.h units.c units.h load_lex.l load_lex.h \ timers.c timers.h dump.c dump.h lane_atm.c lane_atm.h \ events.c events.h lane.c lane.h les_SOURCES = $(LES_BUS_SRCS) packet.c packet.h connect.c connect.h db.c db.h bus_SOURCES = $(LES_BUS_SRCS) connect_bus.c lecs_SOURCES = lecs_db.l lecs_db.h lecs_load.c lecs_load.h lecs.c lecs.h \ ldb.c ldb.h mem_lecs.c mem_lecs.h atm_lecs.c atm_lecs.h man_MANS = les.8 lecs.8 bus.8 EXTRA_DIST = $(man_MANS) COPYRIGHT.TUT USAGE linux-atm-2.5.1/src/lane/USAGE0000644000200100001440000000636307360675442014602 0ustar chasusers/* * Marko Kiiskila carnil@cs.tut.fi * * Tampere University of Technology - Telecommunications Laboratory * */ LANE Service Package ==================== Lan Emulation Configuration Server, Lan Emulation Server and Broadcast and Unknown Server. Description of LAN-E can be found from ATM Forum's specification "LAN Emulation Over ATM - Version 1.0". ftp://ftp.atmforum.com/pub/specs/af-lane-0021.000.ps.Z Usage: ====== Compile the package. This produces three executables lecs, les and bus. LES and BUS noth use same configuration file '.lanevars'. Fill in the required fields in that file and start the servers. Configuration file for LECS is .lecs_conf Configuration file (.lanevars): =============================== Has following variables for controlling VLAN and server operation: S1=Address of the LES. This address is used in ATM signalling. S2=Type of the emulated LAN. Valid values are "802.3" and "802.5". S3=Maximum frame size. Valid values are 1516, 4544, 9234 and 18190 S4=Join Timeout. Time in seconds which LES waits for LE_JOIN_REQUEST before tearing down a connection. S5=Maximum frame Age. Currently not used. S6=Address of the BUS. This address is used in ATM signalling. ELANNAME= Name of the emulated LAN Most important variables are S1 and S6. When one is running LE service and LE client in same machine, care must be taken in choosing different ATM addresses for these entities. This is needed because SAPs for these entities must be different, and ATM address is the only way for this. Currently these variables must be given in format shown in example configuration file included in package, i.e.: S6=:47:00:23:00:00:00:03:03:00:01:00:02:01:00:20:ea:00:0a:e9:02 #viulu Configuration file (.lecs_conf): ================================ Includes definitions for LECS's ATM address and ELAN definitions for which LECS knows about. Look for example configuration file .lecs_conf for description of variables and syntax of these. Example scenario: ================= -------- -------- -------- | | | | | | | Box1 |-------------|Switch|-------------| Box2 | | | | | | | -------- -------- -------- Box1 has ATM addresses A1, A2 and A3. Box2 has ATM address B1 and B2. A1 = LEC address in Box1 A2 = LES address A3 = BUS address B1 = LECS address B2 = LEC address in Box2 Start ATM signalling in both boxes. Switch is configures with IISP routes, because ilmid can only register one ATM address. Another way is to modify signalling daemon's code. -----8<------ if (walk->state == ls_same && atm_equal(&walk->addr, &msg->svc,0,0)) break; to if (walk->state == ls_same && atm_equal(&walk->addr, &msg->svc,(ATM_ESA_LEN-1)*8,AXE_WILDCARD)) break; (atm/sigd/kernel.c, near line 156) -----8<------ After this it is possible to run ilmid if A1, A2 and A3 differ only in selector byte of their ATM addresses. In this case IISP routes are not needed. .lanevars contains: [conn] S1=A2 S6=A3 .lecs_conf contains: #LECS address B1 #ELAN definition [] DEFAULT Start lecs, les and bus. Run LEC in Box1: zeppelin -c B1 -l A1 Run LEC in Box2: zeppelin -c B1 -l B2 linux-atm-2.5.1/src/lane/atm_lecs.c0000644000200100001440000000367007360675442015744 0ustar chasusers /* * ATM connection functions * * $Id: atm_lecs.c,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include #include /* Local includes */ #include "atmsap.h" #include "atm_lecs.h" /* Data */ #define QLEN 5 int atm_create_socket(unsigned char codepoint, const unsigned char *our_addr) { struct sockaddr_atmsvc server; struct atm_sap atmsap; struct atm_blli blli; struct atm_qos qos; int fd, ret; int len = sizeof(server); fd = socket(PF_ATMSVC, SOCK_DGRAM, 0); if (fd <0) { perror("socket(PF_ATMSVC, ...)"); return -1; } memset(&server, 0, len); memset(&blli, 0, sizeof(blli)); memset(&qos, 0, sizeof(qos)); server.sas_family = AF_ATMSVC; if (our_addr) memcpy(server.sas_addr.prv, our_addr, ATM_ESA_LEN); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = 1516; qos.rxtp.traffic_class = ATM_UBR; qos.rxtp.max_sdu = 1516; blli.l3_proto = ATM_L3_TR9577; blli.l3.tr9577.ipi = NLPID_IEEE802_1_SNAP; blli.l3.tr9577.snap[0] = 0x00; blli.l3.tr9577.snap[1] = 0xa0; blli.l3.tr9577.snap[2] = 0x3e; blli.l3.tr9577.snap[3] = 0x00; blli.l3.tr9577.snap[4] = codepoint; if (setsockopt(fd, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) { perror("setsockopt(fd, SOL_ATM, SO_ATMQOS,...)"); close(fd); return -1; } memset(&atmsap, 0, sizeof(struct atm_sap)); atmsap.blli[0] = blli; if (setsockopt(fd,SOL_ATM,SO_ATMSAP,&atmsap,sizeof(atmsap)) < 0) { perror("setsockop(SO_ATMSAP)"); (void) close(fd); return -1; } ret = bind(fd, (struct sockaddr *)&server, len); if (ret <0) { perror("bind(fd, ...)"); close(fd); return -1; } ret = listen(fd, QLEN); if (ret <0) { perror("listen(fd, QLEN)"); close(fd); return -1; } return fd; } linux-atm-2.5.1/src/lane/atm_lecs.h0000644000200100001440000000125207360675442015743 0ustar chasusers/* * ATM connection * * $Id: atm_lecs.h,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #ifndef ATM_LECS_H #define ATM_LECS_H /* System includes needed for types */ #include /* Codepoints */ #define CONFIGURATION_DIRECT 0x01 #define CONTROL_DIRECT 0x01 #define CONTROL_DISTRIBUTE 0x01 #define DATA_DIRECT_802_3 0x02 #define DATA_DIRECT_802_5 0x03 #define MULTICAST_SEND_802_3 0x04 #define MULTICAST_FORWARD_802_3 0x04 #define MULTICAST_SEND_802_5 0x05 #define MULTICAST_FORWARD_802_5 0x05 /* Global function prototypes */ int atm_create_socket(unsigned char codepoint, const unsigned char *our_addr); #endif /* ATM_LECS_H */ linux-atm-2.5.1/src/lane/bus.80000644000200100001440000000003007360675442014656 0ustar chasusers.so man8/les.8 .\"{{{}}}linux-atm-2.5.1/src/lane/connect.c0000644000200100001440000005756607360675442015623 0ustar chasusers/* * ATM connection wrapper * * $Id: connect.c,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include #include #include #include #include #include /* Local includes */ #include "mem.h" #include "lane.h" #include "dump.h" #include "load.h" #include "connect.h" #include "events.h" #include "db.h" #include "packet.h" #include "lane_atm.h" /* Type definitions */ /* Local function prototypes */ static void conn_init0(void); static void conn_init1(void); static void conn_dump(void); static void conn_release(void); static const char *dump_conn_type(ConnType_t type); /* static void add_pvcs(void); */ static int data_handler(const Event_t *event, void *funcdata); static int timer_handler(const Event_t *event, void *funcdata); static void conn_main(void); /* * as in connect_bus.c had to remove const qualifiers since * not every function honored it */ static int join(Conn_t *conn); static int join_ok(Conn_t *conn); static int join_bad(Conn_t *conn); static int join_close(Conn_t *conn); static int join_expire(Conn_t *conn); static int idle_bad(Conn_t *conn); static int topology_request(Conn_t *conn); static int register_req(Conn_t *conn); static int unregister_req(Conn_t *conn); static int arp_find(Conn_t *conn); static int arp_forward_response(Conn_t *conn); static int forward_flush_response(Conn_t *conn); static int is_multicast(const LaneDestination_t *to_detect); static int proper_request(void); static Bool_t is_proxy(void); static int is_control(LaneControl_t *c); /* Data */ #define BUFSIZE 256 #define PORT 8621U const Unit_t conn_unit = { "conn", &conn_init0, &conn_init1, &conn_dump, &conn_release }; static Conn_t *connlist; extern Reg_t *reglist; extern Proxy_t *proxylist; extern Lecdb_t *leclist; LaneControl_t *control_packet; static const char *rcsid = "$Id: connect.c,v 1.2 2001/10/09 22:33:06 paulsch Exp $"; static State_t /* CS_IDLE */ is_1 = { CE_SVC_OPEN, 0, "Idle->Add_Party", join, CS_JOINING }, is_2 = { CE_SVC_OPEN, 0, "Idle->Idle", idle_bad, CS_IDLE }, *idle_state[] = { &is_1, &is_2, NULL }, /* CS_JOINING */ js_1 = { CE_DATA, LE_JOIN_REQUEST, "Join->Oper", join_ok, CS_OPERATIONAL }, /* js_2 = { CE_DATA, LE_JOIN_REQUEST, "Join->Add_P", join_ap_ok, CS_ADD_PARTY }, */ js_3 = { CE_DATA, LE_JOIN_REQUEST, "Join->Join", join_bad, CS_JOINING }, js_5 = { CE_SVC_CLOSE, 0, "Join->Idle", join_close, CS_IDLE }, js_6 = { CE_TIMER, 0, "Join->Idle", join_expire, CS_IDLE }, *join_state[] = { &js_1, &js_3, &js_5, &js_6, NULL }, /* CS_OPERATIONAL */ os_1 = { CE_DATA, LE_JOIN_REQUEST, "Oper->Oper JOIN", join_ok, CS_OPERATIONAL }, os_2 = { CE_DATA, LE_JOIN_REQUEST, "Oper->Join", join_bad, CS_JOINING }, os_3 = { CE_DATA, LE_REGISTER_REQUEST, "Oper->Oper REGISTER REQUEST", register_req, CS_OPERATIONAL }, os_4 = { CE_DATA, LE_UNREGISTER_REQUEST, "Oper->Oper UNREGISTER REQUEST", unregister_req, CS_OPERATIONAL }, os_5 = { CE_DATA, LE_ARP_REQUEST, "Oper->Oper ARP REQUEST", arp_find, CS_OPERATIONAL}, os_6 = { CE_DATA, LE_TOPOLOGY_REQUEST, "Oper->Oper TOPOLOGY REQUEST", topology_request, CS_OPERATIONAL }, os_7 = { CE_DATA, LE_ARP_RESPONSE, "Oper->Oper ARP RESPONSE FORWARD", arp_forward_response, CS_OPERATIONAL }, os_8 = { CE_DATA, LE_FLUSH_RESPONSE, "Oper->Oper FLUSH FORWARD", forward_flush_response, CS_OPERATIONAL }, os_9 = { CE_SVC_CLOSE, 0, "Oper->Idle", join_close, CS_IDLE }, *oper_state[] = { &os_1, &os_2, &os_3, &os_4, &os_5, &os_6, &os_7, &os_8, &os_9, NULL }, **transitions[CS_MAX + 1] = { idle_state, join_state, oper_state }; /* Functions */ /* Initialize local data */ static void conn_init0(void) { connlist = NULL; reglist = NULL; proxylist = NULL; leclist = NULL; } /* Initialization for data that needs other units */ static void conn_init1(void) { set_var_str(&conn_unit, "version", rcsid); conn_main(); add_event_handler(CE_DATA, &data_handler, "data_handler", NULL); add_event_handler(CE_TIMER, &timer_handler, "timer_handler", NULL); Debug_unit(&conn_unit, "Initialized."); } /* Dump status, local data etc. */ static void conn_dump(void) { const char *tmp; const AtmAddr_t *addr; Debug_unit(&conn_unit, "Dumping unit"); Debug_unit(&conn_unit, "Parameters:"); addr = get_var_addr(&conn_unit, "S1"); if (addr != NULL) { Debug_unit(&conn_unit, "S1:"); dump_atmaddr(addr); } else { Debug_unit(&conn_unit, "S1: not set"); } tmp = get_var_str(&conn_unit, "S2"); if (tmp != NULL) { Debug_unit(&conn_unit, "S2: %s", tmp); } else { Debug_unit(&conn_unit, "S2: not set", tmp); } Debug_unit(&conn_unit, "S3: %d", get_var_int(&conn_unit, "S3")); Debug_unit(&conn_unit, "S4: %d", get_var_int(&conn_unit, "S4")); Debug_unit(&conn_unit, "S5: %d", get_var_int(&conn_unit, "S5")); addr = get_var_addr(&conn_unit, "S6"); if (addr != NULL) { Debug_unit(&conn_unit, "S6:"); dump_atmaddr(addr); } else { Debug_unit(&conn_unit, "S6: not set"); } dump_conn(NULL); } /* Release allocated memory, close files etc. */ static void conn_release(void) { Conn_t *tmp; Reg_t *rtmp; Lecdb_t *ltmp; Proxy_t *ptmp; Debug_unit(&conn_unit, "Releasing unit"); for(tmp = connlist; tmp != NULL; tmp = tmp->next) { connlist = tmp->next; if (tmp->fd) close(tmp->fd); if (tmp->sfd) close(tmp->sfd); mem_free(&conn_unit, tmp); } for(rtmp = reglist; rtmp != NULL; rtmp = rtmp->next) { reglist = rtmp->next; mem_free(&conn_unit, rtmp); } for(ltmp = leclist; ltmp != NULL; ltmp = ltmp->next) { leclist = ltmp->next; mem_free(&conn_unit, ltmp); } for(ptmp = proxylist; ptmp != NULL; ptmp = ptmp->next) { proxylist = ptmp->next; mem_free(&conn_unit, ptmp); } } /* Validates control packet from header */ static int is_control(LaneControl_t *c) { if (c->marker == htons(LE_MARKER) && c->protocol == LE_PROTOCOL && c->version == LE_VERSION) return 1; else return 0; } /* Used to detect if LaneDestination_t is multicast address */ static int is_multicast(const LaneDestination_t *to_detect) { if (to_detect->tag == htons(LANE_DEST_MAC)) { return to_detect->a_r.mac_address[0] & 0x01; } else if (to_detect->tag == htons(LANE_DEST_RD)) { return to_detect->a_r.route.reserved[0] & 0x80; } else return 0; } /* * Handle new connections or data arrival * data points to Conn_t */ static int data_handler(const Event_t *event, void *funcdata) { Conn_t *tmp, *newconn; int fd, nbytes; static char buffer[BUFSIZE]; LaneControl_t *ctmp; struct sockaddr_atmsvc addr; assert(event->data != NULL); tmp = (Conn_t *)event->data; dump_conn(tmp); if (tmp->type == CT_MAIN) { nbytes = sizeof(addr); memset(&addr,0, nbytes); fd = accept(tmp->fd, (struct sockaddr *)&addr, &nbytes); if (fd <0) { dump_error(&conn_unit, "accept"); if (errno == ENETRESET) { Debug_unit(&conn_unit,"Restart. Sleeping 10 secs..."); sleep(10); event_put(&conn_unit, CE_RESTART, NULL); } else if (errno == EUNATCH) { Debug_unit(&conn_unit,"Exiting..."); event_put(&conn_unit, CE_EXIT, NULL); } return -1; } newconn = conn_add(CT_SVC_CD, fd,0); newconn->state = call_state(CE_SVC_OPEN, 0, newconn); } else { /* tmp->fd or tmp->sfd ?*/ nbytes = read(tmp->active_fd, buffer, BUFSIZE); if (nbytes < 0) { dump_error(&conn_unit, "read"); if (errno == EUNATCH) event_put(&conn_unit, CE_EXIT, NULL); if (errno == ENETRESET) { Debug_unit(&conn_unit, "Restart. Sleeping 10 secs..."); sleep(10); event_put(&conn_unit, CE_RESTART, NULL); } } else if (nbytes == 0) { /* EOF */ Debug_unit(&conn_unit, "EOF"); tmp->state = call_state(CE_SVC_CLOSE, 0, tmp); } else { buffer[nbytes] = '\0'; Debug_unit(&conn_unit, "Data: %2.2x %2.2x %2.2x", 0xff&buffer[0],0xff&buffer[1],0xff&buffer[2]); ctmp = (LaneControl_t *)buffer; if (is_control(ctmp) == 1) { control_packet = (LaneControl_t*)buffer; dump_control(ctmp); tmp->proxy = is_proxy(); tmp->state = call_state(CE_DATA, ctmp->opcode, tmp); } else Debug_unit(&conn_unit,"Not a control_packet, discarding..."); } } mem_free(&conn_unit, event); return 1; } static int timer_handler(const Event_t *event, void *funcdata) { Conn_t *tmp; assert(event->data != NULL); tmp = (Conn_t *)event->data; dump_conn(tmp); tmp->state = call_state(CE_TIMER, 0, tmp); return 1; } static const char * dump_conn_type(ConnType_t type) { switch(type) { case CT_NONE: return "None"; case CT_MAIN: return "Main listener"; case CT_PVC_CD: return "PVC Control Direct"; case CT_PVC_DD: return "PVC Data Direct"; case CT_SVC_CD: return "SVC Control Direct"; case CT_SVC_DD: return "SVC Data Direct"; default: return "Bad type"; } } void dump_conn(const Conn_t *connection) { Conn_t *tmp; for(tmp = connlist; tmp != NULL; tmp = tmp->next) { if (connection == NULL || tmp == connection) { Debug_unit(&conn_unit, "fd %d sfd %d state %s type %s", tmp->fd, tmp->sfd, dump_conn_state(tmp->state), dump_conn_type(tmp->type)); } } } Conn_t * conn_add(ConnType_t type, int fd, LecId_t pvc_lecid) { Conn_t *tmp; LecId_t lecid = 0; if (type != CT_MAIN && type != CT_PVC_CD) { /* Find next available LECID */ for (tmp = connlist; tmp != NULL; tmp = tmp->next){ if (lecid < tmp->lecid) { lecid = tmp->lecid; } } lecid++; } else if (type == CT_MAIN) { lecid = 0; } else /* PVC */ lecid = pvc_lecid; tmp = (Conn_t *)mem_alloc(&conn_unit, sizeof(Conn_t)); memset(tmp, 0, sizeof(*tmp)); tmp->fd = fd; tmp->state = CS_IDLE; tmp->lecid = lecid; tmp->type = type; tmp->next = connlist; tmp->timer = timer_new(&conn_unit); tmp->proxy = BL_FALSE; connlist = tmp; event_add_fd(fd, tmp); return tmp; } void conn_remove(const Conn_t *connection) { Conn_t *tmp, *prev; assert(connection != NULL); prev = NULL; tmp = connlist; while(tmp) { if (tmp == connection) { if (prev != NULL) { prev->next = tmp->next; } else { connlist = tmp->next; } if (connection->fd) { close(connection->fd); event_remove_fd(connection->fd); } if (connection->sfd) { event_remove_fd(connection->sfd); close(connection->sfd); } timer_free(&conn_unit, tmp->timer); mem_free(&conn_unit, tmp); return; } prev = tmp; tmp = tmp->next; } } void conn_set_active(void *data, int fd) { Conn_t *tmp = (Conn_t *)data; assert(tmp); tmp->active_fd = fd; } static void conn_main(void) { const AtmAddr_t *addr; int main_conn; const char *str; int i; addr = get_var_addr(&conn_unit, "S1"); if (addr == NULL) { dump_printf(EL_ERROR, "S1 (LES Address) must be specified"); event_put(&conn_unit, CE_EXIT, NULL); } else { str = get_var_str(&conn_unit,"S2"); if (str == NULL) { set_var_str(&conn_unit, "S2", S2_default); } i = get_var_int(&conn_unit,"S3"); if (i == 0) { set_var_int(&conn_unit,"S3", S3_default); } i = get_var_int(&conn_unit,"S4"); if (i == 0) { set_var_int(&conn_unit,"S4", S4_default); } i = get_var_int(&conn_unit,"S5"); if (i == 0) { set_var_int(&conn_unit,"S5", S5_default); } addr = get_var_addr(&conn_unit, "S6"); if (addr == NULL) { dump_printf(EL_ERROR, "S6 (BUS Address) must be specified"); event_put(&conn_unit, CE_EXIT, NULL); } else { main_conn = atm_create_socket(CONTROL_DIRECT, get_var_addr(&conn_unit, "S1")); if (main_conn >= 0) { (void)conn_add(CT_MAIN, main_conn,0); } } } } ConnState_t call_state(EventType_t event, unsigned short opcode, Conn_t *conn) { State_t **tmp; unsigned int i = 0; int ret; Debug_unit(&conn_unit, "Call state"); assert(conn != NULL); assert(conn->state <= CS_MAX); tmp = transitions[conn->state]; for(; tmp[i] != NULL; i++) { if (tmp[i]->event == event && htons(tmp[i]->opcode) == opcode) { Debug_unit(&conn_unit, "Trying func %s", tmp[i]->descript); ret = tmp[i]->func(conn); if (ret != 0){ Debug_unit(&conn_unit, "Success"); return tmp[i]->nextstate; } else { Debug_unit(&conn_unit, "Failed"); } } else { Debug_unit(&conn_unit, "Skipping func %s", tmp[i]->descript); } } return conn->state; } const char * dump_conn_state(ConnState_t state) { switch(state) { case CS_IDLE: return "Idle"; case CS_JOINING: return "Joining"; case CS_OPERATIONAL: return "Operational"; default: return "Bad state"; } } #define get_max_frame(a) ((a==LE_MAX_FRAME_1516)?1516:((a==LE_MAX_FRAME_4544)?4544:((a==LE_MAX_FRAME_9234)?9234:18190))) static int proper_request() { if (control_packet != NULL && /* Target address is our address */ /* FI[S_ATM] == SV[S_ATM] */ /* memcmp((char *) &control_packet->target_addr, (const char *) get_var_addr(&conn_unit,"S1"), sizeof(AtmAddr_t)) == 0 && */ /* Lan type is unspecified or same as configured to this server */ /* FI[LAN Type] == "Unspecified" or FI[LAN Type] == S2 */ (control_packet->lan_type == LE_LAN_TYPE_UNSPECIFIED || strcmp(get_var_str(&conn_unit,"S2"), ((control_packet->lan_type == LE_LAN_TYPE_802_3)?"802.3": (control_packet->lan_type == LE_LAN_TYPE_802_5)?"802.5":"unspecified")) == 0) && /* Max frame size is unspecified or FI[MAX MTU] >= S3 */ (control_packet->max_frame == LE_MAX_FRAME_UNSPECIFIED || get_var_int(&conn_unit, "S3") <= get_max_frame(control_packet->max_frame)) /* TOADD: check for entry in REG-DB */ ) { return 1; } return 0; } static Bool_t is_proxy(void) { if ((control_packet->flags & htons(LE_FLAG_PROXY)) == htons(LE_FLAG_PROXY)) return BL_TRUE; else return BL_FALSE; } /* * State transition functions */ static int join(Conn_t *conn) { int timeout; int rfd; Debug_unit(&conn_unit, "Join called"); dump_conn(conn); timeout = get_var_int(&conn_unit, "S4"); timer_alarm(&conn_unit, conn->timer, (unsigned)timeout, conn); rfd=atm_connect_back(get_var_addr(&conn_unit, "S1"), conn, CONTROL_DISTRIBUTE); if (rfd<0) { conn_remove(conn); return 0; } conn->sfd=rfd; event_add_fd(rfd, conn); return 1; } static int join_ok(Conn_t *conn) { Reg_t *rtmp = NULL; /* silence gcc 2.7.2.1 */ Lecdb_t *ltmp; const char *elanname; Debug_unit(&conn_unit, "Join_ok called"); dump_conn(conn); if (control_packet != NULL && proper_request() == 1) { /* dump_control(control_packet);*/ /* Do not accept control packets with lecid set to unknown value*/ if (control_packet->lecid != 0) { Debug_unit(&conn_unit,"Lecid set"); ltmp = leciddb_find(control_packet->lecid); if (!ltmp || memcmp(<mp->address, &control_packet->source_addr, sizeof(AtmAddr_t)) != 0) { send_join_response(conn->fd, control_packet, conn->lecid, (unsigned int)LE_STATUS_BAD_LECID); return 0; } } /* Is lan destination address present? */ if (control_packet->source.tag != htons(LANE_DEST_NP)) { rtmp = regdb_find_mac(control_packet->source); /* Do not accept lan multicast address */ if (is_multicast(&control_packet->source)) { Debug_unit(&conn_unit,"Destination lan address is multicast"); send_join_response(conn->fd, control_packet, conn->lecid, ((unsigned int)LE_STATUS_BAD_DEST)); return 0; } /* Duplicate registered Lan-destination, duplicate mac-address */ if (rtmp && memcmp(&rtmp->atm_address,&control_packet->source_addr, sizeof(AtmAddr_t)) != 0) { Debug_unit(&conn_unit,"Duplicate Destination lan, duplicate mac"); send_join_response(conn->fd, control_packet, conn->lecid, ((unsigned int)LE_STATUS_DUPLICATE_REG)); return 0; } } /* Duplicate atm-address */ if ((ltmp =leciddb_find_atm(control_packet->source_addr)) != NULL && ltmp->lecid != conn->lecid) { Debug_unit(&conn_unit,"Duplicate atmaddress"); send_join_response(conn->fd, control_packet, conn->lecid, ((unsigned int)LE_STATUS_DUPLICATE_ADDR)); return 0; } /* If we have elan-name, check it agaist the one in join request */ elanname = get_var_str(&conn_unit, "ELANNAME"); if (elanname) { Debug_unit(&conn_unit, "Compare %s with %s",elanname, control_packet->elan_name); if ((strlen(elanname) != control_packet->elan_name_size) || strncmp(elanname, control_packet->elan_name, control_packet->elan_name_size)) { /* Don't match */ Debug_unit(&conn_unit, "Invalid elan-name set"); send_join_response(conn->fd, control_packet, conn->lecid, ((unsigned int)LE_STATUS_NO_CONFIG)); return 0; } } Debug_unit(&conn_unit,"Control_packet OK."); /* Control_packet OK. */ if (leciddb_find(conn->lecid) == NULL) { leciddb_add(conn->lecid, control_packet->source_addr, conn->fd); } if (control_packet->source.tag != htons(LANE_DEST_NP) && !rtmp) { /* dump_addr(&control_packet->source); */ regdb_add(control_packet->source_addr, control_packet->source); } /* Send join response */ if ((conn->proxy == BL_TRUE || is_proxy() == BL_TRUE) && proxydb_find(conn->lecid) == NULL) { proxydb_add((const Conn_t *)conn, conn->fd); } timer_ack(&conn_unit, conn->timer); send_join_response(conn->fd, control_packet, conn->lecid, (unsigned short)LE_STATUS_SUCCESS); return 1; } return 0; } static int join_bad(Conn_t *conn) { Debug_unit(&conn_unit, "Join_bad called"); dump_conn(conn); if (proper_request()==0) { send_join_response(conn->sfd, control_packet, conn->lecid, (unsigned short)LE_STATUS_BAD_REQ); } return 1; } static int idle_bad(Conn_t *conn) { Debug_unit(&conn_unit, "Idle bad called"); dump_conn(conn); conn_remove(conn); return 1; } static int join_close(Conn_t *conn) { Lecdb_t *tmp; Debug_unit(&conn_unit, "Join_close called"); dump_conn(conn); Debug_unit(&conn_unit,"Trying to remove PROXY_DB entry"); if (proxydb_remove(conn) == 0) Debug_unit(&conn_unit,"Removal of PROXY_DB entry failed"); else Debug_unit(&conn_unit,"PROXY_DB entry removed"); tmp = leciddb_find(conn->lecid); if (tmp) { Debug_unit(&conn_unit, "Trying to remove REG_DB entry"); if (regdb_remove(tmp->address) == 0) Debug_unit(&conn_unit, "Removal of REG_DB entry failed"); else Debug_unit(&conn_unit, "REG_DB entry removed"); } /* if (tmp) { Debug_unit(&conn_unit,"Trying to close connection"); if (close(tmp->fd) < 0) Debug_unit(&conn_unit,"Failed"); else Debug_unit(&conn_unit,"Success"); }*/ Debug_unit(&conn_unit,"Trying to remove LECID-DB entry"); if (leciddb_remove(conn->lecid) == 0) Debug_unit(&conn_unit,"Removal of LECID-DB entry failed"); else Debug_unit(&conn_unit,"LECID-DB entry removed"); conn_remove(conn); Debug_unit(&conn_unit,"Conn removed"); return 1; } static int join_expire(Conn_t *conn) { Debug_unit(&conn_unit, "Join_expire called"); dump_conn(conn); conn_remove(conn); return 1; } static int register_req(Conn_t *conn) { Reg_t *tmp; Lecdb_t *ltmp; Debug_unit(&conn_unit, "Register_req called"); dump_conn(conn); assert(control_packet != NULL); /* If trying to register a multicast or broadcast address, reject */ if (is_multicast(&control_packet->source)) { send_register_response(conn->sfd, control_packet, LE_STATUS_BAD_DEST, 1); return 1; } /* Check lecid */ ltmp = leciddb_find(control_packet->lecid); if (!ltmp) { send_register_response(conn->sfd, control_packet, LE_STATUS_BAD_LECID, 1); return 1; } tmp = regdb_find_mac(control_packet->source); if (tmp == NULL) { /* Unregistered MAC, registering... */ dump_addr(&control_packet->source); dump_printf(EL_CONT,"\n"); regdb_add(control_packet->source_addr, control_packet->source); send_register_response(conn->sfd, control_packet, LE_STATUS_SUCCESS, 1); } else { if (memcmp(&tmp->atm_address,&control_packet->source_addr, sizeof(AtmAddr_t)) != 0) { Debug_unit(&conn_unit, "MAC Address is bound to another ATM address"); send_register_response(conn->sfd, control_packet, LE_STATUS_DUPLICATE_REG, 1); } else { Debug_unit(&conn_unit,"Duplicate registeration"); send_register_response(conn->sfd, control_packet, LE_STATUS_SUCCESS, 1); } } return 1; } static int unregister_req(Conn_t *conn) { Reg_t *tmp; Lecdb_t *ltmp; Debug_unit(&conn_unit, "Unregister_req called"); dump_conn(conn); assert(control_packet != NULL); /* Reject attempt to unregister multicast & broadcast address */ if (is_multicast(&control_packet->source)) { send_register_response(conn->sfd, control_packet, LE_STATUS_BAD_DEST, 0); return 1; } ltmp = leciddb_find(control_packet->lecid); if (!ltmp) { send_register_response(conn->sfd, control_packet, LE_STATUS_BAD_LECID, 0); return 1; } tmp = regdb_find_mac(control_packet->source); if (tmp && (memcmp(&tmp->atm_address, &control_packet->source_addr, sizeof(AtmAddr_t)) == 0)) { /* Removing registered MAC adress */ regdb_remove(tmp->atm_address); send_register_response(conn->sfd, control_packet, LE_STATUS_SUCCESS, 0); return 1; } else if (tmp) { /* MAC was registered by another client */ send_register_response(conn->sfd, control_packet, LE_STATUS_BAD_DEST, 0); return 1; } /* MAC was not registered earlier */ send_register_response(conn->sfd, control_packet, LE_STATUS_SUCCESS, 0); return 1; } static int arp_find(Conn_t *conn) { Reg_t *tmp; Lecdb_t *ltmp; Debug_unit(&conn_unit, "Arp_find called"); dump_conn(conn); Debug_unit(&conn_unit,"Arping for:"); dump_addr(&control_packet->target); dump_printf(EL_CONT,"\n"); /* If requested multicast /broadcast address, respond with BUS address */ if (is_multicast(&control_packet->target)) { tmp = mem_alloc(&conn_unit, sizeof(Reg_t)); memcpy(&tmp->atm_address, get_var_addr(&conn_unit, "S6"), sizeof(AtmAddr_t)); Debug_unit(&conn_unit,"Arp for multicast address"); send_arp_response(conn->sfd, control_packet, LE_STATUS_SUCCESS, tmp); return 1; } /* Check lecid */ ltmp = leciddb_find(control_packet->lecid); if (!ltmp) { send_arp_response(conn->sfd, control_packet, LE_STATUS_BAD_LECID, NULL); return 1; } tmp = regdb_find_mac(control_packet->target); if (tmp) { Debug_unit(&conn_unit,"Address in databases"); /* Send response */ send_arp_response(conn->sfd, control_packet, LE_STATUS_SUCCESS, tmp); return 1; } forward_arp_request(control_packet, proxylist); return 1; } static int arp_forward_response(Conn_t *conn) { int a; Conn_t *tmp; Debug_unit(&conn_unit,"Arp forward response called"); dump_conn(conn); /* We got response. Forward it to all */ for (tmp = connlist;tmp;tmp=tmp->next) { if (tmp->sfd) { a = send_control_frame(tmp->sfd, control_packet); if (a == 0) dump_error(&conn_unit, "Forward arp response write failed"); } } return 1; } static int forward_flush_response(Conn_t *conn) { int a; Debug_unit(&conn_unit, "Forward_flush_response called"); dump_conn(conn); for (conn = connlist; conn; conn=conn->next) { if (conn->sfd) { a = send_control_frame(conn->sfd, control_packet); if (a == 0) dump_error(&conn_unit, "Forward flush response failed"); } } return 1; } static int topology_request(Conn_t *conn) { int a; Debug_unit(&conn_unit, "Topology request called"); dump_conn(conn); for(conn=connlist;conn;conn=conn->next) { if (conn->sfd) { a = send_control_frame(conn->sfd, control_packet); if (a == 0) dump_error(&conn_unit, "Topology request send failed"); } } return 1; } linux-atm-2.5.1/src/lane/connect.h0000644000200100001440000000402607360675442015607 0ustar chasusers/* * Connection management * * $Id: connect.h,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #ifndef LANE_CONN_H #define LANE_CONN_H /* System includes needed for types */ /* Local includes needed for types */ #include "units.h" #include "lane.h" #include "timers.h" #include "load.h" #include "events.h" /* Type definitions */ typedef enum { CT_NONE, CT_MAIN, CT_PVC_CD, CT_PVC_DD, CT_SVC_CD, CT_SVC_DD, CT_BUS_CD } ConnType_t; typedef enum { CS_IDLE, CS_JOINING, CS_OPERATIONAL } ConnState_t; #define CS_MAX CS_OPERATIONAL /* State vector SV */ typedef struct _Conn_t { int fd; /* Where we receive data */ int sfd; /* Where we send data */ int active_fd; /* Where select() said thingies are coming. BAD BAD way */ ConnState_t state; LecId_t lecid; ConnType_t type; Bool_t proxy; Timer_t *timer; struct _Conn_t *next; } Conn_t; /* LECID -DB */ typedef struct _Lecidb_t { int fd; AtmAddr_t address; LecId_t lecid; struct _Lecidb_t *next; } Lecdb_t; /* PROXY-DB */ typedef struct _Proxy_t { LecId_t lecid; int fd; struct _Proxy_t *next; } Proxy_t; /* REG-DB */ typedef struct _Reg_t { LaneDestination_t mac_address; AtmAddr_t atm_address; struct _Reg_t *next; } Reg_t; /* Connection state machine */ typedef struct { EventType_t event; unsigned short opcode; const char *descript; int (*func)(Conn_t *conn); /* removed const, hessu@cs.tut.fi */ ConnState_t nextstate; } State_t; /* Global function prototypes */ void dump_conn(const Conn_t *connection); Conn_t *conn_add(ConnType_t type, int fd, LecId_t pvc_lecid); void conn_remove(const Conn_t *connection); ConnState_t call_state(EventType_t event, unsigned short opcode, Conn_t *conn); const char *dump_conn_state(ConnState_t state); const Conn_t* new_svc(const int fd); int delete_svc(const int fd, Conn_t *conn); void conn_set_active(void *data, int fd); /* Global data */ extern const Unit_t conn_unit; /* Default values for S2-S5 */ #define S2_default "unspecified" #define S3_default 1520 #define S4_default 6 #define S5_default 6 #endif linux-atm-2.5.1/src/lane/connect_bus.c0000644000200100001440000002345307360675442016460 0ustar chasusers/* * ATM connection wrapper * * $Id: connect_bus.c,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include #include #include #include #include #include /* Local includes */ #include "mem.h" #include "lane.h" #include "dump.h" #include "load.h" #include "connect.h" #include "events.h" #include "lane_atm.h" /* Type definitions */ /* Local function prototypes */ static void conn_init0(void); static void conn_init1(void); static void conn_dump(void); static void conn_release(void); static const char *dump_conn_type(ConnType_t type); static int data_handler(const Event_t *event, void *funcdata); static void conn_main(void); /* Had to remove const qualifiers since not every * function honored it. hessu@cs.tut.fi */ static int join(Conn_t *conn); static int idle_bad(Conn_t *conn); static int data_forward(Conn_t *conn); static int join_close(Conn_t *conn); /* Data */ #define BUFSIZE 20000 const Unit_t conn_unit = { "conn", &conn_init0, &conn_init1, &conn_dump, &conn_release }; static Conn_t *connlist; unsigned char *data_packet; unsigned int data_packet_size; static const char *rcsid = "$Id: connect_bus.c,v 1.2 2001/10/09 22:33:06 paulsch Exp $"; static State_t /* CS_IDLE */ is_1 = { CE_SVC_OPEN, 0, "Idle->Oper", join, CS_OPERATIONAL }, is_2 = { CE_SVC_OPEN, 0, "Idle->Idle", idle_bad, CS_IDLE }, *idle_state[] = { &is_1, &is_2, NULL }, /* CS_OPERATIONAL */ os_1 = { CE_DATA, 0, "Oper->Oper", data_forward, CS_OPERATIONAL }, /* os_2 = { CE_DATA, LE_FLUSH_REQUEST, "Active->Active", flush_request, CS_ACTIVE }, */ os_3 = { CE_SVC_CLOSE, 0, "Oper->Idle", join_close, CS_IDLE }, *operational_state[] = { &os_1, /*&as_2,*/ &os_3, NULL }, **transitions[CS_MAX + 1] = { idle_state, NULL, operational_state }; /* Functions */ /* Initialize local data */ static void conn_init0(void) { connlist = NULL; } /* Initialization for data that needs other units */ static void conn_init1(void) { set_var_str(&conn_unit, "version", rcsid); conn_main(); add_event_handler(CE_DATA, &data_handler, "data_handler", NULL); Debug_unit(&conn_unit, "Initialized."); } /* Dump status, local data etc. */ static void conn_dump(void) { const char *tmp; const AtmAddr_t *addr; Debug_unit(&conn_unit, "Dumping unit"); Debug_unit(&conn_unit, "Parameters:"); addr = get_var_addr(&conn_unit, "S1"); if (addr != NULL) { Debug_unit(&conn_unit, "S1:"); dump_atmaddr(addr); } else { Debug_unit(&conn_unit, "S1: not set"); } tmp = get_var_str(&conn_unit, "S2"); if (tmp != NULL) { Debug_unit(&conn_unit, "S2: %s", tmp); } else { Debug_unit(&conn_unit, "S2: not set", tmp); } Debug_unit(&conn_unit, "S3: %d", get_var_int(&conn_unit, "S3")); Debug_unit(&conn_unit, "S4: %d", get_var_int(&conn_unit, "S4")); Debug_unit(&conn_unit, "S5: %d", get_var_int(&conn_unit, "S5")); addr = get_var_addr(&conn_unit, "S6"); if (addr != NULL) { Debug_unit(&conn_unit, "S6:"); dump_atmaddr(addr); } else { Debug_unit(&conn_unit, "S6: not set"); } dump_conn(NULL); } /* Release allocated memory, close files etc. */ static void conn_release(void) { Conn_t *tmp; Debug_unit(&conn_unit, "Releasing unit"); for(tmp = connlist; tmp != NULL; tmp = tmp->next) { connlist = tmp->next; if (tmp->fd) close(tmp->fd); if (tmp->sfd) close(tmp->sfd); mem_free(&conn_unit, tmp); } } /* * Handle data arrival * data points to Conn_t */ static int data_handler(const Event_t *event, void *funcdata) { Conn_t *tmp, *newconn; int fd, nbytes; static char buffer[BUFSIZE]; struct sockaddr_atmsvc addr; assert(event->data != NULL); tmp = (Conn_t *)event->data; dump_conn(tmp); if (tmp->type == CT_MAIN) { nbytes = sizeof(addr); memset(&addr, 0,nbytes); fd = accept(tmp->fd, (struct sockaddr *)&addr, &nbytes); if (fd <0) { dump_error(&conn_unit, "accept"); if (errno == ENETRESET) { /* Switch reseted? */ Debug_unit(&conn_unit,"Restart. Sleeping 10 secs..."); sleep(10); event_put(&conn_unit, CE_RESTART, NULL); } else if (errno == EUNATCH) { /* Probably signalling daemon was abruptly killed */ Debug_unit(&conn_unit,"Exiting..."); event_put(&conn_unit, CE_EXIT, NULL); } return -1; } newconn = conn_add(CT_SVC_CD, fd, 0); newconn->state = call_state(CE_SVC_OPEN, 0, newconn); } else { nbytes = read(tmp->active_fd, buffer, BUFSIZE); if (nbytes < 0) { dump_error(&conn_unit, "read"); if (errno == EUNATCH) event_put(&conn_unit, CE_EXIT, NULL); if (errno == ENETRESET) { Debug_unit(&conn_unit, "Restart. Sleeping 10 secs..."); sleep(10); event_put(&conn_unit, CE_RESTART, NULL); } } else if (nbytes == 0) { /* EOF */ Debug_unit(&conn_unit, "EOF"); tmp->state = call_state(CE_SVC_CLOSE, 0, tmp); } else { buffer[nbytes] = '\0'; data_packet = (unsigned char *)buffer; data_packet_size=nbytes; tmp->state = call_state(CE_DATA, 0, tmp); } } mem_free(&conn_unit, event); return 1; } static const char * dump_conn_type(ConnType_t type) { switch(type) { case CT_NONE: return "None"; case CT_MAIN: return "Main listener"; case CT_PVC_CD: return "PVC Control Direct"; case CT_PVC_DD: return "PVC Data Direct"; case CT_SVC_CD: return "SVC Control Direct"; case CT_SVC_DD: return "SVC Data Direct"; default: return "Bad type"; } } void dump_conn(const Conn_t *connection) { Conn_t *tmp; for(tmp = connlist; tmp != NULL; tmp = tmp->next) { if (connection == NULL || tmp == connection) { Debug_unit(&conn_unit, "fd %d sfd %d state %s type %s", tmp->fd, tmp->sfd, dump_conn_state(tmp->state), dump_conn_type(tmp->type)); } } } Conn_t * conn_add(ConnType_t type, int fd, LecId_t dumb) { Conn_t *tmp; tmp = (Conn_t *)mem_alloc(&conn_unit, sizeof(Conn_t)); tmp->fd = fd; tmp->sfd = 0; tmp->state = CS_IDLE; tmp->type = type; tmp->next = connlist; connlist = tmp; event_add_fd(fd, tmp); return tmp; } void conn_remove(const Conn_t *connection) { Conn_t *tmp, *prev; assert(connection != NULL); prev = NULL; tmp = connlist; while(tmp) { if (tmp == connection) { if (prev != NULL) { prev->next = tmp->next; } else { connlist = tmp->next; } if (connection->fd) { close(connection->fd); event_remove_fd(connection->fd); } if (connection->sfd) { close(connection->sfd); event_remove_fd(connection->sfd); } mem_free(&conn_unit, tmp); return; } prev = tmp; tmp = tmp->next; } } void conn_set_active(void *data, int fd) { Conn_t *tmp = (Conn_t *)data; assert(tmp); tmp->active_fd = fd; } static void conn_main(void) { const AtmAddr_t *addr; int main_conn; addr = get_var_addr(&conn_unit, "S6"); if (addr == NULL) { dump_printf(EL_ERROR, "S6 (BUS Address) must be specified"); event_put(&conn_unit, CE_EXIT, NULL); } else { main_conn = atm_create_socket(MULTICAST_SEND_802_3, get_var_addr(&conn_unit, "S6")); if (main_conn >= 0) { (void)conn_add(CT_MAIN, main_conn, 0); } } } ConnState_t call_state(EventType_t event, unsigned short opcode, Conn_t *conn) { State_t **tmp; unsigned int i = 0; int ret; Debug_unit(&conn_unit, "Call state"); assert(conn != NULL); assert(conn->state <= CS_MAX); tmp = transitions[conn->state]; for(; tmp[i] != NULL; i++) { if (tmp[i]->event == event && tmp[i]->opcode == opcode) { Debug_unit(&conn_unit, "Trying func %s", tmp[i]->descript); ret = tmp[i]->func(conn); if (ret != 0){ Debug_unit(&conn_unit, "Success"); return tmp[i]->nextstate; } else { Debug_unit(&conn_unit, "Failed"); } } else { Debug_unit(&conn_unit, "Skipping func %s", tmp[i]->descript); } } return conn->state; } const char * dump_conn_state(ConnState_t state) { switch(state) { case CS_IDLE: return "Idle"; case CS_JOINING: return "Joining"; case CS_OPERATIONAL: return "Operational"; default: return "Bad state"; } } /* * State transition functions */ static int join(Conn_t *conn) { int rfd; Debug_unit(&conn_unit, "Join called"); dump_conn(conn); rfd = atm_connect_back(get_var_addr(&conn_unit,"S6"), conn, MULTICAST_FORWARD_802_3); if (rfd<0) { /* Calling back failed */ conn_remove(conn); return 0; } else { /* Success */ Debug_unit(&conn_unit, "Join successful"); conn->sfd = rfd; event_add_fd(rfd, conn); return 1; } } static int idle_bad(Conn_t *conn) { Debug_unit(&conn_unit,"Idle_bad called"); dump_conn(conn); conn_remove(conn); return 1; } static int data_forward(Conn_t *conn) { Conn_t *tmp; char packet_string[1024]; int rvalue; int i; Debug_unit(&conn_unit,"Data forward called"); dump_conn(conn); for(tmp = connlist;tmp!=NULL;tmp=tmp->next) { if (tmp->sfd >0 && tmp->type != CT_MAIN) { rvalue=write(tmp->sfd, data_packet, data_packet_size); if (rvalue<0) { dump_error(&conn_unit, "data_forward,write"); dump_conn(tmp); } else Debug_unit(&conn_unit,"Forwarding to %d-%d bytes",tmp->sfd, data_packet_size); } } Debug_unit(&conn_unit,"Sent packet :%ld bytes",data_packet_size); for (i=0;i%s<-",packet_string); else Debug_unit(&conn_unit,"Packet:->%s->",packet_string); Debug_unit(&conn_unit,"Returning from data forward"); return 1; } static int join_close(Conn_t *conn) { Debug_unit(&conn_unit,"Join_close called"); dump_conn(conn); conn_remove(conn); return 1; } linux-atm-2.5.1/src/lane/db.c0000644000200100001440000001261107360675442014535 0ustar chasusers/* * Database handling functions * * $Id: db.c,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include #include #include #include /* Local includes */ #include "mem.h" #include "lane.h" #include "dump.h" #include "load.h" #include "connect.h" #include "events.h" #include "db.h" Reg_t *reglist; Proxy_t *proxylist; Lecdb_t *leclist; /* Protos */ /* Adds entry to PROXY-DB */ void proxydb_add(const Conn_t *conn, int fd) { Proxy_t *tmp; assert(conn != NULL); Debug_unit(&conn_unit,"Proxydb_add"); tmp = (Proxy_t *) mem_alloc(&conn_unit, sizeof(Proxy_t)); tmp->lecid = conn->lecid; tmp->fd = fd; tmp->next = proxylist; proxylist = tmp; return; } /* Removes entry from PROXY-DB */ int proxydb_remove(const Conn_t *conn) { Proxy_t *tmp, *tmp2; Debug_unit(&conn_unit,"Proxydb_remove"); if (proxylist == NULL) { return 0; } tmp = proxylist; if (conn->lecid == tmp->lecid) { proxylist =tmp->next; mem_free(&conn_unit, tmp); return 1; } tmp2 = tmp; tmp = tmp->next; while(tmp) { if (conn->lecid == tmp->lecid) { tmp2->next = tmp->next; mem_free(&conn_unit, tmp); return 1; } tmp = tmp->next; } dump_error(&conn_unit,"Trying to remove unexisting entry from PROXY-DB"); return 0; } Proxy_t* proxydb_find(LecId_t to_find) { Proxy_t *tmp; tmp = proxylist; while(tmp) { if (to_find == tmp->lecid) { Debug_unit(&conn_unit, "Proxy_t found"); return tmp; } tmp = tmp->next; } Debug_unit(&conn_unit,"Proxy_t not found from database"); return NULL; } /* Adds entry to LECID-DB */ void leciddb_add(LecId_t lecid, AtmAddr_t address, const int fd) { Lecdb_t *tmp; Debug_unit(&conn_unit, "Leciddb_add called"); tmp = (Lecdb_t *) mem_alloc(&conn_unit, sizeof(Lecdb_t)); tmp->fd = fd; memcpy(&tmp->address, &address, sizeof(AtmAddr_t)); tmp->lecid = lecid; tmp->next = leclist; leclist = tmp; return; } int leciddb_remove(LecId_t to_remove) { Lecdb_t *tmp, *tmp2; Debug_unit(&conn_unit,"Leciddb_remove"); if (leclist == NULL) { return 0; } tmp = leclist; if (to_remove == tmp->lecid) { leclist =tmp->next; mem_free(&conn_unit, tmp); return 1; } tmp2 = tmp; tmp = tmp->next; while(tmp) { if (to_remove == tmp->lecid) { tmp2->next = tmp->next; mem_free(&conn_unit, tmp); return 1; } tmp = tmp->next; } dump_error(&conn_unit,"Trying to remove unexisting entry from LECID-DB"); return 0; } /* Searches LECID-DB for entry */ Lecdb_t *leciddb_find(LecId_t to_find) { Lecdb_t *tmp; tmp = leclist; while(tmp) { if (to_find == tmp->lecid) { Debug_unit(&conn_unit, "Lecdb_t found"); return tmp; } tmp = tmp->next; } Debug_unit(&conn_unit,"Lecdb_t not found from database"); return NULL; } Lecdb_t *leciddb_find_atm(AtmAddr_t to_find) { Lecdb_t *tmp; tmp = leclist; while (tmp) { if (memcmp(&to_find,&(tmp->address), sizeof(AtmAddr_t)) == 0) { Debug_unit(&conn_unit, "Lecdb_t found"); return tmp; } tmp= tmp->next; } Debug_unit(&conn_unit,"Lecid_t not found from database"); return NULL; } /* Adds entry to REG-DB */ void regdb_add(AtmAddr_t aaddr, LaneDestination_t maddr) { Reg_t *tmp; Debug_unit(&conn_unit,"Regdb_add"); tmp = (Reg_t *)mem_alloc(&conn_unit, sizeof(Reg_t)); memcpy(&tmp->mac_address, &maddr,sizeof(LaneDestination_t)); memcpy(&tmp->atm_address, &aaddr, sizeof(AtmAddr_t)); tmp->next = reglist; reglist = tmp; return; } /* Removes entry from REG-DB. Returns 0 if entry is not found. 1 otherwise. */ int regdb_remove(AtmAddr_t to_remove) { Reg_t *tmp, *tmp2; Debug_unit(&conn_unit,"Regdb_remove"); if (reglist == NULL) { return 0; } tmp = reglist; if (memcmp((char *)&to_remove, (char *)&tmp->atm_address, sizeof(AtmAddr_t)) == 0) { reglist =tmp->next; mem_free(&conn_unit, tmp); return 1; } tmp2 = tmp; tmp = tmp->next; while(tmp) { if (memcmp((char *)&to_remove, (char *)&tmp->atm_address, sizeof(AtmAddr_t)) == 0) { tmp2->next = tmp->next; mem_free(&conn_unit, tmp); return 1; } tmp = tmp->next; } dump_error(&conn_unit,"Trying to remove unexisting entry from REG-DB"); return 0; } /* Finds entry from REG_DB by comparing mac address */ Reg_t* regdb_find_mac(LaneDestination_t maddr) { Reg_t *tmp; tmp = reglist; while (tmp) { if((tmp->mac_address).tag == htons(LANE_DEST_MAC)) { if (memcmp((char *)&(tmp->mac_address).a_r.mac_address, (char *)&maddr.a_r.mac_address, 6) ==0) { Debug_unit(&conn_unit, "MAC found from database"); return tmp; } } else if ((tmp->mac_address).tag == htons(LANE_DEST_RD)) { if (memcmp((char *)&(tmp->mac_address.a_r.route), (char *)&maddr.a_r.route, 4 + sizeof(unsigned short)) == 0) { Debug_unit(&conn_unit, "MAC found from database"); return tmp; } else if (memcmp((char *)&(tmp->mac_address), (char *)&maddr, sizeof(LaneDestination_t)) == 0) { Debug_unit(&conn_unit, "MAC found from database"); return tmp; } } tmp = tmp->next; } Debug_unit(&conn_unit, "MAC address not found from database"); return NULL; } linux-atm-2.5.1/src/lane/db.h0000644000200100001440000000117707360675442014547 0ustar chasusers/* * Database handling functions * * $Id: db.h,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #include #include "lane.h" #include "connect.h" /* Protos */ void regdb_add(AtmAddr_t aaddr, LaneDestination_t maddr); int regdb_remove(AtmAddr_t to_remove); Reg_t *regdb_find_mac(LaneDestination_t maddr); void proxydb_add(const Conn_t *conn, int fd); int proxydb_remove(const Conn_t *conn); Proxy_t *proxydb_find(LecId_t to_find); Lecdb_t *leciddb_find(LecId_t to_find); Lecdb_t *leciddb_find_atm(AtmAddr_t to_find); void leciddb_add(LecId_t lecid, AtmAddr_t address, const int fd); int leciddb_remove(LecId_t to_remove); linux-atm-2.5.1/src/lane/dump.c0000644000200100001440000002674307654217707015132 0ustar chasusers/* * Debug packet dumper * * $Id: dump.c,v 1.2.2.1 2003/05/01 13:23:19 chas3 Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include #include #include /* Local includes */ #include "atmsap.h" #include "dump.h" #include "lane.h" #include "load.h" #include "units.h" /* Local function prototypes */ static void dump_init0(void); static void dump_init1(void); static void dump_dump(void); static void dump_release(void); /* Data */ #define BUFSIZE 256 static const char *rcsid = "$Id: dump.c,v 1.2.2.1 2003/05/01 13:23:19 chas3 Exp $"; const Unit_t dump_unit = { "dump", &dump_init0, &dump_init1, &dump_dump, &dump_release }; DumpType_t dump_type; static DumpType_t dump_open; static FILE *dump_filep; static const char *dump_filename = "/tmp/lane.log"; static const char *dump_console = "/dev/console"; /* Functions */ static const char* dump_opcode_text(unsigned short opcode); static const char* dump_status_text(unsigned short status); static const char* dump_maxframe(unsigned char size); static const char* dump_lantype(unsigned char lantype); static void dump_atmtext(const AtmAddr_t addr); /* Initialize local data */ static void dump_init0(void) { dump_filep = NULL; dump_open = dump_type; switch (dump_open) { case DT_NONE: case DT_CMN_ERR: break; case DT_STDERR: dump_filep = stderr; break; case DT_FILE: dump_filep = fopen(dump_filename, "a"); if (dump_filep == NULL) { dump_open = DT_STDERR; dump_filep = stderr; dump_printf(EL_WARN, "Cannot open log file %s", dump_filename); } break; case DT_SYSLOG: openlog("lane", LOG_PID | LOG_CONS, LOG_DAEMON); break; case DT_CONSOLE: dump_filep = fopen(dump_console, "w"); if (dump_filep == NULL) { dump_open = DT_STDERR; dump_filep = stderr; dump_printf(EL_WARN, "Cannot open console log"); } break; } dump_printf(EL_DEBUG, "Log opened"); } /* Initialization for data that needs other units */ static void dump_init1(void) { set_var_str(&dump_unit, "version", rcsid); Debug_unit(&dump_unit, "Initialized."); } /* Dump status, local data etc. */ static void dump_dump(void) { static const char *dumptypes [] = { "none", "standard error", "file", "syslog()", "cmn_err()", "/dev/console" }; Debug_unit(&dump_unit, "Dumping to %s, filename: %s", dumptypes[dump_open], dump_filename); } /* Release allocated memory, close files etc. */ static void dump_release(void) { int flush_ret; Debug_unit(&dump_unit, "Releasing unit"); dump_printf(EL_DEBUG, "Closing log file"); switch (dump_open) { case DT_NONE: case DT_CMN_ERR: break; case DT_STDERR: flush_ret = fflush(stderr); assert(flush_ret == 0); break; case DT_FILE: if (fclose(dump_filep) != 0) { dump_open = DT_STDERR; dump_filep = stderr; dump_printf(EL_WARN, "Cannot close log file %s", dump_filename); } break; case DT_SYSLOG: closelog(); break; case DT_CONSOLE: if (fclose(dump_filep) != 0) { dump_open = DT_STDERR; dump_filep = stderr; dump_printf(EL_WARN, "Cannot close console log"); } break; } dump_filep = NULL; dump_open = DT_NONE; } static const int el_to_log[] = { /* EL_CONT, EL_DEBUG, EL_NOTE, EL_WARN, EL_ERROR, EL_PANIC */ LOG_DEBUG, LOG_DEBUG, LOG_NOTICE, LOG_WARNING, LOG_ERR, LOG_ALERT }; static const char *el_prefix[] = { /* EL_CONT, EL_DEBUG, EL_NOTE, EL_WARN, EL_ERROR, EL_PANIC */ "", "DEBUG: ", "NOTE: ", "WARNING: ", "ERROR: ", "PANIC: " }; /* General printing function */ void dump_printf(ErrorLevel_t level, const char *const format, ...) { va_list args; int printf_ret, flush_ret; char buffer[BUFSIZE]; assert(level <= EL_PANIC); switch (dump_open) { case DT_CMN_ERR: case DT_NONE: return; case DT_CONSOLE: case DT_STDERR: case DT_FILE: va_start(args, format); printf_ret = vsnprintf(buffer, BUFSIZE, format, args); assert(printf_ret > 0); printf_ret = fprintf(dump_filep, "%s%s%s", el_prefix[level], buffer, level != EL_CONT? "\n" : ""); assert(printf_ret > 0); va_end(args); flush_ret = fflush(dump_filep); assert(flush_ret == 0); break; case DT_SYSLOG: va_start(args, format); printf_ret = vsnprintf(buffer, BUFSIZE, format, args); assert(printf_ret > 0); syslog(el_to_log[level], "%s", buffer); va_end(args); break; } } /* Unit-specific debugging, can be enabled with variables */ void Debug_unit(const Unit_t *unit, const char *const format, ...) { va_list args; char buffer[2048]; char buffer2[2048]; int sprintf_ret; #ifndef DEBUG if (get_var_bool(unit, "debug") == BL_TRUE) { #endif /* DEBUG */ sprintf_ret = sprintf(buffer, "%s: %s", unit->name, format); assert(sprintf_ret > 0); va_start(args, format); sprintf_ret = vsnprintf(buffer2, 2048, buffer, args); assert(sprintf_ret > 0); va_end(args); dump_printf(EL_DEBUG, "%s", buffer2); #ifndef DEBUG } #endif /* DEBUG */ } void dump_error(const Unit_t *unit, const char *msg) { Debug_unit(unit, "%s: %s", msg, strerror(errno)); } /* Dumping functions, LANE address */ void dump_addr(const LaneDestination_t *addr) { assert(addr != NULL); switch (ntohs(addr->tag)) { case LANE_DEST_NP: dump_printf(EL_CONT, "Not present"); break; case LANE_DEST_MAC: dump_printf(EL_CONT, "MAC addr %2.2x.%2.2x.%2.2x.%2.2x.%2.2x.%2.2x", addr->a_r.mac_address[0],addr->a_r.mac_address[1], addr->a_r.mac_address[2],addr->a_r.mac_address[3], addr->a_r.mac_address[4],addr->a_r.mac_address[5] ); break; case LANE_DEST_RD: dump_printf(EL_CONT, "Route Designator %4.4x", addr->a_r.route.designator); break; } } /* Dumping functions, ATM address */ void dump_atmaddr(const AtmAddr_t *addr) { int i; char buffer[ATM_ADDR_LEN*3+2]; assert(addr != 0); for (i = 0; iaddr[i]); } dump_printf(EL_DEBUG, "%s", buffer); } static void dump_atmtext(const AtmAddr_t addr) { int i; char buffer[ATM_ADDR_LEN*3+2]; for (i=0;i"; } } static const char* dump_opcode_text(unsigned short opcode) { switch (opcode) { case LE_CONFIGURE_REQUEST : return "LE_CONFIG_REQUEST"; case LE_CONFIGURE_RESPONSE : return "LE_CONFIG_RESPONSE"; case LE_JOIN_REQUEST : return "LE_JOIN_REQUEST"; case LE_JOIN_RESPONSE : return "LE_JOIN_RESPONSE"; case READY_QUERY : return "READY_QUERY"; case READY_IND : return "READY_INDICATION"; case LE_REGISTER_REQUEST : return "LE_REGISTER_REQUEST"; case LE_REGISTER_RESPONSE : return "LE_REGISTER_RESPONSE"; case LE_UNREGISTER_REQUEST : return "LE_UNREGISTER_REQUEST"; case LE_UNREGISTER_RESPONSE : return "LE_UNREGISTER_RESPONSE"; case LE_ARP_REQUEST : return "LE_ARP_REQUEST"; case LE_ARP_RESPONSE : return "LE_ARP_RESPONSE"; case LE_FLUSH_REQUEST : return "LE_FLUSH_REQUEST"; case LE_FLUSH_RESPONSE : return "LE_FLUSH_RESPONSE"; case LE_NARP_REQUEST : return "LE_NARP_REQUEST"; case LE_TOPOLOGY_REQUEST : return "LE_TOPOLOGY_REQUEST"; default : return ""; } } static const char* dump_lantype(unsigned char lantype) { switch (lantype) { case LE_LAN_TYPE_UNSPECIFIED: return "Unspecified"; case LE_LAN_TYPE_802_3: return "Ethernet/IEEE 802.3"; case LE_LAN_TYPE_802_5: return "IEEE 802.5"; default: return ""; } } static const char* dump_maxframe(unsigned char size) { switch (size) { case LE_MAX_FRAME_UNSPECIFIED: return "Unspecified"; case LE_MAX_FRAME_1516: return "1516"; case LE_MAX_FRAME_4544: return "4544"; case LE_MAX_FRAME_9234: return "9234"; case LE_MAX_FRAME_18190: return "18190"; default: return ""; } } void dump_control(const LaneControl_t *c) { dump_printf(EL_DEBUG, "\tMarker:\t0x%4.4hx\n\tProtocol:\t0x%2.2x\n\tVersion:\t0x%2.2x", ntohs(c->marker), c->protocol, c->version); dump_printf(EL_CONT, "\tOpcode:\t\t%s\n\tStatus:\t\t%s\n\tTransactionID:\t0x%8.8x\n\t" "LECID:\t\t0x%4.4hx\n\tFlags:\t\t0x%4.4hx\n", dump_opcode_text(ntohs(c->opcode)), dump_status_text(ntohs(c->status)), ntohl(c->transaction_id), ntohs(c->lecid), ntohs(c->flags)); switch(ntohs(c->opcode)) { case LE_CONFIGURE_REQUEST: case LE_CONFIGURE_RESPONSE: case LE_JOIN_REQUEST: case LE_JOIN_RESPONSE: dump_printf(EL_CONT,"\tSource LAN:\t"); dump_addr(&c->source); dump_printf(EL_CONT,"\n\tSource ATM:\t"); dump_atmtext(c->source_addr); dump_printf(EL_CONT,"\n\tLan type:\t%s\n",dump_lantype(c->lan_type)); dump_printf(EL_CONT,"\tMax frame:\t%s\n",dump_maxframe(c->max_frame)); dump_printf(EL_CONT,"\tELAN name size:\t%d\n",c->elan_name_size); if (c->elan_name_size>0) { dump_printf(EL_CONT,"\nELAN name:\t%s\n",c->elan_name); } break; case LE_ARP_REQUEST: case LE_ARP_RESPONSE: dump_printf(EL_CONT,"\tSource LAN:\t"); dump_addr(&c->source); dump_printf(EL_CONT,"\n\tTarget LAN:\t"); dump_addr(&c->target); dump_printf(EL_CONT,"\n\tSource ATM:\t"); dump_atmtext(c->source_addr); dump_printf(EL_CONT,"\n\tTarget ATM:\t"); dump_atmtext(c->target_addr); dump_printf(EL_CONT,"\n"); break; case LE_FLUSH_REQUEST: case LE_FLUSH_RESPONSE: dump_printf(EL_CONT,"\tSource ATM:\t"); dump_atmtext(c->source_addr); dump_printf(EL_CONT,"\n\tTarget ATM:\t"); dump_atmtext(c->target_addr); dump_printf(EL_CONT,"\n"); break; case LE_REGISTER_REQUEST: case LE_REGISTER_RESPONSE: case LE_UNREGISTER_REQUEST: case LE_UNREGISTER_RESPONSE: dump_printf(EL_CONT,"\tSource LAN:\t"); dump_addr(&c->source); dump_printf(EL_CONT,"\n\tSource ATM:\t"); dump_atmtext(c->source_addr); dump_printf(EL_CONT,"\n"); break; } } void disp_sockaddr(struct sockaddr_atmsvc *addr, struct atm_blli *blli) { int i; dump_printf(EL_DEBUG,"Socket_address"); dump_printf(EL_CONT, "Sas_family:%d\n\tAddress:",addr->sas_family); for(i=0;i<20;i++) { dump_printf(EL_CONT,"%2.2x ",addr->sas_addr.prv[i]); } dump_printf(EL_CONT,"\nBlli:\n\t"); dump_printf(EL_CONT,"l2_proto:%d\n\t",blli->l2_proto); dump_printf(EL_CONT,"l3_proto:%d\n\t\t",blli->l3_proto); dump_printf(EL_CONT,"ipi:%x\tsnap:",blli->l3.tr9577.ipi); for(i=0;i<5;i++) { dump_printf(EL_CONT,"%2.2x ",blli->l3.tr9577.snap[i]); } dump_printf(EL_CONT,"\n"); } linux-atm-2.5.1/src/lane/dump.h0000644000200100001440000000226607360675442015127 0ustar chasusers/* * Debug packet dumper * * $Id: dump.h,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #ifndef LANE_DUMP_H #define LANE_DUMP_H /* System includes needed for types */ #include /* Local includes needed for types */ #include "atmsap.h" #include "units.h" #include "lane.h" /* Type definitions */ /* Output destinations: no output, standard error, file, syslog() */ typedef enum { DT_NONE, DT_STDERR, DT_FILE, DT_SYSLOG, DT_CMN_ERR, DT_CONSOLE } DumpType_t; /* * Message type: continuation of another message, debug, notification only, * warning, error, panic (causes abort()) */ typedef enum { EL_CONT, EL_DEBUG, EL_NOTE, EL_WARN, EL_ERROR, EL_PANIC } ErrorLevel_t; /* Global function prototypes */ void dump_printf(ErrorLevel_t level, const char *const format, ...); void Debug_unit(const Unit_t *unit, const char *const format, ...); void dump_error(const Unit_t *unit, const char *msg); void dump_addr(const LaneDestination_t *addr); void dump_atmaddr(const AtmAddr_t *addr); void dump_control(const LaneControl_t *c); void disp_sockaddr(struct sockaddr_atmsvc *addr, struct atm_blli *blli); /* Global data */ extern const Unit_t dump_unit; extern DumpType_t dump_type; #endif linux-atm-2.5.1/src/lane/events.c0000644000200100001440000002124107360675442015453 0ustar chasusers/* * Event handler * * $Id: events.c,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include #include /* Local includes */ #include "events.h" #include "load.h" #include "dump.h" #include "mem.h" #include "timers.h" #include "connect.h" /* Type definitions */ typedef struct _EventList_t { const Event_t *event; struct _EventList_t *next; struct _EventList_t *prev; } EventList_t; typedef struct _HFList_t { const char *name; HandlerFunc_t h; void *funcdata; struct _HFList_t *next; } HFList_t; typedef struct _FDList_t { int fd; void *data; struct _FDList_t *next; } FDList_t; /* Local function prototypes */ static void events_init0(void); static void events_init1(void); static void events_dump(void); static void events_release(void); static void event_get_fds(fd_set *dest); /* Data */ static const char *rcsid="$Id: events.c,v 1.2 2001/10/09 22:33:06 paulsch Exp $"; const Unit_t events_unit = { "events", &events_init0, &events_init1, &events_dump, &events_release }; /*static mutex_t event_mutex;*/ static EventList_t *eventhead, *eventtail; static HFList_t *handlers[CE_MAX + 1]; static FDList_t *fdlist; /* Functions */ /* Initialize local data */ static void events_init0(void) { unsigned int i; eventhead = NULL; eventtail = NULL; for (i = 0; i <= CE_MAX; i++) { handlers[i] = NULL; } fdlist = NULL; } /* Initialization for data that needs other units */ static void events_init1(void) { set_var_str(&events_unit, "version", rcsid); Debug_unit(&events_unit, "Initialized."); } /* Dump status, local data etc. */ static void events_dump(void) { const EventList_t *tmp; const HFList_t *htmp; const FDList_t *ftmp; unsigned int i; for (tmp = eventhead; tmp != NULL; tmp = tmp->next) { assert(tmp->event != NULL); assert(tmp->event->unit != NULL); assert(tmp->event->unit->name != NULL); Debug_unit(&events_unit, "unit %s type %s data 0x%x", tmp->event->unit->name, dump_event_type(tmp->event->type), tmp->event->data); } for (i = 0; i <= CE_MAX; i++) { for (htmp = handlers[i]; htmp != NULL; htmp = htmp->next) { Debug_unit(&events_unit, "type %s func 0x%x name %s data 0x%x", dump_event_type(i), htmp->h, htmp->name, htmp->funcdata); } } for (ftmp = fdlist; ftmp != NULL; ftmp = ftmp->next) { Debug_unit(&events_unit, "polled fd %d", ftmp->fd); } } /* Release allocated memory, close files etc. */ static void events_release(void) { unsigned int i; HFList_t *htmp; FDList_t *ftmp; EventList_t *tmp; /* Lock list */ for (tmp = eventhead; tmp != NULL; ) { assert(eventhead->event != NULL); assert(eventhead->event->unit != NULL); assert(eventhead->event->unit->name != NULL); Debug_unit(&events_unit, "discarding unread event, unit %s type %s data 0x%x", eventhead->event->unit->name, dump_event_type(eventhead->event->type), eventhead->event->data); tmp = eventhead->next; mem_free(&events_unit, eventhead->event); mem_free(&events_unit, eventhead); eventhead = tmp; } eventtail = NULL; /* Unlock list */ for (i = 0; i <= CE_MAX; i++) { for (htmp = handlers[i]; htmp != NULL; htmp = htmp->next) { handlers[i] = htmp->next; mem_free(&events_unit, htmp); } } for (ftmp = fdlist; ftmp != NULL; ftmp = ftmp->next) { printf("Closing:%d\n",ftmp->fd); close(ftmp->fd); fdlist = ftmp->next; mem_free(&events_unit, ftmp); } } void add_event_handler(EventType_t type, HandlerFunc_t func, const char *name, void *funcdata) { HFList_t *tmp; tmp = (HFList_t *)mem_alloc(&events_unit, sizeof(HFList_t)); tmp->name = name; tmp->h = func; tmp->funcdata = funcdata; assert(type <= CE_MAX); tmp->next = handlers[type]; handlers[type] = tmp; } static const char *typetable[CE_MAX + 1] = { "New SVC", "SVC closed", "Data arrived", "Timer expired", "Dump", "Restart", "Termination" }; /* Return event type as string */ const char * dump_event_type(EventType_t type) { assert(type >= CE_SVC_CLOSE && type <= CE_MAX); return typetable[type]; } /* Get next event from queue */ const Event_t * event_get_next(void) { const Event_t *event = NULL; EventList_t *tmplist; const FDList_t *tmp; int poll_ret; Timer_t *soonest; fd_set to_select; struct timeval *rolex; while (eventtail == NULL && sig_hup == 0 && sig_usr1 == 0 && sig_alarm == 0 && sig_usr2 == 0) { /* No events waiting, sleep on select() or poll() */ if (fdlist != NULL) { soonest = timer_find_soonest(&events_unit); if (soonest != NULL) { rolex = (struct timeval *)mem_alloc(&events_unit, sizeof(struct timeval)); rolex->tv_sec = soonest->alarm_time - time(NULL); rolex->tv_usec = 0; Debug_unit(&events_unit, "Sleeping %d s...", rolex->tv_sec); } else { rolex = NULL; Debug_unit(&events_unit, "Sleeping forever..."); } event_get_fds(&to_select); poll_ret = select(FD_SETSIZE, &to_select, NULL, NULL, rolex); if (rolex) mem_free(&events_unit,rolex); Debug_unit(&events_unit, "Select: %d", poll_ret); switch (poll_ret) { case -1: /* Error occurred */ dump_error(&events_unit, "select"); break; case 0: /* Timeout */ timer_ack(&events_unit, soonest); event_put(&events_unit, CE_TIMER, (void*)soonest->data); break; default: /* Data arrival / SVC creation */ Debug_unit(&events_unit,"fdlist:%d",fdlist); for (tmp = fdlist; tmp != NULL; tmp = tmp->next) { dump_printf(EL_DEBUG,"FD:%d",tmp->fd); if (FD_ISSET(tmp->fd, &to_select)) { Debug_unit(&events_unit, "Event on fd %d", tmp->fd); conn_set_active(tmp->data, tmp->fd); event_put(&events_unit, CE_DATA, tmp->data); } } break; } } else { Debug_unit(&events_unit, "No fds, restarting after 10 s"); sleep(10); event_put(&events_unit, CE_RESTART, NULL); } } if (sig_hup != 0) { event_put(&events_unit, CE_RESTART, NULL); sig_hup = 0; } if (sig_usr1 != 0) { event_put(&events_unit, CE_DUMP, NULL); sig_usr1 = 0; } if (sig_usr2 != 0) { event_put(&events_unit, CE_EXIT, NULL); sig_usr2 = 0; } if (sig_alarm != 0) { event_put(&events_unit, CE_TIMER, NULL); sig_alarm = 0; } Debug_unit(&events_unit, "get event %s", dump_event_type(eventtail->event->type)); /* Lock list */ event = eventhead->event; if (eventhead->next != NULL) { eventhead->next->prev = NULL; } else { /* This was the last */ eventtail = NULL; } tmplist = eventhead; eventhead = eventhead->next; /* Unlock list */ mem_free(&events_unit, tmplist); return event; } /* Add event to queue */ void event_put(const Unit_t *unit, EventType_t type, void *data) { Event_t *event; EventList_t *tmplist; Debug_unit(&events_unit, "unit %s puts event %s", unit->name, dump_event_type(type)); event = (Event_t *)mem_alloc(&events_unit, sizeof(Event_t)); event->unit = unit; event->type = type; event->data = data; tmplist = (EventList_t *)mem_alloc(&events_unit, sizeof(EventList_t)); tmplist->event = event; tmplist->next = NULL; /* Lock list */ tmplist->prev = eventtail; if (eventtail != NULL) { eventtail->next = tmplist; } else { /* This is the first one */ eventhead = tmplist; } eventtail = tmplist; /* Unlock list */ } /* Call handlers until one returns nonzero */ int dispatch_handlers(const Event_t *event) { int handled = 0; const HFList_t *htmp; assert(event != NULL); for (htmp = handlers[event->type]; htmp != NULL; htmp = htmp->next) { Debug_unit(&events_unit, "trying handler %s", htmp->name); handled = (htmp->h(event, htmp->funcdata)); if (handled != 0) { Debug_unit(&events_unit, "success."); break; } else { Debug_unit(&events_unit, "failed."); } } return handled; } static void event_get_fds(fd_set *dest) { FDList_t *tmp; FD_ZERO(dest); for(tmp = fdlist; tmp != NULL; tmp = tmp->next) FD_SET(tmp->fd, dest); } void event_add_fd(int fd, void *data) { FDList_t *tmp; tmp = mem_alloc(&events_unit, sizeof(FDList_t)); tmp->fd = fd; tmp->data = data; tmp->next = fdlist; fdlist = tmp; } void event_remove_fd(int fd) { FDList_t *tmp, *prev = NULL; for (tmp = fdlist; tmp != NULL; prev = tmp, tmp = tmp->next) { if (tmp->fd == fd) { break; } } if (tmp == NULL) { Debug_unit(&events_unit, "Could not find fd %d for removal", fd); return; } else { if (prev != NULL) { prev->next = tmp->next; } else { fdlist = tmp->next; } mem_free(&events_unit, tmp); } } linux-atm-2.5.1/src/lane/events.h0000644000200100001440000000203607360675442015461 0ustar chasusers/* * Event handler * * $Id: events.h,v 1.2 2001/10/09 22:33:06 paulsch Exp $ * */ #ifndef EVENTS_H #define EVENTS_H /* System includes needed for types */ /* Local includes needed for types */ #include "units.h" /* Type definitions */ typedef enum { CE_SVC_OPEN, CE_SVC_CLOSE, CE_DATA, CE_TIMER, CE_DUMP, CE_RESTART, CE_EXIT } EventType_t; #define CE_MAX CE_EXIT typedef struct { const Unit_t *unit; EventType_t type; void *data; } Event_t; /* Event handlers should return nonzero if they swallowed the event */ typedef int (* HandlerFunc_t)(const Event_t *event, void *funcdata); /* Global function prototypes */ void add_event_handler(EventType_t type, HandlerFunc_t func, const char *name, void *funcdata); const Event_t *event_get_next(void); void event_put(const Unit_t *unit, EventType_t type, void *data); const char *dump_event_type(EventType_t type); int dispatch_handlers(const Event_t *event); void event_add_fd(int fd, void *data); void event_remove_fd(int fd); /* Global data */ extern const Unit_t events_unit; #endif linux-atm-2.5.1/src/lane/lane.c0000644000200100001440000001174707360675443015101 0ustar chasusers/* * Lan Emulation Server * * $Id: lane.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include /* Local includes */ #include "units.h" #include "load.h" #include "dump.h" #include "mem.h" #include "connect.h" #include "events.h" #include "timers.h" /* Type definitions */ /* Local function prototypes */ static void main_init1(void); static void main_release(void); static void parse_args(int argc, char **argv); static void usage(void); static int dump_handler(const Event_t *event, void *funcdata); static int exit_handler(const Event_t *event, void *funcdata); /* Data */ static const char *rcsid = "$Id: lane.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $"; const Unit_t main_unit = { "main", NULL, main_init1, NULL, main_release }; static const char *progname; char *var_file = NULL; /* Functions */ /* Initialization for data that needs other units */ static void main_init1(void) { set_var_str(&main_unit, "version", rcsid); add_event_handler(CE_DUMP, &dump_handler, "dump_handler", NULL); add_event_handler(CE_EXIT, &exit_handler, "exit_handler", NULL); Debug_unit(&main_unit, "Initialized."); } static void main_release(void) { if (var_file) { mem_free(&main_unit, var_file); var_file = NULL; } } /* Main loop */ int main(int argc, char **argv) { short do_restart = 0; const Event_t *event; const Unit_t **units; /* Debugging facility */ dump_type = DT_STDERR; while (1) { /* Call phase 0 initializers */ Debug_unit(&main_unit, "Calling phase 0 initializers"); FOR_ALL_UNITS(units) { if ((*units)->init0 != NULL) { Debug_unit(&main_unit, "Initializing %s", (*units)->name); (*((*units)->init0))(); } } /* Get flags from command line */ parse_args(argc, argv); /* Call phase 1 initializers */ Debug_unit(&main_unit, "Calling phase 1 initializers"); FOR_ALL_UNITS(units) { if ((*units)->init1 != NULL) { Debug_unit(&main_unit, "Initializing %s", (*units)->name); (*((*units)->init1))(); } } do_restart = 0; while (!do_restart) { event = event_get_next(); if (dispatch_handlers(event) == 1) { continue; } switch (event->type) { case CE_RESTART: do_restart = 1; break; case CE_EXIT: break; case CE_DUMP: break; case CE_SVC_OPEN: break; case CE_SVC_CLOSE: break; case CE_DATA: break; case CE_TIMER: break; } mem_free(&main_unit, event); } /* Restart */ Debug_unit(&main_unit, "Releasing %d units", num_units); FOR_ALL_UNITS_REV(units) { if ((*units)->release != NULL) { Debug_unit(&main_unit, "Releasing %s", (*units)->name); (*((*units)->release))(); } } } return 0; } /* Process CE_DUMP events */ static int dump_handler(const Event_t *event, void *funcdata) { const Unit_t **units; mem_free(&main_unit, event); FOR_ALL_UNITS(units) { if ((*units)->dump != NULL) { Debug_unit(&main_unit, "Dumping %s", (*units)->name); (*((*units)->dump))(); } } return 1; } /* Process CE_EXIT events */ static int exit_handler(const Event_t *event, void *funcdata) { const Unit_t **units; mem_free(&main_unit, event); Debug_unit(&main_unit, "Releasing %d units", num_units); FOR_ALL_UNITS_REV(units) { if ((*units)->release != NULL) { Debug_unit(&main_unit, "Releasing %s", (*units)->name); (*((*units)->release))(); } } exit(0); } static void parse_args(int argc, char **argv) { int i = 0; const Unit_t *unit, **units; progname = argv[0]; while(i!=-1) { i = getopt(argc, argv, "d:m:f:"); switch(i) { case 'd': if (strcmp(optarg, "all") == 0) { FOR_ALL_UNITS(units) { set_var_bool(*units, "debug", BL_TRUE); } } else { unit = find_unit(optarg); if (unit) { set_var_bool(unit, "debug", BL_TRUE); } else { dump_printf(EL_ERROR, "Unknown module name: %s", optarg); usage(); } } break; case 'm': if (strcmp(optarg, "all") == 0) { FOR_ALL_UNITS(units) { set_var_bool(*units, "memdebug", BL_TRUE); } } else { unit = find_unit(optarg); if (unit) { set_var_bool(unit, "memdebug", BL_TRUE); } else { dump_printf(EL_ERROR, "Unknown module name: %s", optarg); usage(); } } break; case 'f': var_file = mem_alloc(&main_unit, strlen(optarg)+1); strcpy(var_file, optarg); dump_printf(EL_NOTE, "Configuration file: %s\n", var_file); break; case -1: break; default: usage(); return; } } if (argc != optind) usage(); if (!var_file) { var_file = mem_alloc(&main_unit, strlen(DEFAULT_CFG_FILE)+1); strcpy(var_file, DEFAULT_CFG_FILE); dump_printf(EL_NOTE, "Configuration file: %s\n", var_file); } } static void usage(void) { dump_printf(EL_ERROR, "Usage:"); dump_printf(EL_ERROR, "%s [-d module]... [-m module]...[-f conf_file]", progname); exit(1); } linux-atm-2.5.1/src/lane/lane.h0000644000200100001440000000722507360675443015102 0ustar chasusers/* * Global definitions header file * * $Id: lane.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef LANE_H #define LANE_H /* System includes needed for types */ #include /* Local includes needed for types */ #include "units.h" /* Type definitions */ typedef struct { unsigned le_header : 16; unsigned char destaddr[6]; unsigned char srcaddr[6]; unsigned type_len : 16; } LaneData_t; typedef struct { long port; long vpi; long vci; } LaneVcc_t; #define LE_HEADER_MAX 0xefff typedef struct { unsigned short tag; union { unsigned char mac_address[6]; struct route_designator { unsigned char reserved[4]; unsigned short designator; } route; } a_r; } LaneDestination_t; #define LANE_DEST_NP 0x0000 #define LANE_DEST_MAC 0x0001 #define LANE_DEST_RD 0x0002 typedef unsigned short LecId_t; #define LECID_MAX 0xfeff typedef struct { unsigned char addr[20]; } AtmAddr_t; #define ATM_ADDR_LEN (sizeof(AtmAddr_t)) typedef struct lanedest_l { LaneDestination_t *addr; struct lanedest_l *next; } LaneDestList_t; typedef struct { LaneVcc_t *pvc; AtmAddr_t *address; LecId_t lecid; LaneDestList_t *destinations; } InitPvc_t; typedef struct { unsigned marker : 16; unsigned protocol : 8; unsigned version : 8; unsigned opcode : 16; unsigned status : 16; unsigned transaction_id : 32; LecId_t lecid; unsigned flags : 16; LaneDestination_t source; LaneDestination_t target; AtmAddr_t source_addr; unsigned lan_type : 8; unsigned max_frame : 8; unsigned reserved : 8; unsigned elan_name_size : 8; AtmAddr_t target_addr; char elan_name[32]; } LaneControl_t; typedef struct { unsigned marker : 16; unsigned protocol : 8; unsigned version : 8; unsigned opcode : 16; } LaneVccReady_t; /* Global function prototypes */ /* Global data */ #define LE_MARKER 0xff00 #define LE_PROTOCOL 0x01 #define LE_VERSION 0x01 /* Opcodes */ #define LE_CONFIGURE_REQUEST 0x0001 #define LE_CONFIGURE_RESPONSE 0x0101 #define LE_JOIN_REQUEST 0x0002 #define LE_JOIN_RESPONSE 0x0102 #define READY_QUERY 0x0003 #define READY_IND 0x0103 #define LE_REGISTER_REQUEST 0x0004 #define LE_REGISTER_RESPONSE 0x0104 #define LE_UNREGISTER_REQUEST 0x0005 #define LE_UNREGISTER_RESPONSE 0x0105 #define LE_ARP_REQUEST 0x0006 #define LE_ARP_RESPONSE 0x0106 #define LE_FLUSH_REQUEST 0x0007 #define LE_FLUSH_RESPONSE 0x0107 #define LE_NARP_REQUEST 0x0008 #define LE_TOPOLOGY_REQUEST 0x0009 /* Status codes */ #define LE_STATUS_SUCCESS 0 /* Success */ #define LE_STATUS_BAD_VERSION 1 /* Version not supported */ #define LE_STATUS_BAD_REQ 2 /* Invalid request parameters */ #define LE_STATUS_DUPLICATE_REG 4 /* Duplicate LAN registration */ #define LE_STATUS_DUPLICATE_ADDR 5 /* Duplicate ATM address */ #define LE_STATUS_NO_RESOURCES 6 /* Insufficient resources */ #define LE_STATUS_NO_ACCESS 7 /* Access denied */ #define LE_STATUS_BAD_LECID 8 /* Invalid requestor-id */ #define LE_STATUS_BAD_DEST 9 /* Invalid LAN destination */ #define LE_STATUS_BAD_ADDR 10 /* Invalid ATM address */ #define LE_STATUS_NO_CONFIG 20 /* No configuration */ #define LE_STATUS_CONFIG_ERROR 21 /* LE_CONFIGURE error */ #define LE_STATUS_NO_INFO 22 /* Insufficient Information */ #define LE_STATUS_MAX 22 /* Flags */ #define LE_FLAG_REMOTE 0x0001 #define LE_FLAG_PROXY 0x0080 #define LE_FLAG_TOPOLOGY_CHANGE 0x0100 /* Lan types */ #define LE_LAN_TYPE_UNSPECIFIED 0x00 #define LE_LAN_TYPE_802_3 0x01 #define LE_LAN_TYPE_802_5 0x02 /* Max frame sizes, mtus */ #define LE_MAX_FRAME_UNSPECIFIED 0x00 #define LE_MAX_FRAME_1516 0x01 #define LE_MAX_FRAME_4544 0x02 #define LE_MAX_FRAME_9234 0x03 #define LE_MAX_FRAME_18190 0x04 extern const Unit_t main_unit; #endif linux-atm-2.5.1/src/lane/lane_atm.c0000644000200100001440000001064307360675443015734 0ustar chasusers /* * ATM connection functions * * $Id: lane_atm.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include /* Local includes */ #include "lane_atm.h" #include "atmsap.h" #include "load.h" #include "dump.h" #include "connect.h" #include "mem.h" /* Local protos */ static void atm_init0(void); static void atm_init1(void); static void atm_dump(void); /* Static variables */ static const char *rcsid="$Id: lane_atm.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $"; /* Data */ #define QLEN 5 const Unit_t atm_unit = { "atm", &atm_init0, &atm_init1, &atm_dump, NULL }; static void atm_dump(void) { ; } static void atm_init0(void) { ; } static void atm_init1(void) { set_var_str(&atm_unit, "version", rcsid); Debug_unit(&atm_unit,"Initialized"); } int atm_create_socket(unsigned char codepoint, const AtmAddr_t *our_addr) { struct sockaddr_atmsvc server; struct atm_sap atmsap; struct atm_blli blli; struct atm_qos qos; int fd, ret; int len = sizeof(server); fd = socket(PF_ATMSVC, SOCK_DGRAM, 0); if (fd <0) { dump_error(&atm_unit,"socket"); return -1; } memset(&server, 0, len); memset(&blli, 0, sizeof(blli)); memset(&qos, 0, sizeof(qos)); server.sas_family = AF_ATMSVC; memcpy(server.sas_addr.prv, our_addr, ATM_ESA_LEN); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = 1516; qos.rxtp.traffic_class = ATM_UBR; qos.rxtp.max_sdu = 1516; blli.l3_proto = ATM_L3_TR9577; blli.l3.tr9577.ipi = NLPID_IEEE802_1_SNAP; blli.l3.tr9577.snap[0] = 0x00; blli.l3.tr9577.snap[1] = 0xa0; blli.l3.tr9577.snap[2] = 0x3e; blli.l3.tr9577.snap[3] = 0x00; blli.l3.tr9577.snap[4] = codepoint; if (setsockopt(fd, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) { dump_error(&atm_unit, "setsockopt(fd, SOL_ATM, SO_ATMQOS,...)"); close(fd); return -1; } disp_sockaddr(&server, &blli); memset(&atmsap, 0, sizeof(struct atm_sap)); atmsap.blli[0] = blli; if (setsockopt(fd,SOL_ATM,SO_ATMSAP,&atmsap,sizeof(atmsap)) < 0) { dump_error(&atm_unit, "setsockop(SO_ATMSAP)"); (void) close(fd); return -1; } ret = bind(fd, (struct sockaddr *)&server, len); if (ret <0) { dump_error(&atm_unit, "bind"); close(fd); return -1; } ret = listen(fd, QLEN); if (ret <0) { dump_error(&atm_unit, "listen"); close(fd); return -1; } return fd; } int atm_connect_back(const AtmAddr_t *our_addr, const Conn_t *conn, unsigned char codepoint) { struct sockaddr_atmsvc address; struct atm_sap atmsap; struct atm_blli blli; struct atm_qos qos; int fd, ret; int len = sizeof(address); fd = socket(PF_ATMSVC, SOCK_DGRAM, 0); if (fd <0) { dump_error(&atm_unit,"socket"); return -1; } memset(&qos, 0, sizeof(qos)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = 1516; qos.rxtp.traffic_class = ATM_UBR; qos.rxtp.max_sdu = 1516; if (setsockopt(fd, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) { dump_error(&atm_unit, "setsockopt(fd, SOL_ATM, SO_ATMQOS,...)"); close(fd); return -1; } memset(&address, 0, len); address.sas_family = AF_ATMSVC; memcpy(address.sas_addr.prv, our_addr, sizeof(AtmAddr_t)); disp_sockaddr(&address, &blli); ret = bind(fd, (struct sockaddr *)&address, len); if (ret <0) { dump_error(&atm_unit, "bind"); close(fd); return -1; } memset(&address, 0, len); ret = getpeername(conn->fd, (struct sockaddr*)&address, &len); if (ret < 0) { dump_error(&atm_unit, "getpeername"); close(fd); return -1; } memset(&blli, 0, sizeof(blli)); blli.l3_proto = ATM_L3_TR9577; blli.l3.tr9577.ipi = NLPID_IEEE802_1_SNAP; blli.l3.tr9577.snap[0] = 0x00; blli.l3.tr9577.snap[1] = 0xa0; blli.l3.tr9577.snap[2] = 0x3e; blli.l3.tr9577.snap[3] = 0x00; blli.l3.tr9577.snap[4] = codepoint; disp_sockaddr(&address, &blli); memset(&atmsap, 0, sizeof(struct atm_sap)); atmsap.blli[0] = blli; if (setsockopt(fd,SOL_ATM,SO_ATMSAP,&atmsap,sizeof(atmsap)) < 0) { dump_error(&atm_unit, "setsockop(SO_ATMSAP)"); (void) close(fd); return -1; } ret = connect(fd, (struct sockaddr*)&address,sizeof(struct sockaddr_atmsvc)); if (ret < 0) { dump_error(&atm_unit, "connect"); close(fd); return -1; } return fd; } linux-atm-2.5.1/src/lane/lane_atm.h0000644000200100001440000000163407360675443015741 0ustar chasusers/* * ATM connection * * $Id: lane_atm.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef ATM_H #define ATM_H /* System includes needed for types */ #include /* Local includes needed for types */ #include "units.h" #include "lane.h" #include "connect.h" /* Type definitions */ /* Codepoints */ #define CONFIGURATION_DIRECT 0x01 #define CONTROL_DIRECT 0x01 #define CONTROL_DISTRIBUTE 0x01 #define DATA_DIRECT_802_3 0x02 #define DATA_DIRECT_802_5 0x03 #define MULTICAST_SEND_802_3 0x04 #define MULTICAST_FORWARD_802_3 0x04 #define MULTICAST_SEND_802_5 0x05 #define MULTICAST_FORWARD_802_5 0x05 /* Global function prototypes */ int atm_create_socket(unsigned char codepoint, const AtmAddr_t *our_addr); int atm_connect_back(const AtmAddr_t *our_addr, const Conn_t *conn, unsigned char codepoint); /* Global data */ extern const Unit_t atm_unit; #endif linux-atm-2.5.1/src/lane/ldb.c0000644000200100001440000002015007360675443014707 0ustar chasusers/* * * Configuration DB * * $Id: ldb.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include /* Local includes */ #include "lecs.h" #include "ldb.h" #include "mem_lecs.h" /* Local protos */ static void dump_elan(Elan_t *elan); static int valid_char(char test); static const char* get_type_string(char lan_type); static const char* get_max_frame_size_string(char max_frame); static const char* get_atm_addr_string(const unsigned char *addr); static void dump_elan(Elan_t *elan); static int match_addresses(Elan_t *elan, unsigned char *addr); /* Local data */ static unsigned char *lecs_address =NULL; static Elan_t *elan_arr[32]; static Elan_t *default_elan = NULL; static int no_elans=0; static char tmpbuffer[256]; #define MIN(a,b) ((aelan_name_size = MIN(32, strlen(name)); strncpy(elan_arr[no_elans]->elan_name, name, elan_arr[no_elans]->elan_name_size); /* Default values */ elan_arr[no_elans]->type = LE_LAN_TYPE_UNSPECIFIED; elan_arr[no_elans]->max_frame = LE_MAX_FRAME_UNSPECIFIED; return elan_arr[no_elans++]; } int add_les(Elan_t *elan, const char *addr) { struct sockaddr_atmsvc tmp; assert(elan); if (elan->les_addr[18] || elan->les_addr[17] || elan->les_addr[16] || elan->les_addr[15] || elan->les_addr[14] || elan->les_addr[13] || elan->les_addr[12]) { printf("LES address already set for this ELAN!\n"); return 0; } if (text2atm(addr,(struct sockaddr *)&tmp,sizeof(tmp),T2A_SVC|T2A_NAME)<0) { return -1; } memcpy(elan->les_addr, tmp.sas_addr.prv, ATM_ESA_LEN); return 0; } static int valid_char(char test) { return ((test >= '0' && test <= '9') || (test >= 'a' || test <= 'f') || (test >= 'A' && test <= 'F') || test == 'x' || test == 'X'); } int add_atm(Elan_t *elan, char *addr) { char *tmp; char *ch; int pos=0; ch = addr; assert(elan && addr); tmp = (char*)mem_alloc(COMP_NAME, ATM_ESA_LEN*2); if (!tmp) return -1; memset(tmp,0,ATM_ESA_LEN*2); while ((*ch)!='\0' && (*(ch+1))!='\0') { if (!valid_char(*ch)) { mem_free(COMP_NAME, tmp); return -1; } if (*(ch+1) == '.' || *(ch+1) == ':' || *(ch+1) == '-') { tmp[pos++] = '0'; tmp[pos++] = *ch; ch+=2; } else if (valid_char(*(ch+1))) { tmp[pos++] = *ch; tmp[pos++] = *(ch+1); ch+=2; } else { mem_free(COMP_NAME, tmp); return -1; } if (*ch == '.' || *ch == '-' || *ch == ':') ch++; } if ((*ch) != '\0' && *(ch+1) == '\0') { tmp[pos++] = '0'; tmp[pos++] = *ch; } if (pos<40) { mem_free(COMP_NAME, tmp); return -1; } elan->addresses[elan->no_addresses++] = tmp; return 0; } void set_default(Elan_t *elan) { if (default_elan) { printf("Warning! Default ELAN already set!\n"); return; } default_elan = elan; } static const char* get_type_string(char lan_type) { switch (lan_type) { case LE_LAN_TYPE_UNSPECIFIED: return ""; case LE_LAN_TYPE_802_3: return "802.3"; case LE_LAN_TYPE_802_5: return "802.5"; default: return "UNKNOWN TYPE"; } } static const char* get_max_frame_size_string(char max_frame) { switch (max_frame) { case LE_MAX_FRAME_UNSPECIFIED: return ""; case LE_MAX_FRAME_1516: return "1516"; case LE_MAX_FRAME_4544: return "4544"; case LE_MAX_FRAME_9234: return "9234"; case LE_MAX_FRAME_18190: return "18190"; default: return "UNKNOWN FRAME SIZE"; } } static const char* get_atm_addr_string(const unsigned char *addr) { int i; for(i=0;ielan_name, elan->elan_name_size); fflush(stdout); if (elan == default_elan) { printf("\tDEFAULT ELAN\n"); fflush(stdout); } printf("\tMax frame size : %s\n", get_max_frame_size_string(elan->max_frame)); fflush(stdout); printf("\tELAN type : %s\n", get_type_string(elan->type)); fflush(stdout); printf("\tLES address : %s\n", get_atm_addr_string(elan->les_addr)); fflush(stdout); for(i=0;ino_addresses;i++) printf("\t\t%s\n", elan->addresses[i]); printf("\t------------------------\n"); } void dump_db(Elan_t *elan) { int i; if (elan) { dump_elan(elan); return; } printf("Dumping whole ELAN db\n"); if (lecs_address) printf("LECS address: %s\n", get_atm_addr_string(lecs_address)); else printf("LECS address not set\n"); for(i=0;ino_addresses;j++) mem_free(COMP_NAME, tmp->addresses[j]); mem_free(COMP_NAME,tmp); } no_elans=0; default_elan=NULL; } static int match_addresses(Elan_t *elan, unsigned char *addr) { int i,j,match=0; unsigned char tmp; for(i=0;ino_addresses && !match;i++) { match=1; for(j=0;jaddresses[i][j*2] == 'x' || elan->addresses[i][j*2] == 'X') { tmp = addr[j]&0xf0; } else { if (elan->addresses[i][j*2] >= '0' && elan->addresses[i][j*2] <= '9') { tmp = (elan->addresses[i][j*2]-'0')<<4; } else { tmp = (tolower(elan->addresses[i][j*2])-'a'+10)<<4; } } if (elan->addresses[i][j*2+1] == 'x' || elan->addresses[i][j*2+1] == 'X') { tmp |= addr[j]&0xf; } else { if (elan->addresses[i][j*2+1] >= '0' && elan->addresses[i][j*2+1] <= '9') { tmp |= 0xf&(elan->addresses[i][j*2+1]-'0'); } else { tmp |= 0xf&(tolower(elan->addresses[i][j*2+1])-'a'+10); } } if (addr[j] != tmp) match=0; } } return match; } /* * Rules in finding the LES address: * 1. If elan_name matches exactly && * there is an entry matching this ATM address for this ELAN. * If elan_name matches, but ATM address is not found, reject. * 2. Search for first ELAN which matches in type, max_frame and * ATM address. * 3. Return default elan * 4. No match, reject. */ Elan_t* find_elan(unsigned char *lec_addr, const char type, const char max_frame, const char *elan_name, const short elan_name_size, unsigned short *reason) { int pos; *reason = LE_STATUS_SUCCESS; for(pos=0;poselan_name_size && !memcmp(elan_name, elan_arr[pos]->elan_name, elan_name_size)) { if (match_addresses(elan_arr[pos], lec_addr)) { return elan_arr[pos]; } else { *reason = LE_STATUS_NO_ACCESS; return NULL; } } } for(pos=0;posmax_frame == LE_MAX_FRAME_UNSPECIFIED || max_frame == elan_arr[pos]->max_frame) && (type == LE_LAN_TYPE_UNSPECIFIED || elan_arr[pos]->type == LE_LAN_TYPE_UNSPECIFIED || type == elan_arr[pos]->type)) { if (match_addresses(elan_arr[pos], lec_addr)) { return elan_arr[pos]; } } } if (default_elan) return default_elan; *reason = LE_STATUS_NO_CONFIG; return NULL; } linux-atm-2.5.1/src/lane/ldb.h0000644000200100001440000000151507360675443014720 0ustar chasusers/* * * Configuration DB * * $Id: ldb.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef LDB_H #define LDB_H typedef struct { char elan_name[32]; short elan_name_size; int no_addresses; char *addresses[256]; unsigned char les_addr[20]; char type; /* Unspecified, 802.3, 802.5 */ char max_frame; /* 1516, 4544, 9234, 18190 */ } Elan_t; /* Protos */ Elan_t *new_elan(const char *name); int add_les(Elan_t *elan, const char *addr); int add_atm(Elan_t *elan, char *addr); void set_default(Elan_t *elan); void set_lecs_addr(const char *addr); const unsigned char *get_lecs_addr(void); Elan_t *find_elan(unsigned char *lec_addr, const char type, const char max_frame, const char *elan_name, const short elan_name_size, unsigned short *reason); void dump_db(Elan_t *elan); void reset_db(void); #endif /* LDB_H */ linux-atm-2.5.1/src/lane/lecs.80000644000200100001440000000606107360675443015026 0ustar chasusers.TH LES 8 "Sep 11, 1996" "Linux" "Maintenance Commands" .SH NAME les, bus \- ATM LAN Emulation service demons .SH SYNOPSIS .B lecs .RB [ \-l\ \fIlisten_address\fP ] .RB [ \-f\ \fIconfiguration_file\fP ] .RB [ \-d\ ] .SH DESCRIPTION LE Service consists of three components: LAN Emulation Configuration Server (\fBlecs\fP), LAN Emulation Server ( \fBles(8)\fP) and Broadcast and Unknown Server (\fBbus(8)\fP). .PP \fBLecs\fP implements the distribution of LECs to different emulated LANs. This is done by giving different LAN Emulation Server ATM addresses to LECs. Distribution is based on \fBlecs\fP's configuration database and information provided by the LE client. It is not required that a \fBlecs\fP exists for all emulated LANs. It is possible to bypass this configuration phase by directly telling ATM address of the \fBles(8)\fP to the LEC. Configuration file example for \fBlecs\fP: .in +2m .nf # Our ATM address (should be included to differentiate us from # e.g. LEC) # Must be before ELAN definitions 470023000000030300010002010020ea000ae905 # ELAN name is inside brackets. # Parameters below are for Ethernet type LE (Linux & almost all # other LE clients) [tut-lane1] # Address of the LES LES:=470023000000030300010002010020ea000ae901 # 802_3 or 802_5 (802_3 = Ethernet) Type:=802_3 # 1515, 4544, 9234 or 18190 (1516= Ethernet) Max_Frame:=1516 # ATM address for hosts that are guided to this ELAN. # Wildcard is x or X. 470023000000030300010002010020ea0005aax0 470023000000030000010002010020ea0005bx00 47.002300000003030001000201.00603E2FDX23.00 470023000000030300010002010020ea000Xxx00 DEFAULT # Another ELAN, which has empty name [asdf] # This directive sets this elan as the default i.e. it will be # included if LEC's configure request could not be matched to # other ELANs #DEFAULT LES= 470023000000030300010002010020ea000ae902 Type=Ethernet .DT .fi .in Rules for finding ELAN definitions using information provided in LE_CONFIGURE_REQUEST and the configuration file are as follows: .PP .in +2m .nf 1. Find an entry where ELAN-NAME matches exactly and an ATM address of the LEC is found in ELAN definition. These are to match exactly with the information given in LE_CONFIGURE_REQUEST. If ELAN-NAME is found, but ATM address doesn't match then reject with reason "Permission denied". 2. Search for first ELAN which matches in type of emulated LAN, maximum frame size and ATM address of the LEC. 3. If matching ELAN was not found, return default ELAN definitions. 4. No match, so request is rejected with reason "No Configuration". .PP .DT .fi .in \fBSIGHUP\fP restarts the server. .SH OPTIONS .TP .IP \fB\-d\fP Reads the configuration file, dumps its contents and exits. .IP \fB\-l\ \fIlisten_address\fP Use the \fIlisten_address\fP to where wait connections. .IP \fB\-f\ \fIconfiguration_file\fP Use the specified configuration file instead of \fB.lecs_conf\fP. .SH FILES .PD 0 .TP 25 .B .lecs_conf configuration file .PD .SH BUGS Undocumented. .SH AUTHOR Marko Kiiskila, TUT .SH "SEE ALSO" les(8), atmsigd(8), zeppelin(8) .\"{{{}}} linux-atm-2.5.1/src/lane/lecs.c0000644000200100001440000001245007360675443015100 0ustar chasusers/* * * LECS main code * * $Id: lecs.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* Standard includes*/ #include #include #include #include #include #include #include #include #include #include /* ATM includes */ #include /* Local includes */ #include "lecs_load.h" #include "ldb.h" #include "mem_lecs.h" #include "lecs.h" #include "atm_lecs.h" /* Protos */ static void sig_reset(int foobar); static void sig_kill(int foobar); static void usage(const char *progname); int send_response(int fd, unsigned char *buffer, int len); /* Local data */ #define COMP_NAME "MAIN" #define MAX_FD 32 #define P_SIZE 1024 static int stay_alive = 1; static int reset = 0; #define DUMP_PACKETS 0 static void usage(const char *progname) { printf("Usage: %s [-f configuration_file][-l listen_address][-d]\n", progname); } static void sig_reset(int foobar) { reset = 1; } static void sig_kill(int foobar) { stay_alive = 0; } int send_response(int fd, unsigned char *buffer, int len) { LaneControl_t *dp; Elan_t *elan; unsigned short response; #ifdef DUMP_PACKETS int i; #endif if (len < sizeof(LaneControl_t)) return -1; dp = (LaneControl_t *)buffer; if (dp->marker != htons(LE_MARKER) || dp->protocol != LE_PROTOCOL || dp->version != LE_VERSION || dp->opcode != htons(LE_CONFIGURE_REQUEST)) { return -1; } dp->opcode = htons(LE_CONFIGURE_RESPONSE); elan = find_elan(dp->source_atm, dp->lan_type, dp->max_frame, (char*)dp->elan_name, dp->elan_name_size, &response); if (!elan) { dp->status = htons(response); } else { dp->status = htons(LE_STATUS_SUCCESS); dp->lan_type = elan->type; dp->max_frame = elan->max_frame; memcpy(dp->elan_name, elan->elan_name, elan->elan_name_size); dp->elan_name_size = elan->elan_name_size; memcpy(dp->target_atm, elan->les_addr, ATM_ESA_LEN); } #ifdef DUMP_PACKETS for(i=0;i /* Type definitions */ #define LANE_DEST_NP 0x0000 #define LANE_DEST_MAC 0x0001 #define LANE_DEST_RD 0x0002 typedef struct { unsigned marker : 16; unsigned protocol : 8; unsigned version : 8; unsigned opcode : 16; unsigned status : 16; unsigned transaction_id : 32; unsigned short lecid; unsigned flags : 16; unsigned char source_lan[8]; unsigned char target_lan[8]; unsigned char source_atm[20]; unsigned lan_type : 8; unsigned max_frame : 8; unsigned reserved : 8; unsigned elan_name_size : 8; unsigned char target_atm[20]; unsigned char elan_name[32]; } LaneControl_t; /* Global function prototypes */ /* Global data */ #define LE_MARKER 0xff00 #define LE_PROTOCOL 0x01 #define LE_VERSION 0x01 /* Opcodes */ #define LE_CONFIGURE_REQUEST 0x0001 #define LE_CONFIGURE_RESPONSE 0x0101 #define LE_JOIN_REQUEST 0x0002 #define LE_JOIN_RESPONSE 0x0102 #define READY_QUERY 0x0003 #define READY_IND 0x0103 #define LE_REGISTER_REQUEST 0x0004 #define LE_REGISTER_RESPONSE 0x0104 #define LE_UNREGISTER_REQUEST 0x0005 #define LE_UNREGISTER_RESPONSE 0x0105 #define LE_ARP_REQUEST 0x0006 #define LE_ARP_RESPONSE 0x0106 #define LE_FLUSH_REQUEST 0x0007 #define LE_FLUSH_RESPONSE 0x0107 #define LE_NARP_REQUEST 0x0008 #define LE_TOPOLOGY_REQUEST 0x0009 /* Status codes */ #define LE_STATUS_SUCCESS 0 /* Success */ #define LE_STATUS_BAD_VERSION 1 /* Version not supported */ #define LE_STATUS_BAD_REQ 2 /* Invalid request parameters */ #define LE_STATUS_DUPLICATE_REG 4 /* Duplicate LAN registration */ #define LE_STATUS_DUPLICATE_ADDR 5 /* Duplicate ATM address */ #define LE_STATUS_NO_RESOURCES 6 /* Insufficient resources */ #define LE_STATUS_NO_ACCESS 7 /* Access denied */ #define LE_STATUS_BAD_LECID 8 /* Invalid requestor-id */ #define LE_STATUS_BAD_DEST 9 /* Invalid LAN destination */ #define LE_STATUS_BAD_ADDR 10 /* Invalid ATM address */ #define LE_STATUS_NO_CONFIG 20 /* No configuration */ #define LE_STATUS_CONFIG_ERROR 21 /* LE_CONFIGURE error */ #define LE_STATUS_NO_INFO 22 /* Insufficient Information */ #define LE_STATUS_MAX 22 /* Flags */ #define LE_FLAG_REMOTE 0x0001 #define LE_FLAG_PROXY 0x0080 #define LE_FLAG_TOPOLOGY_CHANGE 0x0100 /* Lan types */ #define LE_LAN_TYPE_UNSPECIFIED 0x00 #define LE_LAN_TYPE_802_3 0x01 #define LE_LAN_TYPE_802_5 0x02 /* Max frame sizes, mtus */ #define LE_MAX_FRAME_UNSPECIFIED 0x00 #define LE_MAX_FRAME_1516 0x01 #define LE_MAX_FRAME_4544 0x02 #define LE_MAX_FRAME_9234 0x03 #define LE_MAX_FRAME_18190 0x04 /* Default configuration file */ #define DEFAULT_CONFIG ".lecs_conf" #endif linux-atm-2.5.1/src/lane/lecs_db.h0000644000200100001440000000101207360675443015542 0ustar chasusers/* * * ELAN Configuration db load header * * $Id: lecs_db.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef LECS_DB_H #define LECS_DB_H #define ELAN_NAME 20 #define ADDRESS_ATM 21 #define ERROR 22 #define LES_ADDR 23 #define DEFAULT 24 #define TYPE 25 #define MAX_FRAME 26 #define TYPE_ETHERNET 27 #define TYPE_TR 28 #define MF_1516 29 #define MF_4544 30 #define MF_9234 31 #define MF_18190 32 extern FILE *yyin; extern char *g_return; extern unsigned int g_lineno; int yylex(void); #endif /* LECS_DB_H */ linux-atm-2.5.1/src/lane/lecs_db.l0000644000200100001440000000242011235572166015544 0ustar chasusers%{ #if HAVE_CONFIG_H #include #endif /*Standard includes*/ #include #include #include /* Local includes */ #include "lecs_load.h" #include "lecs_db.h" char *g_return; unsigned int g_lineno=1; %} C [a-zA-Z] H [0-9a-fA-F] %% [\t ] {} \n {g_lineno++;} \[{C}[a-zA-Z0-9\-_]*\] | \[\] { g_return = (char*) malloc(strlen(yytext)); strcpy(g_return, &yytext[1]); g_return[strlen(yytext)-2] = '\0'; return ELAN_NAME; } [Ll][Ee][Ss][\t ]?\:?\=? { return LES_ADDR;} [Tt][Yy][Pp][Ee][\t ]?\:?\=? { return TYPE;} 802\_?3 | [Ee][Tt][Hh][Ee][Rr][Nn][Ee][Tt] { return TYPE_ETHERNET;} 802\_?5 | [Tt][Oo][Kk][Ee][Nn]\_?[Rr][Ii][Nn][Gg] { return TYPE_TR;} [Mm][Aa][Xx]\_?[Ff][Rr][Aa][Mm][Ee][\t ]?\:?\=? {return MAX_FRAME;} [Dd][Ee][Ff][Aa][Uu][Ll][Tt] { return DEFAULT;} 1516 { return MF_1516; } 4544 { return MF_4544; } 9234 { return MF_9234; } 18190 { return MF_18190;} {H}[0-9a-fA-FxX\.\:\-]* { g_return = (char*) malloc(strlen(yytext)); strcpy(g_return, yytext); g_return[strlen(yytext)] = '\0'; return ADDRESS_ATM; } \#.* {} . { int i; while ((i = input())!='\n'); unput(i); return ERROR; } %% int yywrap() { return 1; } linux-atm-2.5.1/src/lane/lecs_load.c0000644000200100001440000000540707360675443016103 0ustar chasusers/* * * LECS configuration database loading * * $Id: lecs_load.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include /* Local includes */ #include "lecs_load.h" #include "lecs_db.h" #include "ldb.h" #include "lecs.h" int load_db(const char *filename) { int ret = 0; /* silence gcc 2.7.2.1 */ int readnew=1; Elan_t *elan =NULL; char message[300]; yyin = fopen(filename,"r"); if(!yyin) { sprintf(message,"Can't open configuration file '%s' ",filename); perror(message); return -1; } while(1) { if (readnew) ret = yylex(); readnew=1; switch(ret) { case ELAN_NAME: elan = new_elan(g_return); break; case TYPE: if (!elan) { printf("No ELAN for TYPE; line %d\n", g_lineno); break; } ret = yylex(); if (ret == TYPE_ETHERNET) { elan->type = LE_MAX_FRAME_1516; } else if (ret == TYPE_TR) { elan->type = LE_LAN_TYPE_802_3; } else { printf("Invalid type; line %d\n", g_lineno); } break; case TYPE_ETHERNET: case TYPE_TR: printf("Invalid type placement; line %d\n", g_lineno); break; case MAX_FRAME: if (!elan) { printf("No ELAN for Max frame size; line %d\n", g_lineno); break; } ret = yylex(); switch (ret) { case MF_1516: elan->max_frame = LE_MAX_FRAME_1516; break; case MF_4544: elan->max_frame = LE_MAX_FRAME_4544; break; case MF_9234: elan->max_frame = LE_MAX_FRAME_9234; break; case MF_18190: elan->max_frame = LE_MAX_FRAME_18190; break; default: printf("Invalid max frame size %d\n", g_lineno); break; } break; case MF_1516: case MF_4544: case MF_9234: case MF_18190: printf("Invalid max frame size placement; line %d\n", g_lineno); break; case LES_ADDR: if (!elan) { printf("No ELAN for LES; line %d\n",g_lineno); break; } ret = yylex(); if (ret != ADDRESS_ATM) { printf("ATM address for LES missing; line %d; ret:%d\n",g_lineno,ret); readnew=0; } else if (add_les(elan, g_return)<0) { printf("Couldn't read LES address; line %d\n", g_lineno); } break; case ADDRESS_ATM: if (!elan) { set_lecs_addr(g_return); break; } if (add_atm(elan, g_return)<0) printf("Couldn't read LEC address; line %d\n", g_lineno); break; case DEFAULT: if (!elan) { printf("No ELAN to set as a default; line %d\n",g_lineno); break; } set_default(elan); break; case ERROR: printf("Error reading database file; line %d\n", g_lineno); while(ret==ERROR) ret=yylex(); readnew=0; break; default: fclose(yyin); return 0; } } } linux-atm-2.5.1/src/lane/lecs_load.h0000644000200100001440000000030707360675443016102 0ustar chasusers/* * * LECS configuration database loading * * $Id: lecs_load.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef LECS_LOAD_H #define LECS_LOAD_H int load_db(const char *filename); #endif linux-atm-2.5.1/src/lane/les.80000644000200100001440000000722207360675443014663 0ustar chasusers.TH LES 8 "Sep 11, 1996" "Linux" "Maintenance Commands" .SH NAME les, bus \- ATM LAN Emulation service demons .SH SYNOPSIS .B les .RB [ \-d\ \fImodule\fP ] .RB [ \-m\ \fImodule\fP ] .RB [ \-f\ \fIconfiguration_file\fP ] .PP .B bus .RB [ \-d\ \fImodule\fP ] .RB [ \-m\ \fImodule\fP ] .RB [ \-f\ \fIconfiguration_file\fP ] .SH DESCRIPTION LE Service consists of three components: LAN Emulation Configuration Server (\fBlecs(8)\fP), LAN Emulation Server (\fBles\fP) and Broadcast and Unknown Server (\fBbus\fP). .PP \fBLes\fP performs the control coordination function for the emulated LAN. LE clients register MAC addresses and/or route descriptors they represent to \fBles\fP, and later query it when they want to resolve MAC addresses/route descriptors into ATM addresses. Other LE control messages which are to be distributed to every client in ELAN are also sent to \fBles\fP. \fBLes\fP forwards these messages using Control Distribute VCC which it has set up to every client in ELAN. .PP \fBBus\fP handles data sent by clients to broadcast and multicast MAC addresses and some of the data directed to unicast addresses. LE Client has a possibility to send data directed to some unicast address to the \fBbus\fP before target's ATM address has been resolved and the Data Direct VCC has been established. .PP Configuration file example for \fBles\fP and \fBbus\fP: .PP .in +2m .nf [main] memdebug=True debug=True [load] #memdebug=True #debug=True [conn] debug=True #S1, LE Server's ATM address #S1=:47:00:23:00:00:00:03:00:00:01:00:02:01:00:20:ea:00:05:aa:00 S1=:47:00:23:00:00:00:03:03:00:01:00:02:01:00:20:ea:00:0a:e9:01 #S2, LAN Type S2="802.3" #S3, Maximum Frame Size S3=1516 #S4, Join Timeout, s S4=15 #S5, Maximum Frame Age, s S5=6 #S6, BUS Atm address S6=:47:00:23:00:00:00:03:03:00:01:00:02:01:00:20:ea:00:0a:e9:02 #viulu #S6=0,0,170 #ELANNAME="asdf" .DT .fi .in The configuration file contains each modules name in brackets followed by variable definitions for that module. The definitions are of form .I variable=value, where value can be either an integer, a truth value (True/False), a string enclosed in double quotes .I ("string") or an ATM address in hexadecimal format. Variables that can be set are the debug/memdebug for each module and variables S1-S6 as defined in LE specification. .nf S1=Address of the LES. This address is used in ATM signalling. S2=Type of the emulated LAN. Valid values is "802.3". S3=Maximum frame size. Valid value is 1516. S4=Join Timeout. Time in seconds which LES waits for LE_JOIN_REQUEST before tearing down a connection. S5=Maximum frame Age. Currently not used. S6=Address of the BUS. This address is used in ATM signalling. ELANNAME= Name of the emulated LAN .fi .PP \fBSIGHUP\fP causes restart of the server. All resources are released and server is started. \fBSIGUSR1\fP causes the server to dump its internal state. \fBSIGUSR2\fP shuts down the server (hopefully) gracefully. .SH OPTIONS .TP .IP \fB\-d\ \fImodule\fP Set debugging messages on for a module. "All" sets debugging on for all modules. .IP \fB\-m\ \fImodule\fP Set memory debugging messages on for a module. "All" sets debugging on for all modules. .IP \fB\-f\ \fIconfiguration_file\fP Use the specified configuration file instead of \fB.lanevars\fP. .SH FILES .PD 0 .TP 25 .B .lanevars configuration file .PD .SH BUGS Servers don't establish point-to-multipoint connections to LE clients as the specification states, which means that some LE clients won't work with these servers. .PP Supports only IEEE 802.3 / Ethernet type of ELANs. .PP This manual page is confusing. .SH AUTHOR Marko Kiiskila, TUT .SH "SEE ALSO" lecs(8), atmsigd(8), zeppelin(8) .\"{{{}}} linux-atm-2.5.1/src/lane/load.c0000644000200100001440000003431707360675443015077 0ustar chasusers/* * Configuration file loader * * $Id: load.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include #include #include #include /* Local includes */ #include "load.h" #include "lane.h" #include "units.h" #include "dump.h" #include "mem.h" #include "load_lex.h" /* Type definitions */ typedef enum { VT_INT, VT_STR, VT_BOOL, VT_ADDR, VT_PVC } VarType_t; typedef struct { const Unit_t *unit; const char *name; VarType_t type; union { int intval; const char *strval; Bool_t boolval; const AtmAddr_t *addrval; const InitPvc_t *init; } val_u; } Var_t; typedef struct _VarList_t { Var_t *var; struct _VarList_t *next; } VarList_t; /* Local function prototypes */ static void load_init0(void); static void load_init1(void); static void load_dump(void); static void load_release(void); static Var_t *find_var(const Unit_t *unit, const char *varname); static void add_var(Var_t *var); static void load_vars(const char *filename); /* Data */ #define BUFLEN 256 static const char *rcsid = "$Id: load.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $"; static VarList_t *varlist; extern char *var_file; const Unit_t load_unit = { "load", &load_init0, &load_init1, &load_dump, &load_release }; /* Functions */ /* Initialize local data */ static void load_init0(void) { varlist = NULL; } /* Initialization for data that needs other units */ static void load_init1(void) { set_var_str(&load_unit, "version", rcsid); /* * Load variables from file * For example: * [main] * debug=True * memdebug=True * [conn] * #S4, Join Timeout, s * S4=60 */ load_vars(var_file); Debug_unit(&load_unit, "Initialized."); } /* Dump status, local data etc. */ static void load_dump(void) { dump_vars(NULL); } /* Release allocated memory, close files etc. */ static void load_release(void) { VarList_t *tmp; LaneDestList_t *ltmp, *ltmp2; Debug_unit(&load_unit, "Releasing unit"); for (tmp = varlist; tmp != NULL;) { Debug_unit(&load_unit, "Freeing var %s/%s", tmp->var->unit->name, tmp->var->name); assert(tmp->var != NULL); assert(tmp->var->name != NULL); varlist = varlist->next; if (tmp->var->type == VT_STR){ assert(tmp->var->val_u.strval != NULL); mem_free(&load_unit, tmp->var->val_u.strval); } if (tmp->var->type == VT_ADDR){ assert(tmp->var->val_u.addrval != NULL); mem_free(&load_unit, tmp->var->val_u.addrval); } if (tmp->var->type == VT_PVC){ assert(tmp->var->val_u.init != NULL); assert(tmp->var->val_u.init->pvc != NULL); mem_free(&load_unit, tmp->var->val_u.init->pvc); assert(tmp->var->val_u.init->address != NULL); mem_free(&load_unit, tmp->var->val_u.init->address); ltmp = tmp->var->val_u.init->destinations; while (ltmp != NULL) { ltmp2 = ltmp->next; assert(ltmp->addr != NULL); mem_free(&load_unit, ltmp->addr); mem_free(&load_unit, ltmp); ltmp = ltmp2; } mem_free(&load_unit, tmp->var->val_u.init); } mem_free(&load_unit, tmp->var->name); mem_free(&load_unit, tmp->var); mem_free(&load_unit, tmp); tmp = varlist; } } static Var_t * find_var(const Unit_t *unit, const char *varname) { VarList_t *tmp; assert(unit != NULL); assert(unit->name != NULL); assert(varname != NULL); for (tmp = varlist; tmp != NULL; tmp = tmp->next) { assert(tmp->var != NULL); assert(tmp->var->unit != NULL); assert(tmp->var->unit->name != NULL); assert(tmp->var->name != NULL); if (strcmp(unit->name, tmp->var->unit->name) == 0 && strcmp(tmp->var->name, varname) == 0) { break; } } if (tmp) { return tmp->var; } else { return NULL; } } /* Get or initialize variable */ int get_var_int(const Unit_t *unit, const char *varname) { const Var_t *tmp; tmp = find_var(unit, varname); if (tmp) { assert(tmp->type == VT_INT); return tmp->val_u.intval; } else { return 0; } } const InitPvc_t *get_var_vcc(const Unit_t *unit, const char *varname) { const Var_t *tmp; tmp=find_var(unit, varname); if(tmp) { assert(tmp->type == VT_PVC); return tmp->val_u.init; } else { return NULL; } } const char * get_var_str(const Unit_t *unit, const char *varname) { const Var_t *tmp; tmp=find_var(unit, varname); if (tmp) { assert(tmp->type == VT_STR); return tmp->val_u.strval; } else { return NULL; } } Bool_t get_var_bool(const Unit_t *unit, const char *varname) { const Var_t *tmp; tmp = find_var(unit, varname); if (tmp) { assert(tmp->type == VT_BOOL); return tmp->val_u.boolval; } else { return BL_FALSE; } } const AtmAddr_t * get_var_addr(const Unit_t *unit, const char *varname) { const Var_t *tmp; tmp = find_var(unit, varname); if (tmp) { assert(tmp->type == VT_ADDR); return tmp->val_u.addrval; } else { return NULL; } } static void add_var(Var_t *var) { VarList_t *tmpl; tmpl = (VarList_t *)mem_alloc(&load_unit, sizeof(VarList_t)); tmpl->var = var; tmpl->next = varlist; varlist = tmpl; } /* Set or initialize variable */ void set_var_vcc(const Unit_t *unit, const char *varname, const InitPvc_t *vcc) { Var_t *tmp; LaneDestList_t *ltmp, *ltmp2; assert(unit != NULL && unit->name != NULL && varname != NULL); tmp = find_var(unit, varname); if (tmp == NULL) { tmp = (Var_t *)mem_alloc(&load_unit, sizeof(Var_t)); tmp->unit = unit; tmp->name = varname; tmp->val_u.init = vcc; tmp->type = VT_PVC; add_var(tmp); } else { assert(tmp->type == VT_PVC); mem_free(&load_unit, tmp->name); tmp->name = varname; assert(tmp->val_u.init->pvc != NULL); mem_free(&load_unit, tmp->val_u.init->pvc); assert(tmp->val_u.init->address != NULL); mem_free(&load_unit, tmp->val_u.init->address); ltmp = tmp->val_u.init->destinations; while(ltmp != NULL) { ltmp2 = ltmp->next; assert(ltmp->addr != NULL); mem_free(&load_unit, ltmp->addr); mem_free(&load_unit, ltmp); ltmp = ltmp2; } mem_free(&load_unit, tmp->val_u.init); tmp->val_u.init = vcc; } } void set_var_int(const Unit_t *unit, const char *varname, int intval) { Var_t *tmp; assert(unit != NULL && unit->name != NULL && varname != NULL); tmp = find_var(unit, varname); if (tmp == NULL) { tmp = (Var_t *)mem_alloc(&load_unit, sizeof(Var_t)); tmp->unit = unit; tmp->name = varname; tmp->val_u.intval = intval; tmp->type = VT_INT; add_var(tmp); } else { assert(tmp->type == VT_INT); mem_free(&load_unit, tmp->name); tmp->name = varname; tmp->val_u.intval = intval; } } void set_var_str(const Unit_t *unit, const char *varname, const char *strval) { Var_t *tmp; assert(unit != NULL && unit->name != NULL && varname != NULL); tmp = find_var(unit, varname); if (tmp == NULL) { tmp = (Var_t *)mem_alloc(&load_unit, sizeof(Var_t)); tmp->unit = unit; tmp->name = varname; tmp->val_u.strval = strval; tmp->type = VT_STR; add_var(tmp); } else { assert(tmp->type == VT_STR); mem_free(&load_unit, tmp->name); tmp->name = varname; mem_free(&load_unit, tmp->val_u.strval); tmp->val_u.strval = strval; } } void set_var_addr(const Unit_t *unit, const char *varname, const AtmAddr_t *addr) { Var_t *tmp; assert(unit != NULL && unit->name != NULL && varname != NULL); tmp = find_var(unit, varname); if (tmp == NULL) { tmp = (Var_t *)mem_alloc(&load_unit, sizeof(Var_t)); tmp->unit = unit; tmp->name = varname; tmp->val_u.addrval = addr; tmp->type = VT_ADDR; add_var(tmp); } else { assert(tmp->type == VT_ADDR); mem_free(&load_unit, tmp->name); tmp->name = varname; mem_free(&load_unit, tmp->val_u.addrval); tmp->val_u.addrval = addr; } } void set_var_bool(const Unit_t *unit, const char *varname, Bool_t boolval) { Var_t *tmp; assert(unit != NULL && unit->name != NULL && varname != NULL); tmp = find_var(unit, varname); if (tmp == NULL) { tmp = (Var_t *)mem_alloc(&load_unit, sizeof(Var_t)); tmp->unit = unit; tmp->name = varname; tmp->val_u.boolval = boolval; tmp->type = VT_BOOL; add_var(tmp); } else { mem_free(&load_unit, tmp->name); tmp->name = varname; assert(tmp->type == VT_BOOL); tmp->val_u.boolval = boolval; } } void dump_vars(const Unit_t *unit) { const VarList_t *tmp; LaneDestList_t *ltmp; Debug_unit(&load_unit, "Dumping variables"); for (tmp = varlist; tmp != NULL; tmp = tmp->next) { assert(tmp->var != NULL); assert(tmp->var->unit != NULL); assert(tmp->var->unit->name != NULL); assert(tmp->var->name != NULL); if (unit == NULL || strcmp(unit->name, tmp->var->unit->name) == 0) { switch (tmp->var->type) { case VT_INT: Debug_unit(&load_unit, "%s/%s = %d", tmp->var->unit->name, tmp->var->name, tmp->var->val_u.intval); break; case VT_STR: Debug_unit(&load_unit, "%s/%s = \"%s\"", tmp->var->unit->name, tmp->var->name, tmp->var->val_u.strval); break; case VT_BOOL: Debug_unit(&load_unit, "%s/%s = %s", tmp->var->unit->name, tmp->var->name, tmp->var->val_u.boolval == BL_TRUE? "True" : "False" ); break; case VT_ADDR: Debug_unit(&load_unit, "%s/%s =", tmp->var->unit->name, tmp->var->name); dump_atmaddr(tmp->var->val_u.addrval); break; case VT_PVC: Debug_unit(&load_unit,"%s/%s = %d,%d,%d with lecid:%d ", tmp->var->unit->name, tmp->var->name, tmp->var->val_u.init->pvc->port, tmp->var->val_u.init->pvc->vpi, tmp->var->val_u.init->pvc->vci, tmp->var->val_u.init->lecid); dump_atmaddr(tmp->var->val_u.init->address); ltmp = tmp->var->val_u.init->destinations; while(ltmp) { dump_printf(EL_CONT,"\t"); dump_addr(ltmp->addr); dump_printf(EL_CONT,"\n"); ltmp = ltmp->next; } break; } } } } void load_vars(const char *file) { const Unit_t *curr_unit = NULL; int ret = 0; /* to silence gcc 2.7.2.1 */ char *varname; InitPvc_t *pvc; LaneDestList_t *ltmp; int read_flag = 1; assert(file != NULL); Debug_unit(&load_unit, "Loading variables from file %s", file); yyin = fopen(file, "r"); if (!yyin) { Debug_unit(&load_unit, "Cannot open file %s: %s", file, strerror(errno)); return; } g_buf_index = 0; do { if (read_flag) ret = yylex(); else read_flag =1; switch(ret) { case END: Debug_unit(&load_unit, "EOF"); break; case UNIT: Debug_unit(&load_unit, "Got unit %s", g_return.stringgi); curr_unit = find_unit(g_return.stringgi); if (curr_unit == NULL) { Debug_unit(&load_unit, "Unknown unit %s", g_return.stringgi); } Debug_unit(&load_unit, "Got unit %s", g_return.stringgi); mem_free(&load_unit,g_return.stringgi); break; case VARNAME: varname = g_return.stringgi; Debug_unit(&load_unit, "Got variable name %s", varname); ret = yylex(); switch(ret) { case STRING: Debug_unit(&load_unit, "Variable is string: %s", g_return.stringgi); set_var_str(curr_unit, varname, g_return.stringgi); break; case BOOLEAN: Debug_unit(&load_unit, "Variable is boolean: %s", g_return.bool==BL_TRUE?"True":"False"); set_var_bool(curr_unit, varname, g_return.bool); break; case INTEGER: Debug_unit(&load_unit, "Variable is integer: %d", g_return.intti); set_var_int(curr_unit, varname, g_return.intti); break; case ATMADDRESS: Debug_unit(&load_unit, "Variable is atmaddress "); dump_atmaddr(g_return.atmaddress); set_var_addr(curr_unit, varname, g_return.atmaddress); break; case LANEDEST: Debug_unit(&load_unit, "Invalid variable value for %s", varname); mem_free(&load_unit, g_return.destaddr); break; case UNIT: Debug_unit(&load_unit, "Invalid variable value for %s", varname); mem_free(&load_unit, g_return.stringgi); break; case VCC: Debug_unit(&load_unit, "Variable is vcc"); pvc = (InitPvc_t *)mem_alloc(curr_unit, sizeof(InitPvc_t)); pvc->pvc = (LaneVcc_t *)mem_alloc(curr_unit, sizeof(LaneVcc_t)); pvc->pvc->port = g_return.vcc.port; pvc->pvc->vpi = g_return.vcc.vpi; pvc->pvc->vci = g_return.vcc.vci; pvc->address = NULL; pvc->lecid = 0; pvc->destinations = NULL; ret = yylex(); if (ret != ATMADDRESS) { Debug_unit(&load_unit, "Invalid atm_address for pvc %d,%d,%d", pvc->pvc->port, pvc->pvc->vpi, pvc->pvc->vci); switch(ret) { case UNIT: case STRING: case VARNAME: mem_free(&load_unit, g_return.stringgi); break; case LANEDEST: mem_free(&load_unit, g_return.destaddr); break; } } else { pvc->address = g_return.atmaddress; } ret = yylex(); if (ret != INTEGER) { Debug_unit(&load_unit, "Invalid lecid for pvc %d,%d,%d\n", pvc->pvc->port,pvc->pvc->vpi,pvc->pvc->vci); switch(ret) { case UNIT: case STRING: case VARNAME: mem_free(&load_unit, g_return.stringgi); break; case LANEDEST: mem_free(&load_unit, g_return.destaddr); break; case ATMADDRESS: mem_free(&load_unit, g_return.atmaddress); break; } } else { pvc->lecid = g_return.intti; } while((ret=yylex())==LANEDEST) { ltmp=(LaneDestList_t *)mem_alloc(&load_unit, sizeof(LaneDestList_t)); ltmp->addr = g_return.destaddr; ltmp->next = pvc->destinations; pvc->destinations = ltmp; } read_flag=0; set_var_vcc(curr_unit, varname, pvc); break; default: Debug_unit(&load_unit, "Invalid variable value for %s", varname); break; } break; case STRING: Debug_unit(&load_unit,"Invalid string placement %s",g_return.stringgi); mem_free(&load_unit, g_return.stringgi); break; case ATMADDRESS: Debug_unit(&load_unit, "Invalid atm address placement"); mem_free(&load_unit, g_return.atmaddress); break; case LANEDEST: Debug_unit(&load_unit, "Invalid lane destination placement"); mem_free(&load_unit, g_return.destaddr); break; case INTEGER: Debug_unit(&load_unit, "Invalid integer placement"); break; default: Debug_unit(&load_unit, "Invalid input"); break; } } while (ret != END); if (fclose(yyin) != 0) { Debug_unit(&load_unit, "Cannot close file %s: %s", file, strerror(errno)); } } linux-atm-2.5.1/src/lane/load.h0000644000200100001440000000245107360675443015076 0ustar chasusers/* * Configuration file loader * * $Id: load.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef LANE_LOAD_H #define LANE_LOAD_H /* System includes needed for types */ /* Local includes needed for types */ #include "units.h" #include "lane.h" /* Type definitions */ typedef enum { BL_FALSE=0, BL_TRUE } Bool_t; /* Global function prototypes */ /* Get or initialize variable */ int get_var_int(const Unit_t *unit, const char *varname); const char *get_var_str(const Unit_t *unit, const char *varname); Bool_t get_var_bool(const Unit_t *unit, const char *varname); const AtmAddr_t *get_var_addr(const Unit_t *unit, const char *varname); const InitPvc_t *get_var_vcc(const Unit_t *unit, const char *varname); /* Set or initialize variable */ void set_var_int(const Unit_t *unit, const char *varname, int intval); void set_var_str(const Unit_t *unit, const char *varname, const char *strval); void set_var_bool(const Unit_t *unit, const char *varname, Bool_t boolval); void set_var_addr(const Unit_t *unit, const char *varname, const AtmAddr_t *addr); void set_var_vcc(const Unit_t *unit, const char *varname, const InitPvc_t *vcc); /* Dump variable definitions, NULL == all */ void dump_vars(const Unit_t *unit); /* Global data */ #define DEFAULT_CFG_FILE ".lanevars" extern const Unit_t load_unit; #endif linux-atm-2.5.1/src/lane/load_lex.h0000644000200100001440000000116207360675443015744 0ustar chasusers/* * Configuration file loader, lex header * * $Id: load_lex.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef __LOAD_LEX #define __LOAD_LEX #include #include "lane.h" #include "load.h" #define UNIT 20 #define BOOLEAN 21 #define ATMADDRESS 22 #define STRING 23 #define INTEGER 24 #define LANEDEST 25 #define VARNAME 27 #define VCC 28 #define ERROR 26 #define END 0 typedef struct { Bool_t bool; int intti; AtmAddr_t *atmaddress; LaneDestination_t *destaddr; char *stringgi; LaneVcc_t vcc; } Ret_t; extern FILE *yyin; extern int g_buf_index; extern Ret_t g_return; int yylex(void); #endif linux-atm-2.5.1/src/lane/load_lex.l0000644000200100001440000000466111235572166015751 0ustar chasusers%{ #if HAVE_CONFIG_H #include #endif #include #include #include #include "load_lex.h" #include "mem.h" #include "load.h" Ret_t g_return; char g_buf[256]; int g_buf_index; char s_input(void); int s_unput(char); %} D [0-9] C [a-zA-Z] H [0-9a-fA-F] %% [\t\n ] {} \"[^"]*\" { g_return.stringgi = mem_alloc(&load_unit, strlen(yytext)); strcpy(g_return.stringgi,&yytext[1]); g_return.stringgi[strlen(yytext)-2] = '\0'; return STRING;} \:.* {int i; int hex; g_return.atmaddress = (AtmAddr_t *) mem_alloc(&load_unit, sizeof(AtmAddr_t)); for(i=0;i<20;i++) { if(sscanf(&yytext[i*3],":%x",&hex) != 1) return ERROR; g_return.atmaddress->addr[i] = (unsigned char) hex; } return ATMADDRESS; } True | true {g_return.bool = BL_TRUE; return BOOLEAN; } False | false {g_return.bool = BL_FALSE; return BOOLEAN; } \#.* {} {H}{H}\;{H}{H}\;{H}{H}\;{H}{H}\;{H}{H}\;{H}{H}\; { int i, hex; g_return.destaddr = (LaneDestination_t *) mem_alloc(&load_unit, sizeof(LaneDestination_t)); for(i=0;i<5;i++) { if (sscanf(&yytext[i*3],"%x;",&hex) != 1) return ERROR; g_return.destaddr->a_r.mac_address[i] = hex; } g_return.destaddr->tag = LANE_DEST_MAC; return LANEDEST; } {D}+\,{D}+\,{D}+ { sscanf(yytext,"%ld,%ld,%ld",&g_return.vcc.port, &g_return.vcc.vpi, &g_return.vcc.vci); return VCC; } {D}+ {int tmp; sscanf(yytext,"%d",&tmp); g_return.intti = tmp; return INTEGER;} \[{C}[a-zA-Z0-9]*\] {g_return.stringgi = mem_alloc(&load_unit, strlen(yytext)); strcpy(g_return.stringgi,&yytext[1]); g_return.stringgi[strlen(yytext)-2] = '\0'; return UNIT;} {C}[a-zA-Z0-9]*\= {g_return.stringgi = mem_alloc(&load_unit, strlen(yytext)); strcpy(g_return.stringgi,yytext); g_return.stringgi[strlen(yytext)-1] = '\0'; return VARNAME;} \~ {return END;} . {return ERROR;} %% /* Flex != lex #undef input #define input s_input #undef unput #define unput(c) s_unput(c) char s_input(void) { int c; if (g_buf_index <=0) c = getc(g_fd); else c = g_buf[--g_buf_index]; if (c==EOF) {return '~';} printf("%d :%c\n",c,c); return c; } */ int yywrap() { char c; return 1; c = input(); if (c == '~') return 1; else { unput(c); return 0; } } /* int s_unput(char c) { g_buf[g_buf_index++] = c; return 1; } */ linux-atm-2.5.1/src/lane/mem.c0000644000200100001440000000674007360675443014735 0ustar chasusers/* * Memory allocation unit * * $Id: mem.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include /* Local includes */ #include "mem.h" #include "dump.h" #include "load.h" #include "units.h" /* Type definitions */ typedef struct _MemList_t { void *mem; size_t memsize; const Unit_t *unit; struct _MemList_t *next; } MemList_t; /* Local function prototypes */ static void mem_init0(void); static void mem_init1(void); static void mem_dump_all(void); static void mem_release(void); /* Data */ static const char *rcsid = "$Id: mem.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $"; static MemList_t *memlist; const Unit_t mem_unit = { "memory", &mem_init0, &mem_init1, &mem_dump_all, &mem_release }; static unsigned int alloccount, freecount; /* Functions */ /* Initialize local data */ static void mem_init0(void) { memlist = NULL; alloccount = 0; freecount = 0; } /* Initialization for data that needs other units */ static void mem_init1(void) { set_var_str(&mem_unit, "version", rcsid); Debug_unit(&mem_unit, "Initialized."); } /* Dump status, local data etc. */ static void mem_dump_all(void) { Debug_unit(&mem_unit, "Memory statistics:"); mem_dump(NULL); Debug_unit(&mem_unit, "%d allocs, %d frees", alloccount, freecount); } /* Release allocated memory, close files etc. */ static void mem_release(void) { MemList_t *tmp; Debug_unit(&mem_unit, "Releasing unit"); for (tmp = memlist; tmp != NULL; tmp = tmp->next) { Debug_unit(&mem_unit, "memory not released: unit %s size %u ptr 0x%x", tmp->unit->name, tmp->memsize, tmp->mem); mem_free(&mem_unit, tmp->mem); } } /* Allocate memory for unit */ void * mem_alloc(const Unit_t *unit, size_t nbytes) { MemList_t *tmp; alloccount++; tmp = (MemList_t *)malloc(sizeof(MemList_t)); tmp->mem = malloc(nbytes); tmp->memsize = nbytes; tmp->unit = unit; tmp->next = memlist; memlist = tmp; if (get_var_bool(unit, "memdebug") == BL_TRUE) { Debug_unit(&mem_unit, "unit %s allocates size %u: ptr 0x%x", unit->name, nbytes, tmp->mem); } return tmp->mem; } /* Free memory block */ void mem_free(const Unit_t *unit, const void *mem) { MemList_t *tmp, *prev = NULL; Bool_t debug; freecount++; debug = get_var_bool(unit, "memdebug"); if (debug == BL_TRUE) { Debug_unit(&mem_unit, "unit %s frees ptr 0x%x", unit->name, mem); } for (tmp = memlist; tmp != NULL; prev = tmp, tmp = tmp->next) { if (tmp->mem == mem) { break; } } /* Found a match? */ if (tmp) { if (strcmp(tmp->unit->name, unit->name) != 0) { Debug_unit(&mem_unit, "unit %s frees ptr 0x%x size %d allocated by unit %s", unit->name, tmp->mem, tmp->memsize, tmp->unit->name); } if (memlist == tmp) { memlist = tmp->next; } if (prev != NULL) { prev->next = tmp->next; } if (debug == BL_TRUE) { Debug_unit(&mem_unit, "freeing %d bytes", tmp->memsize); } free(tmp->mem); free(tmp); } else { if (debug == BL_TRUE) { Debug_unit(&mem_unit, "could not find block 0x%x for freeing", mem); } } } /* Dump memory allocation information about unit, NULL == all units */ void mem_dump(const Unit_t *unit) { MemList_t *tmp; for (tmp = memlist; tmp != NULL; tmp = tmp->next) { if (unit == NULL || strcmp(tmp->unit->name, unit->name) == 0) { Debug_unit(&mem_unit, "unit %s size %u ptr 0x%x", tmp->unit->name, tmp->memsize, tmp->mem); } } } linux-atm-2.5.1/src/lane/mem.h0000644000200100001440000000105407360675443014733 0ustar chasusers/* * Memory allocation unit * * $Id: mem.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef LANE_MEM_H #define LANE_MEM_H /* System includes needed for types */ #include "sys/types.h" /* Local includes needed for types */ #include "units.h" /* Type definitions */ /* Global function prototypes */ void *mem_alloc(const Unit_t *unit, size_t nbytes); void mem_free(const Unit_t *unit, const void *mem); /* Dump memory allocation info, NULL == all */ void mem_dump(const Unit_t *unit); /* Global data */ extern const Unit_t mem_unit; #endif linux-atm-2.5.1/src/lane/mem_lecs.c0000644000200100001440000000330110741460066015717 0ustar chasusers/* * * Memory handling funcs * * $Id: mem_lecs.c,v 1.2.4.1 2008/01/10 18:13:10 chas3 Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include /* Local includes */ #include "mem_lecs.h" typedef struct _Mem_t { size_t size; void *start; char *unit; struct _Mem_t *next; } Mem_t; static Mem_t *memlist = NULL; void* mem_alloc(const char *unit, size_t nbytes) { Mem_t *entry; entry = (Mem_t *)malloc(sizeof(Mem_t)); if (!entry) { perror("malloc"); return NULL; } entry->size = nbytes; entry->unit = (char*)malloc(strlen(unit)+1); if (!entry->unit) { perror("malloc"); free(entry); return NULL; } memcpy(entry->unit, unit, strlen(unit)+1); entry->start = malloc(nbytes); if (!entry->start) { perror("malloc"); free(entry->unit); free(entry); return NULL; } entry->next = memlist; memlist = entry; return entry->start; } void mem_free(const char *unit, const void *mem) { Mem_t *tmp, *prev = NULL; for (tmp=memlist;tmp;prev=tmp,tmp=tmp->next) if (tmp->start == mem) break; if (tmp) { /* Found match */ if (memlist == tmp) { memlist = tmp->next; } if (prev != NULL) prev->next = tmp->next; free(tmp->unit); free(tmp->start); free(tmp); } else { printf("Trying to free memory by %s, allocated by %s, size %d\n", unit, tmp->unit, tmp->size); } } void mem_dump(void) { Mem_t *tmp; printf("Dumping memory allocation\n"); for (tmp=memlist;tmp;tmp=tmp->next) printf("%s : %d bytes from %p\n", tmp->unit, tmp->size, tmp->start); printf("-------------------------\n"); } linux-atm-2.5.1/src/lane/mem_lecs.h0000644000200100001440000000051407360675443015741 0ustar chasusers/* * * Memory handling funcs * * $Id: mem_lecs.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef MEM_LECS_H #define MEM_LECS_H /* System includes */ #include void *mem_alloc(const char *unit, size_t nbytes); void mem_free(const char *unit, const void *mem); void mem_dump(void); #endif /* MEM_LECS_H */ linux-atm-2.5.1/src/lane/packet.c0000644000200100001440000000514107360675443015420 0ustar chasusers/* * Functions to send packets * * $Id: packet.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include #include #include #include /* Local includes */ #include "mem.h" #include "lane.h" #include "dump.h" #include "load.h" #include "connect.h" #include "events.h" #include "db.h" #include "packet.h" int forward_arp_request(LaneControl_t *to_forward, Proxy_t *proxyl) { Proxy_t *tmp; int a; Debug_unit(&conn_unit,"Forward_arp called"); tmp = proxyl; while(tmp) { a = write(tmp->fd, to_forward, sizeof(LaneControl_t)); if (a == -1) dump_error(&conn_unit, "Forward arp failed"); tmp = tmp->next; } return 1; } int send_arp_response(int fd, LaneControl_t *lc, unsigned int status, Reg_t *found) { Debug_unit(&conn_unit,"Send_arp_response called to %d",fd); lc->opcode = htons(LE_ARP_RESPONSE); lc->status = (unsigned short)htons((0xffff & status)); /* Clear the potential Remote flag */ if ((lc->flags & htons(LE_FLAG_REMOTE)) == htons(LE_FLAG_REMOTE)) { lc->flags = (lc->flags ^ htons(LE_FLAG_REMOTE)); } if (found) { memcpy(&lc->target_addr,&found->atm_address, sizeof(lc->target_addr)); } if (send_control_frame(fd, lc) == 0) { dump_error(&conn_unit,"Send arp response failed"); return 0; } return 1; } int send_register_response(int fd, LaneControl_t *lc, unsigned int status, int reg) { Debug_unit(&conn_unit,"Send_register_response called to %d",fd); if (reg == 1) lc->opcode = htons(LE_REGISTER_RESPONSE); else lc->opcode = htons(LE_UNREGISTER_RESPONSE); lc->status = (unsigned short)htons(0xffff & status); if (send_control_frame(fd, lc) == 0) { dump_error(&conn_unit,"Send register response failed"); return 0; } return 1; } int send_join_response(int fd, LaneControl_t *lc, int lecid, unsigned int status) { Debug_unit(&conn_unit,"Send_join_response called to %d",fd); lc->opcode = htons(LE_JOIN_RESPONSE); lc->status = (unsigned short)htons(0xffff & status); lc->lecid = lecid; if (send_control_frame(fd, lc) == 0) { dump_error(&conn_unit,"Send join response failed"); return 0; } return 1; } int send_control_frame(int fd, LaneControl_t *to_send) { int a; Debug_unit(&conn_unit,"Send control frame"); dump_control(to_send); a = write(fd, to_send, sizeof(LaneControl_t)); if (a == -1) { dump_error(&conn_unit,"Write error"); return 0; } return 1; } linux-atm-2.5.1/src/lane/packet.h0000644000200100001440000000106307360675443015424 0ustar chasusers/* * Database handling functions * * $Id: packet.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #include "lane.h" #include "connect.h" /* Protos */ int send_arp_response(int fd, LaneControl_t *lc, unsigned int status, Reg_t *found); int send_register_response(int fd, LaneControl_t *lc, unsigned int status, int reg); int send_join_response(int fd, LaneControl_t *lc, int lecid, unsigned int status); int send_control_frame(int fd, LaneControl_t *to_send); int forward_arp_request(LaneControl_t *to_forward, Proxy_t *proxyl); linux-atm-2.5.1/src/lane/timers.c0000644000200100001440000001161707360675443015461 0ustar chasusers/* * Timers and signals wrapper * * $Id: timers.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #define _POSIX_SOURCE 1 #include #include #include #include /* Local includes */ #include "timers.h" #include "load.h" #include "dump.h" #include "mem.h" /* Type definitions */ typedef struct _TimerList_t { Timer_t *timer; struct _TimerList_t *next; } TimerList_t; /* Local function prototypes */ static void timer_init0(void); static void timer_init1(void); static void timer_dump(void); static void timer_release(void); static void hup_handler(int nsig); static void usr1_handler(int nsig); static void usr2_handler(int nsig); static void alarm_handler(int nsig); /* Data */ #define TIMER_MAX 65535 static const char *rcsid="$Id: timers.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $"; const Unit_t timer_unit = { "timer", &timer_init0, &timer_init1, &timer_dump, &timer_release }; static TimerList_t *timerlist; volatile int sig_hup, sig_usr1, sig_usr2, sig_alarm; /* Functions */ /* Initialize local data */ static void timer_init0(void) { struct sigaction sig; sig_hup = sig_usr1 = sig_usr2 = sig_alarm = 0; sig.sa_handler = hup_handler; sigemptyset(&sig.sa_mask); sig.sa_flags = 0; sigaction(SIGHUP, &sig, NULL); sig.sa_handler = usr1_handler; sigemptyset(&sig.sa_mask); sig.sa_flags = 0; sigaction(SIGUSR1, &sig, NULL); sig.sa_handler = usr2_handler; sigemptyset(&sig.sa_mask); sig.sa_flags = 0; sigaction(SIGUSR2, &sig, NULL); sig.sa_handler = alarm_handler; sigemptyset(&sig.sa_mask); sig.sa_flags = 0; sigaction(SIGALRM, &sig, NULL); timerlist = NULL; } /* Initialization for data that needs other units */ static void timer_init1(void) { set_var_str(&timer_unit, "version", rcsid); Debug_unit(&timer_unit, "Initialized."); } /* Dump status, local data etc. */ static void timer_dump(void) { TimerList_t *tmp; for (tmp = timerlist; tmp != NULL; tmp = tmp->next) { assert(tmp->timer != NULL); assert(tmp->timer->unit != NULL); assert(tmp->timer->unit->name != NULL); Debug_unit(&timer_unit, "unit %s alarm %d data 0x%x", tmp->timer->unit->name, tmp->timer->alarm_time, tmp->timer->data); } } /* Release allocated memory, close files etc. */ static void timer_release(void) { TimerList_t *tmp; alarm(0); for (tmp = timerlist; tmp != NULL; ) { assert(tmp->timer != NULL); assert(tmp->timer->unit != NULL); assert(tmp->timer->unit->name != NULL); Debug_unit(&timer_unit, "discarding timer, unit %s alarm %d data 0x%x", tmp->timer->unit->name, tmp->timer->alarm_time, tmp->timer->data); tmp = timerlist->next; mem_free(&timer_unit, timerlist->timer); mem_free(&timer_unit, timerlist); timerlist = tmp; } } Timer_t * timer_new(const Unit_t *unit) { Timer_t *timer; TimerList_t *tmp; timer = (Timer_t *)mem_alloc(&timer_unit, sizeof(Timer_t)); timer->alarm_time = INT_MAX; timer->unit = unit; tmp = (TimerList_t *)mem_alloc(&timer_unit, sizeof(TimerList_t *)); tmp->timer = timer; tmp->next = timerlist; timerlist = tmp; timer_dump(); return (Timer_t *)timer; } void timer_free(const Unit_t *unit, Timer_t *timer) { TimerList_t *tmp, *prev = NULL; for (tmp = timerlist; tmp != NULL; tmp = tmp->next) { assert(tmp->timer != NULL); if (tmp->timer == timer) { mem_free(&timer_unit, tmp->timer); if (prev != NULL) { prev->next = tmp->next; } else { timerlist = tmp->next; } mem_free(&timer_unit, tmp); return; } prev = tmp; } } /* Delay for the specified period */ void timer_alarm(const Unit_t *unit, Timer_t *timer, unsigned int nsecs, void *data) { assert (timer != NULL); timer->data = data; timer->alarm_time = time(NULL) + nsecs; } /* Acknowledge alarm */ void timer_ack(const Unit_t *unit, Timer_t *timer) { assert (timer != NULL); timer->alarm_time = INT_MAX; } /* Find soonest timer expiration */ Timer_t * timer_find_soonest(const Unit_t *unit) { TimerList_t *tmp; Timer_t *lowest = NULL; for (tmp = timerlist; tmp != NULL; tmp = tmp->next ) { assert(tmp->timer != NULL); if (lowest == NULL || tmp->timer->alarm_time < lowest->alarm_time) { lowest = tmp->timer; } } if (lowest == NULL) { return NULL; } Debug_unit(&timer_unit, "lowest: %d", lowest->alarm_time); return lowest; } /* Handler for signal HUP, restart */ static void hup_handler(int nsig) { Debug_unit(&timer_unit, "Hup"); sig_hup = 1; } /* Handler for signal USR1, status dump */ static void usr1_handler(int nsig) { Debug_unit(&timer_unit, "Usr1"); sig_usr1 = 1; } /* Handler for signal INT, exit */ static void usr2_handler(int nsig) { Debug_unit(&timer_unit, "Int"); sig_usr2 = 1; } /* Handler for signal ALARM, timer expiration */ static void alarm_handler(int nsig) { Debug_unit(&timer_unit, "Alarm"); sig_alarm = 1; } linux-atm-2.5.1/src/lane/timers.h0000644000200100001440000000144407360675443015463 0ustar chasusers/* * Timers and signals wrapper * * $Id: timers.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef TIMERS_H #define TIMERS_H /* System includes needed for types */ #include /* Local includes needed for types */ #include "units.h" /* Type definitions */ typedef struct { const Unit_t *unit; unsigned int alarm_time; void *data; } Timer_t; /* Global function prototypes */ Timer_t *timer_new(const Unit_t *unit); void timer_free(const Unit_t *unit, Timer_t *timer); void timer_alarm(const Unit_t *unit, Timer_t *timer, unsigned int nsecs, void *data); void timer_ack(const Unit_t *unit, Timer_t *timer); Timer_t *timer_find_soonest(const Unit_t *unit); /* Global data */ extern const Unit_t timer_unit; extern volatile int sig_hup, sig_usr1, sig_usr2, sig_alarm; #endif linux-atm-2.5.1/src/lane/units.c0000644000200100001440000000173007360675443015313 0ustar chasusers/* * Unitlist * * $Id: units.c,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include /* Local includes */ #include "units.h" #include "mem.h" #include "lane.h" #include "load.h" #include "dump.h" #include "connect.h" #include "timers.h" #include "events.h" #include "lane_atm.h" /* Type definitions */ /* Local function prototypes */ /* Data */ const Unit_t *unitlist[] = { &dump_unit, &mem_unit, &load_unit, &conn_unit, &main_unit, &timer_unit, &events_unit, &atm_unit, NULL }; const unsigned int num_units = sizeof(unitlist)/sizeof(Unit_t *)-1; /* Functions */ const Unit_t * find_unit(const char *name) { const Unit_t *tmp; unsigned int i; assert(name != NULL); for (i = 0; unitlist[i] != NULL; i++) { tmp = unitlist[i]; assert (tmp->name != NULL); if (strcmp(tmp->name, name) == 0) { return tmp; } } return NULL; } linux-atm-2.5.1/src/lane/units.h0000644000200100001440000000141107360675443015314 0ustar chasusers/* * Unitlist * * $Id: units.h,v 1.2 2001/10/09 22:33:07 paulsch Exp $ * */ #ifndef LANE_UNIT_H #define LANE_UNIT_H /* System includes needed for types */ /* Local includes needed for types */ /* Type definitions */ typedef void (* VoidFunc_t)(void); typedef struct { const char *name; VoidFunc_t init0; VoidFunc_t init1; VoidFunc_t dump; VoidFunc_t release; } Unit_t; /* Global function prototypes */ /* Find unit */ const Unit_t *find_unit(const char *name); /* Global data */ extern const Unit_t *unitlist[]; extern const unsigned int num_units; /* Enumerate units */ #define FOR_ALL_UNITS(unit) for (unit = &unitlist[0]; *unit != NULL; unit++) #define FOR_ALL_UNITS_REV(unit) for (unit = &unitlist[num_units-1]; unit >= &unitlist[0]; unit--) #endif linux-atm-2.5.1/src/lane/Makefile.in0000644000200100001440000005403711304770375016053 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ sbin_PROGRAMS = les$(EXEEXT) bus$(EXEEXT) lecs$(EXEEXT) subdir = src/lane DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in lecs_db.c \ load_lex.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" PROGRAMS = $(sbin_PROGRAMS) am__objects_1 = mem.$(OBJEXT) load.$(OBJEXT) units.$(OBJEXT) \ load_lex.$(OBJEXT) timers.$(OBJEXT) dump.$(OBJEXT) \ lane_atm.$(OBJEXT) events.$(OBJEXT) lane.$(OBJEXT) am_bus_OBJECTS = $(am__objects_1) connect_bus.$(OBJEXT) bus_OBJECTS = $(am_bus_OBJECTS) bus_LDADD = $(LDADD) bus_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_lecs_OBJECTS = lecs_db.$(OBJEXT) lecs_load.$(OBJEXT) lecs.$(OBJEXT) \ ldb.$(OBJEXT) mem_lecs.$(OBJEXT) atm_lecs.$(OBJEXT) lecs_OBJECTS = $(am_lecs_OBJECTS) lecs_LDADD = $(LDADD) lecs_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_les_OBJECTS = $(am__objects_1) packet.$(OBJEXT) connect.$(OBJEXT) \ db.$(OBJEXT) les_OBJECTS = $(am_les_OBJECTS) les_LDADD = $(LDADD) les_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) YLWRAP = $(top_srcdir)/ylwrap SOURCES = $(bus_SOURCES) $(lecs_SOURCES) $(les_SOURCES) DIST_SOURCES = $(bus_SOURCES) $(lecs_SOURCES) $(les_SOURCES) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ LDADD = $(top_builddir)/src/lib/libatm.la LES_BUS_SRCS = mem.c mem.h load.c load.h units.c units.h load_lex.l load_lex.h \ timers.c timers.h dump.c dump.h lane_atm.c lane_atm.h \ events.c events.h lane.c lane.h les_SOURCES = $(LES_BUS_SRCS) packet.c packet.h connect.c connect.h db.c db.h bus_SOURCES = $(LES_BUS_SRCS) connect_bus.c lecs_SOURCES = lecs_db.l lecs_db.h lecs_load.c lecs_load.h lecs.c lecs.h \ ldb.c ldb.h mem_lecs.c mem_lecs.h atm_lecs.c atm_lecs.h man_MANS = les.8 lecs.8 bus.8 EXTRA_DIST = $(man_MANS) COPYRIGHT.TUT USAGE all: all-am .SUFFIXES: .SUFFIXES: .c .l .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/lane/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/lane/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list bus$(EXEEXT): $(bus_OBJECTS) $(bus_DEPENDENCIES) @rm -f bus$(EXEEXT) $(LINK) $(bus_OBJECTS) $(bus_LDADD) $(LIBS) lecs$(EXEEXT): $(lecs_OBJECTS) $(lecs_DEPENDENCIES) @rm -f lecs$(EXEEXT) $(LINK) $(lecs_OBJECTS) $(lecs_LDADD) $(LIBS) les$(EXEEXT): $(les_OBJECTS) $(les_DEPENDENCIES) @rm -f les$(EXEEXT) $(LINK) $(les_OBJECTS) $(les_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atm_lecs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connect_bus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/db.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/events.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lane.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lane_atm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lecs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lecs_db.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lecs_load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_lex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem_lecs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/packet.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/units.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< .l.c: $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man8: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" @list=''; test -n "$(man8dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) installdirs: for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f lecs_db.c -rm -f load_lex.c clean: clean-am clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-sbinPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-sbinPROGRAMS uninstall-man: uninstall-man8 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-sbinPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man8 install-pdf install-pdf-am install-ps \ install-ps-am install-sbinPROGRAMS install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-man uninstall-man8 \ uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/led/0000755000200100001440000000000011304770375013622 5ustar chasuserslinux-atm-2.5.1/src/led/CVS/0000755000200100001440000000000011304767137014257 5ustar chasuserslinux-atm-2.5.1/src/led/CVS/Root0000644000200100001440000000007411304767137015126 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/led/CVS/Repository0000644000200100001440000000002211304767137016353 0ustar chasuserslinux-atm/src/led linux-atm-2.5.1/src/led/CVS/Entries0000644000200100001440000000177611304767137015626 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /COPYRIGHT.TUT/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /address.c/1.2.2.1/Sat Jul 19 22:42:01 2003//TV2_5_1 /address.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /conn.c/1.2.2.4/Sat Dec 11 01:57:11 2004//TV2_5_1 /conn.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /display.c/1.2.2.1/Sat Jul 19 22:42:01 2003//TV2_5_1 /display.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /frame_defs.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /frames.c/1.2.2.3/Mon Apr 18 15:49:01 2005//TV2_5_1 /frames.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /join.c/1.2.2.2/Thu Oct 6 17:27:50 2005//TV2_5_1 /join.h/1.2.2.1/Thu Oct 6 17:27:50 2005//TV2_5_1 /kernel.c/1.2.2.2/Thu Oct 6 17:27:50 2005//TV2_5_1 /kernel.h/1.2.2.1/Thu Oct 6 17:27:50 2005//TV2_5_1 /lec.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /main.c/1.2.2.7.2.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /zeppelin.8/1.2.2.2/Fri May 2 17:35:04 2003//TV2_5_1 D linux-atm-2.5.1/src/led/CVS/Tag0000644000200100001440000000001011304767137014704 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/led/.cvsignore0000644000200100001440000000005210666025263015616 0ustar chasusersMakefile Makefile.in .deps .libs zeppelin linux-atm-2.5.1/src/led/COPYRIGHT.TUT0000644000200100001440000000137607360675443015606 0ustar chasusers/* * Marko Kiiskila carnil@cs.tut.fi * * Tampere University of Technology - Telecommunications Laboratory * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. * */ linux-atm-2.5.1/src/led/Makefile-0.790000644000200100001440000000036007360675443015663 0ustar chasusersLIBS=-latm -latmd OBJS=join.o conn.o main.o address.o frames.o display.o kernel.o BOOTPGMS=zeppelin MAN8=zeppelin.8 CFLAGS_PRIVATE= include ../Rules.make zeppelin:$(OBJS) $(CC) $(LDFLAGS) -o $(BOOTPGMS) $(OBJS) $(LIBD) $(LDLIBS) $(LIBS) linux-atm-2.5.1/src/led/Makefile.am0000644000200100001440000000052607360675443015670 0ustar chasuserssbin_PROGRAMS = zeppelin zeppelin_SOURCES = join.c join.h conn.c conn.h main.c address.c address.h \ frames.c frames.h display.c display.h \ kernel.c kernel.h frame_defs.h lec.h zeppelin_LDADD = $(top_builddir)/src/lib/libatm.la zeppelin_DEPENDENCIES = $(zeppelin_LDADD) man_MANS = zeppelin.8 EXTRA_DIST = $(man_MANS) COPYRIGHT.TUT linux-atm-2.5.1/src/led/address.c0000644000200100001440000000541607706344471015426 0ustar chasusers/* address.c - functions to query ESI and local ATM address from kernel */ /* * Marko Kiiskila carnil@cs.tut.fi * * Copyright (c) 1996 * Tampere University of Technology - Telecommunications Laboratory * All rights reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. * */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "address.h" #define COMPONENT "address.c" /* Gets End System Identifier (MAC address) from kernel * Returns < 0 for error */ int addr_getesi(unsigned char *mac_addr, int phys_itf) { int fd, retval; struct atmif_sioc req; fd = socket(PF_ATMSVC, SOCK_DGRAM, 0); if (fd < 0) { diag(COMPONENT, DIAG_ERROR, "addr_getesi: socket: %s", strerror(errno)); return -1; } req.number = phys_itf; req.arg = mac_addr; req.length = ESI_LEN; retval = ioctl(fd, ATM_GETESI, &req); if (retval < 0) diag(COMPONENT, DIAG_ERROR, "ioctl ATM_GETESI: %s", strerror(errno)); close(fd); return retval; } /* Gets one of our ATM addresses from kernel. Useful for binding listen sockets. * Returns < 0 for error */ #define MAX_LOCAL_ADDRS 32 int get_listenaddr(unsigned char *atm_addr, int phys_itf) { int fd, retval; struct atmif_sioc req; struct sockaddr_atmsvc listen_addr[MAX_LOCAL_ADDRS]; fd = socket(PF_ATMSVC, SOCK_DGRAM, 0); if (fd < 0) { diag(COMPONENT, DIAG_ERROR, "get_listenaddr: socket: %s", strerror(errno)); return -1; } req.number = phys_itf; req.arg = listen_addr; req.length = sizeof(listen_addr); retval = ioctl(fd, ATM_GETADDR, &req); if (retval < 0) diag(COMPONENT, DIAG_ERROR, "ioctl ATM_GETADDR: %s", strerror(errno)); close(fd); memcpy(atm_addr, listen_addr[0].sas_addr.prv, ATM_ESA_LEN); return retval; } linux-atm-2.5.1/src/led/address.h0000644000200100001440000000212307360675443015425 0ustar chasusers/* * Marko Kiiskila carnil@cs.tut.fi * * Tampere University of Technology - Telecommunications Laboratory * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. * */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #ifndef ADDRESS_H #define ADDRESS_H /* Get ESI for the physical ATM interface */ int addr_getesi(unsigned char *mac_addr, int phys_addr); /* Get the ATM address for the physical ATM interface */ int get_listenaddr(unsigned char *atm_addr, int phys_addr); #endif /* ADDRESS_H */ linux-atm-2.5.1/src/led/conn.c0000644000200100001440000007241510156451767014741 0ustar chasusers/* conn.c - functions for handling SVCs, create, accept, send, etc. */ /* * Marko Kiiskila carnil@cs.tut.fi * * Copyright (c) 1996 * Tampere University of Technology - Telecommunications Laboratory * All rights reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. * */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include "conn.h" #include "display.h" #include "lec.h" #include "frames.h" #include "kernel.h" #define COMPONENT "conn.c" /* status */ #define CONNECTED 42 /* Operational socket */ #define CONNECTING 43 /* Non-blocking socket, not yet connected */ /* type */ #define WEMADE 7 #define THEYMADE 8 #define LISTENING 9 #define KERNEL_SOCK 10 static Conn_t *connlist = NULL; /* Local protos */ static void list_remove_conn(Conn_t *conn); static Conn_t *list_add_conn(unsigned char *dest_atm_addr); static Conn_t *conn_already_exists(unsigned char *atm_addr, Conn_t *current); static const char *get_type_string(int type); static int maxmtu2maxsdu(uint8_t mtu); static uint16_t conn_type2codepoint(int conn_type); static void delete_addr(unsigned char *atm_addr) { struct atmlec_msg msg; msg.type = l_addr_delete; memcpy(msg.content.normal.atm_addr, atm_addr, ATM_ESA_LEN); msg_to_kernel(&msg, sizeof(struct atmlec_msg)); return; } /* Checks if connection to atm_addr already exists. Does not * check against current though. * Returns NULL for no connection, or Conn_t of existing connection. */ static Conn_t *conn_already_exists(unsigned char *atm_addr, Conn_t *current) { Conn_t *conn; conn = connlist; while (conn) { if (conn != current && conn->type != LISTENING && conn->type != KERNEL_SOCK) { if (memcmp(conn->atm_address, atm_addr, ATM_ESA_LEN) == 0) return conn; } conn = conn->next; } return NULL; } /* Initializes and fills in *sap and *qos according to Blli * code point value specified in conn_type. */ void init_conn_params(struct atm_sap *sap, struct atm_qos *qos, uint16_t conn_type) { unsigned int bllicode; int i, sdu; char qos_text[MAX_ATM_QOS_LEN + 1]; diag(COMPONENT, DIAG_DEBUG, "init_conn_params, conn_type %x", conn_type); memset(qos, 0, sizeof(struct atm_qos)); memset(sap, 0, sizeof(struct atm_sap)); qos->aal = ATM_AAL5; /* Set the forward and backward Max CPCS-SDU Size */ switch(conn_type) { case CONTROL_CONN: qos->rxtp.max_sdu = 1516; qos->txtp.max_sdu = 1516; break; case DATA_DIRECT_CONN: case MCAST_CONN: sdu = maxmtu2maxsdu(lec_params.c3_max_frame_size); qos->rxtp.max_sdu = sdu; qos->txtp.max_sdu = sdu; break; default: diag(COMPONENT, DIAG_ERROR, "unknown conn_type %x", conn_type); break; } /* ATM User Cell Rate/ATM Traffic Descriptor. */ qos->txtp.traffic_class = ATM_UBR; qos->rxtp.traffic_class = ATM_UBR; if (get_verbosity(COMPONENT) >= DIAG_DEBUG) { if (qos2text(qos_text, sizeof(qos_text), qos, 0) < 0) sprintf(qos_text, ""); diag(COMPONENT, DIAG_DEBUG, "init_conn_params, QoS '%s'", qos_text); } /* No Broadband High Layer Information in LANE. */ sap->bhli.hl_type = ATM_HL_NONE; /* Broadband Lower Layer Information. */ sap->blli[0].l3_proto = ATM_L3_TR9577; sap->blli[0].l3.tr9577.ipi = NLPID_IEEE802_1_SNAP; sap->blli[0].l3.tr9577.snap[0] = 0x00; sap->blli[0].l3.tr9577.snap[1] = 0xa0; sap->blli[0].l3.tr9577.snap[2] = 0x3e; bllicode = conn_type2codepoint(conn_type); sap->blli[0].l3.tr9577.snap[3] = (unsigned char)(0xff&(bllicode>>8)); sap->blli[0].l3.tr9577.snap[4] = (unsigned char)(0xff&bllicode); if (get_verbosity(COMPONENT) == DIAG_DEBUG) { for(i=0; i < 5; i++) { diag(COMPONENT, DIAG_DEBUG, "snap[%d] = 0x%2.2x", i, sap->blli[0].l3.tr9577.snap[i]); } } return; } /* Returns != 0 if blli indicates Data Direct * connection */ static int is_data_direct(struct atm_blli *blli) { return (blli->l3.tr9577.snap[4] == DATA_DIRECT_8023 || blli->l3.tr9577.snap[4] == DATA_DIRECT_8025); } /* Creates a socket with the specified parameters. * If listen_addr is non NULL binds to it. * Returns < 0 for error or new socket descriptor. */ static int get_socket(struct sockaddr_atmsvc *listen_addr, struct atm_sap *sap, struct atm_qos *qos) { int s, ret; s = socket(PF_ATMSVC, SOCK_DGRAM, 0); if (s < 0) { diag(COMPONENT, DIAG_ERROR, "socket creation failure: %s", strerror(errno)); return -1; } diag(COMPONENT, DIAG_DEBUG, "get_socket: got fd %d", s); if (setsockopt(s, SOL_ATM, SO_ATMQOS, qos, sizeof(struct atm_qos)) < 0) { diag(COMPONENT, DIAG_ERROR, "get_socket: setsockopt SO_ATMQOS: %s", strerror(errno)); close(s); return -1; } if (setsockopt(s, SOL_ATM, SO_ATMSAP, sap, sizeof(struct atm_sap)) < 0) { diag(COMPONENT, DIAG_ERROR, "setup_svc setsockop(SO_ATMSAP)"); close(s); return -1; } /* Bind the socket to our local address */ if (listen_addr == NULL) return s; ret = bind(s, (struct sockaddr *)listen_addr, sizeof(struct sockaddr_atmsvc)); if (ret < 0) { diag(COMPONENT, DIAG_ERROR, "bind error: %s", strerror(errno)); close(s); return -1; } return s; } /* Does an active open to dst_addr using pre-filled * parameters in sap and qos. * If listen_addr is non NULL, binds to it. * Data direct SVCs are non-blocking, others block * Returns NULL for error or new connections. */ Conn_t *setup_svc(struct sockaddr_atmsvc *dst_addr, struct sockaddr_atmsvc *listen_addr, struct atm_sap *sap, struct atm_qos *qos) { Conn_t *conn; int s, ret; char buff[MAX_ATM_ADDR_LEN+1]; diag(COMPONENT, DIAG_DEBUG, "Outgoing call setup"); dst_addr->sas_family = AF_ATMSVC; listen_addr->sas_family = AF_ATMSVC; switch(sap->blli[0].l3.tr9577.snap[4]) { /* Kludge. Eh? */ case CONTROL_CONN: diag(COMPONENT, DIAG_DEBUG, "LE Control SVC setup"); break; case DATA_DIRECT_8023: diag(COMPONENT, DIAG_DEBUG, "Data direct 802.3"); break; case DATA_DIRECT_8025: diag(COMPONENT, DIAG_DEBUG, "Data direct 802.5"); break; case MCAST_CONN_8023: diag(COMPONENT, DIAG_DEBUG, "Multicast 802.3"); break; case MCAST_CONN_8025: diag(COMPONENT, DIAG_DEBUG, "Multicast 802.5"); break; default: diag(COMPONENT, DIAG_ERROR, "Unknown codepoint in svc setup"); } s = get_socket(listen_addr, sap, qos); if (s < 0) return NULL; if (atm2text(buff, sizeof(buff), (struct sockaddr *)dst_addr, A2T_PRETTY | A2T_NAME | A2T_LOCAL) < 0) sprintf(buff, ""); diag(COMPONENT, DIAG_DEBUG, "Call to %s", buff); /* Make data direct SVCs non-blocking */ if (is_data_direct(&sap->blli[0])) { ret = fcntl(s, F_GETFL); if (ret < 0) { diag(COMPONENT, DIAG_ERROR, "fcntl(s, F_GETFL)"); close(s); } else if (fcntl(s, F_SETFL, ret|O_NONBLOCK) < 0) { diag(COMPONENT, DIAG_ERROR, "fcntl(s, F_SETFL, x|O_NONBLOCK)"); close(s); return NULL; } } ret = connect(s, (struct sockaddr *)dst_addr, sizeof(struct sockaddr_atmsvc)); if (ret < 0 && errno != EINPROGRESS) { diag(COMPONENT, DIAG_ERROR, "connect error: %s", strerror(errno)); close(s); return NULL; } conn = list_add_conn(dst_addr->sas_addr.prv); diag(COMPONENT, DIAG_DEBUG, "Conn:%p", conn); if (conn == NULL) { close(s); return NULL; } conn->fd = s; conn->type = WEMADE; conn->codepoint = sap->blli[0].l3.tr9577.snap[4]; if (is_data_direct(&sap->blli[0])) conn->status = CONNECTING; else conn->status = CONNECTED; return conn; } /* Creates listen socket for incoming data direct connections. * Only for data direct, not for Control or Multicast listen sockets. * Returns < 0 for error */ int create_data_listen(void) { struct atm_sap sap; struct atm_qos qos; struct sockaddr_atmsvc addr; memset(&addr, 0, sizeof(struct sockaddr_atmsvc)); memcpy(addr.sas_addr.prv, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); addr.sas_family = AF_ATMSVC; init_conn_params(&sap, &qos, DATA_DIRECT_CONN); lec_params.data_listen = create_listensocket(&addr, &sap, &qos); if (lec_params.data_listen == NULL) { diag(COMPONENT, DIAG_FATAL, "Could not create listen socket for incoming Data Direct VCCs"); return -1; } return 0; } /* Opens a Multicast or non-blocking Data Direct VCC to atm_addr. * Not for Control connections. * Returns < 0 for error */ int create_data_svc(unsigned char *atm_addr, int codepoint) { struct atm_sap sap; struct atm_qos qos; struct sockaddr_atmsvc my_addr, dst_addr; Conn_t *conn; memset(&my_addr, 0, sizeof(struct sockaddr_atmsvc)); memcpy(my_addr.sas_addr.prv, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); memset(&dst_addr, 0, sizeof(struct sockaddr_atmsvc)); memcpy(dst_addr.sas_addr.prv, atm_addr, ATM_ESA_LEN); my_addr.sas_family = dst_addr.sas_family = AF_ATMSVC; init_conn_params(&sap, &qos, codepoint); conn = setup_svc(&dst_addr, &my_addr, &sap, &qos); if (conn == NULL) { diag(COMPONENT, DIAG_ERROR, "Could not create Data Direct VCC"); delete_addr(dst_addr.sas_addr.prv); return -1; } return 0; } /* Creates a listen socket with parameters specified with * arguments. * Returns NULL for error or Conn_t for new listen socket. */ Conn_t *create_listensocket(struct sockaddr_atmsvc *listen_addr, struct atm_sap *sap, struct atm_qos *qos) { int fd, ret; Conn_t *conn; diag(COMPONENT, DIAG_DEBUG, "conn_create_listensocket"); fd = get_socket(listen_addr, sap, qos); if (fd < 0) return NULL; ret = listen(fd, 16); if (ret != 0) { diag(COMPONENT, DIAG_DEBUG, "Listen failed: %s", strerror(errno)); close(fd); return NULL; } conn = list_add_conn(NULL); if (conn == NULL) { diag(COMPONENT, DIAG_ERROR, "List_add_conn failed"); close(fd); return NULL; } conn->type = LISTENING; conn->fd = fd; diag(COMPONENT, DIAG_DEBUG, "Listen socket created blli:%2.2x %2.2x fd: %d", sap->blli[0].l3.tr9577.snap[3], sap->blli[0].l3.tr9577.snap[4], conn->fd); return conn; } /* Accepts a new connection from listen socket in conn. * Returns NULL for error */ Conn_t *accept_conn(Conn_t *conn) { Conn_t *new; struct sockaddr_atmsvc addr; size_t len; int fd; char buff[MAX_ATM_ADDR_LEN+1]; diag(COMPONENT, DIAG_DEBUG, "Accepting connection on fd %d", conn->fd); len = sizeof(addr); fd = accept(conn->fd, (struct sockaddr *)&addr, &len); diag(COMPONENT, DIAG_DEBUG, "accept returned %d", fd); if (fd < 0) { diag(COMPONENT, DIAG_ERROR, "accept: %s", strerror(errno)); return NULL; } if (atm2text(buff, sizeof(buff), (struct sockaddr *)&addr, A2T_PRETTY | A2T_NAME | A2T_LOCAL) < 0) sprintf(buff, ""); diag(COMPONENT, DIAG_DEBUG, "Call from %s", buff); new = list_add_conn(addr.sas_addr.prv); if (new == NULL) return NULL; new->fd = fd; new->status = CONNECTED; new->type = THEYMADE; if (conn == lec_params.ctrl_listen) new->codepoint = CONTROL_CONN; if (conn == lec_params.mcast_listen) new->codepoint = MCAST_CONN; if (conn == lec_params.data_listen) new->codepoint = DATA_DIRECT_CONN; return new; } /* Close all connections, except the kernel socket. */ void close_connections(void) { Conn_t *conn, *next; for(conn = connlist; conn; conn = next) { next = conn->next; if (conn->type != KERNEL_SOCK) { diag(COMPONENT, DIAG_DEBUG, "Destroying:%p fd:%d type:%d", conn, conn->fd, conn->type); close(conn->fd); list_remove_conn(conn); free(conn); } } return; } /* Closes a connection and checks its importance. * Important connections are kernel socket, LES connections, * BUS Default Multicast Send VCC, last Multicast Forward VCC from Bus * and any of the listen sockets. * Returns < 0 for important connection. */ int close_connection(Conn_t *conn) { int bad = 0; Conn_t *mcast; diag(COMPONENT, DIAG_DEBUG, "close_connection %p", conn); if (conn == lec_params.kernel || conn == lec_params.ctrl_direct || conn == lec_params.ctrl_dist || conn == lec_params.mcast_send || conn == lec_params.mcast_listen || conn == lec_params.data_listen) bad = -1; else { bad = -1; for (mcast = connlist; mcast; mcast = mcast->next) if (mcast != conn && mcast->type == THEYMADE && mcast->codepoint == MCAST_CONN) bad = 0; } close(conn->fd); list_remove_conn(conn); free(conn); return bad; } /* Accepts a new incoming Data Direct or Multicast Forward connection. * Control connections (LECS/LES) are accepted during configuration/join. * Returns < 0 for serious error such as broken listen socket. */ static int handle_accept(Conn_t *conn) { Conn_t *new, *existing = NULL; struct atmlec_ioc ioc; new = accept_conn(conn); if (new == NULL) return -1; if (conn == lec_params.mcast_listen) { diag(COMPONENT, DIAG_DEBUG, "Multicast Forward VCC accepted"); ioc.receive = 2; } else { diag(COMPONENT, DIAG_DEBUG, "Data Direct VCC accepted"); ioc.receive = 0; if ((existing = conn_already_exists(new->atm_address, new)) && /* is calling address > called address */ (memcmp(new->atm_address, lec_params.c1n_my_atm_addr, ATM_ESA_LEN) > 0)) { diag(COMPONENT, DIAG_DEBUG, "Using it only to receive, spec 8.1.13"); ioc.receive = 1; existing = NULL; } } memcpy(ioc.atm_addr, new->atm_address, ATM_ESA_LEN); ioc.dev_num = lec_params.itf_num; diag(COMPONENT, DIAG_DEBUG, "Attaching a new VCC, fd %d", new->fd); if (ioctl(new->fd, ATMLEC_DATA, &ioc) < 0) { diag(COMPONENT, DIAG_ERROR, "VCC attach failed: ioctl: %s", strerror(errno)); return -1; } if (existing && existing->status == CONNECTED) { diag(COMPONENT, DIAG_DEBUG, "Closing old data direct, fd %d", existing->fd); close_connection(existing); } return 0; } /* Reads a LE control frame from conn, usually Data Direct or * Multicast Forward connection. Calls the incoming packet * handler function. * Returns < 0 for serious error such as broken LES connection */ static int handle_data(Conn_t *conn) { char buff[MAX_CTRL_FRAME]; int retval; retval = recv_frame(conn, buff, sizeof(buff)); if (retval < 0) { diag(COMPONENT, DIAG_ERROR, "handle_data: read: %s", strerror(errno)); return (close_connection(conn)); } if (retval == 0) { diag(COMPONENT, DIAG_DEBUG, "fd %d, Data or Multicast VCC closed", conn->fd); return (close_connection(conn)); } return handle_frame(conn, buff, retval); } /* Checks connections in *fds. The only allowed sockets * in *fds are listen sockets, data direct and control * sockets. * Returns < 0 for serious error such as broken LES connection */ int check_connections(fd_set *fds) { Conn_t *conn, *next; conn = connlist; while (conn != NULL) { next = conn->next; if (!FD_ISSET(conn->fd, fds)) { conn = next; continue; } switch (conn->type) { case LISTENING: if (handle_accept(conn) < 0) return -1; break; case WEMADE: case THEYMADE: if (handle_data(conn) < 0) return -1; break; default: diag(COMPONENT, DIAG_ERROR, "check_connections: bad_type '%s'", get_type_string(conn->type)); break; } conn = next; } return 0; } /* Completes a non-blocking connect. * Returns < 0 for serious error */ static int handle_connect(Conn_t *conn) { int retval; struct sockaddr_atmsvc dummy; struct atmlec_msg msg; struct atmlec_ioc ioc; diag(COMPONENT, DIAG_DEBUG, "handle_connect: completing fd %d", conn->fd); /* this seems to be common method in Linux-ATM * making sure that nonblocking connect was * completed successfully */ conn->status = CONNECTED; retval = connect(conn->fd, (struct sockaddr *)&dummy, sizeof(struct sockaddr_atmsvc)); if (retval < 0) { diag(COMPONENT, DIAG_DEBUG, "handle_connect: connect: %s", strerror(errno)); delete_addr(conn->atm_address); close_connection(conn); return 0; } memcpy(ioc.atm_addr, conn->atm_address, ATM_ESA_LEN); ioc.dev_num = lec_params.itf_num; ioc.receive = 0; diag(COMPONENT, DIAG_DEBUG, "Attaching a new active VCC, fd %d", conn->fd); if (conn_already_exists(conn->atm_address, conn) && /* is calling address > called address */ memcmp(lec_params.c1n_my_atm_addr, conn->atm_address, ATM_ESA_LEN) > 0) { diag(COMPONENT, DIAG_DEBUG, "Receive only, spec 8.1.13 -- Closing"); close_connection(conn); return 0; } if (ioctl(conn->fd, ATMLEC_DATA, &ioc) < 0) { diag(COMPONENT, DIAG_ERROR, "VCC attach failed: ioctl: %s", strerror(errno)); return -1; } send_ready_ind(conn); memset(&msg, 0, sizeof(struct atmlec_msg)); msg.type = l_flush_tran_id; memcpy(msg.content.normal.atm_addr, conn->atm_address, ATM_ESA_LEN); msg.content.normal.flag = send_flush_req(conn); msg_to_kernel(&msg, sizeof(struct atmlec_msg)); return 0; } /* Complete non-blocking connections in *fds. * Returns < 0 for serious error (problems with kernel). */ int complete_connections(fd_set *fds) { Conn_t *conn, *next; int retval; conn = connlist; while (conn) { next = conn->next; if (FD_ISSET(conn->fd, fds)) { retval = handle_connect(conn); if (retval < 0) return -1; } conn = next; } return 0; } /* Send a LE control frame using *conn. * Returns < 0 for serious error */ int send_frame(Conn_t *conn, void *frame, int length) { struct frame_hdr *hdr; int ret; diag(COMPONENT, DIAG_DEBUG, "send_frame: fd:%d len:%ld", conn->fd, length); hdr = (struct frame_hdr *)frame; if (hdr->opcode == htons(READY_QUERY) || hdr->opcode == htons(READY_IND)) diag(COMPONENT, DIAG_DEBUG, "%s", opcode2text(hdr->opcode)); else display_frame(frame); ret = write(conn->fd, frame, length); if (ret < 0) { diag(COMPONENT, DIAG_ERROR, "send_frame: write: %s", strerror(errno)); return -1; } return ret; } /* Receive a LE control frame from *conn. * Returns < 0 for serious error. */ int recv_frame(Conn_t *conn, void *buff, int length) { int ret; diag(COMPONENT, DIAG_DEBUG, "recv_frame: fd:%d", conn->fd); ret = read(conn->fd, buff, length); if (ret < 0) { diag(COMPONENT, DIAG_ERROR, "Read failed: %s", strerror(errno)); return -1; } #if 0 diag(COMPONENT, DIAG_DEBUG, "recv_frame: read %d bytes", ret); if (get_verbosity(COMPONENT) >= DIAG_DEBUG) { int i; for (i = 0; i < 11; i++) diag(COMPONENT, DIAG_DEBUG, "0x%2x", ((unsigned char *)buff)[i]); } #endif return ret; } /* * LANE2: 5.2.1.4 and others, sleep random time before trying to reconnect */ void random_delay(void) { struct timeval tv; int millis, interval; srand(time(NULL)); interval = lec_params.c38_max_reconfig_delay - lec_params.c37_min_reconfig_delay; millis = (rand() % interval) + lec_params.c37_min_reconfig_delay; tv.tv_sec = (millis - (millis % 1000)) / 1000; tv.tv_usec = (millis % 1000) * 1000; diag(COMPONENT, DIAG_DEBUG, "random_delay: sleeping %d.%d seconds", tv.tv_sec, tv.tv_usec); (void)select(0, NULL, NULL, NULL, &tv); return; } /* Collect already connected sockets in *fds */ void conn_get_fds(fd_set *fds) { Conn_t *conn; diag(COMPONENT, DIAG_DEBUG, "collecting ready fds "); conn = connlist; while (conn) { if (conn->status != CONNECTING) { FD_SET(conn->fd, fds); diag(COMPONENT, DIAG_DEBUG, "%d type %s", conn->fd, get_type_string(conn->type)); } conn = conn->next; } return; } /* Collect non-blocking connecting sockets in *fds */ void conn_get_connecting_fds(fd_set *fds) { Conn_t *conn; diag(COMPONENT, DIAG_DEBUG, "collecting connecting fds "); conn = connlist; while (conn) { if (conn->status == CONNECTING) { FD_SET(conn->fd, fds); diag(COMPONENT, DIAG_DEBUG, "%d", conn->fd); } conn = conn->next; } } /* Creates Conn_t for fd and marks it as kernel socket * Returns < 0 for error */ int conn_set_kernel_socket(int fd) { Conn_t *conn; conn = list_add_conn(NULL); if (conn == NULL) { diag(COMPONENT, DIAG_ERROR, "conn_set_kernel_socket: list_add_conn failed"); return -1; } conn->type = KERNEL_SOCK; conn->status = CONNECTED; conn->fd = fd; lec_params.kernel = conn; return fd; } /* Creates new Conn_t object and allocates memory for it. * atm_addr should be the ATM address of the other end * or NULL if not applicable */ static Conn_t *list_add_conn(unsigned char *atm_addr) { Conn_t *conn; conn = (Conn_t *)malloc(sizeof(Conn_t)); if (!conn) return NULL; memset(conn, 0, sizeof(Conn_t)); if (atm_addr) memcpy(conn->atm_address, atm_addr, ATM_ESA_LEN); conn->next = connlist; conn->previous = NULL; if (connlist) connlist->previous = conn; connlist = conn; diag(COMPONENT, DIAG_DEBUG, "Added conn:%p", conn); return conn; } /* Helper for close_connection and close_connections */ static void list_remove_conn(Conn_t *conn) { if (conn->next == NULL && conn->previous == NULL && connlist != conn) return; diag(COMPONENT, DIAG_DEBUG, "Removing conn:%p fd:%d previous:%p next:%p ", conn, conn->fd, conn->previous, conn->next); if (conn->previous) diag(COMPONENT, DIAG_DEBUG, "Previous:%p, fd:%d, next:%p, previous:%p ", conn->previous, conn->previous->fd, conn->previous->next, conn->previous->previous); if (conn->next) diag(COMPONENT, DIAG_DEBUG, "Next:%p, fd:%d next:%p, previous:%p ", conn->next, conn->next->fd, conn->next->next, conn->next->previous); if (conn->previous) { conn->previous->next = conn->next; } else /* First in line */ connlist = conn->next; if (conn->next) conn->next->previous = conn->previous; diag(COMPONENT, DIAG_DEBUG, "Connlist: %p", connlist); conn->next=conn->previous= NULL; return; } static const char *get_type_string(int type) { switch(type) { case WEMADE: return "WEMADE"; break; case THEYMADE: return "THEYMADE"; break; case LISTENING: return "LISTENING"; break; case KERNEL_SOCK: return "KERNEL_SOCK"; break; default: break; } return "UNKNOWN"; } static int maxmtu2maxsdu(uint8_t mtu) { int sdu; switch (mtu) { case MTU_1516: sdu = 1516; break; case MTU_1580: /* LANE2: MTU can be 1580 too (IEEE 802.1p/Q) */ sdu = 1580; break; case MTU_4544: sdu = 4544; break; case MTU_9234: sdu = 9234; break; case MTU_18190: sdu = 18190; break; default: sdu = 1516; break; } return sdu; } int maxmtu2itfmtu(uint8_t mtu) { int sdu; switch (mtu) { case MTU_1516: sdu = 1500; break; case MTU_1580: /* LANE2: MTU can be 1580 too (IEEE 802.1p/Q) */ sdu = 1500; break; case MTU_4544: sdu = 4528; break; case MTU_9234: sdu = 9218; break; case MTU_18190: sdu = 18174; break; default: sdu = 1500; break; } return sdu; } /* Convert a type of connection (CONTROL_CONN, DATA_DIRECT and MCAST_CONN) * to a BLLI codepoint which depends on C2 LAN Type. */ static uint16_t conn_type2codepoint(int conn_type) { if (conn_type == CONTROL_CONN) return CONTROL_CONN; if (conn_type == DATA_DIRECT_CONN) { if (lec_params.c2_lan_type == LAN_TYPE_8023 || lec_params.c2_lan_type == LAN_TYPE_UNSPEC) return DATA_DIRECT_8023; else if (lec_params.c2_lan_type == LAN_TYPE_8025) return DATA_DIRECT_8025; diag(COMPONENT, DIAG_ERROR, "conn_type2codepoint, bad lan_type %d", lec_params.c2_lan_type); return DATA_DIRECT_8023; } else if (conn_type == MCAST_CONN) { if (lec_params.c2_lan_type == LAN_TYPE_8023 || lec_params.c2_lan_type == LAN_TYPE_UNSPEC) return MCAST_CONN_8023; else if (lec_params.c2_lan_type == LAN_TYPE_8025) return MCAST_CONN_8025; diag(COMPONENT, DIAG_ERROR, "conn_type2codepoint, bad lan_type %d", lec_params.c2_lan_type); return MCAST_CONN_8023; } diag(COMPONENT, DIAG_ERROR, "conn_type2codepoint, unknown type %d", conn_type); return DATA_DIRECT_8023; } linux-atm-2.5.1/src/led/conn.h0000644000200100001440000000544607360675443014750 0ustar chasusers/* * Marko Kiiskila carnil@cs.tut.fi * * Copyright (c) 1996 * Tampere University of Technology - Telecommunications Laboratory * All rights reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. * */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #ifndef CONN_H #define CONN_H typedef struct _conn_t_ { int fd; /* Socket connected to this connection */ int status; /* Connection status */ int type; /* We made, they made, listen socket */ int codepoint; /* One of the below, MCAST_CONN etc. */ unsigned char atm_address[ATM_ESA_LEN]; /* Destination address, not in listen or kernel sockets */ struct _conn_t_ *next; struct _conn_t_ *previous; } Conn_t; void close_connections(void); void init_conn_params(struct atm_sap *sap, struct atm_qos *qos, uint16_t blli_codepoint); int create_data_svc(unsigned char *atm_addr, int codepoint); Conn_t *setup_svc(struct sockaddr_atmsvc *dst_addr, struct sockaddr_atmsvc *listen_addr, struct atm_sap *sap, struct atm_qos *qos); int create_data_listen(void); Conn_t *create_listensocket(struct sockaddr_atmsvc *listen_addr, struct atm_sap *sap, struct atm_qos *qos); Conn_t *accept_conn(Conn_t *conn); int close_connection(Conn_t *conn); int check_connections(fd_set *fds); int complete_connections(fd_set *fds); int send_frame(Conn_t *conn, void *frame, int length); int recv_frame(Conn_t *conn, void *buff, int length); void conn_get_fds(fd_set *fds); void conn_get_connecting_fds(fd_set *fds); int conn_set_kernel_socket(int fd); void random_delay(void); int maxmtu2itfmtu(uint8_t mtu); /* * Connection types for BLLI codepoints. */ #define CONTROL_CONN 1 #define DATA_DIRECT_CONN 2 #define MCAST_CONN 4 #define DATA_DIRECT_8023 2 #define DATA_DIRECT_8025 3 #define MCAST_CONN_8023 4 #define MCAST_CONN_8025 5 /* * MTU sizes */ #define MTU_UNSPEC 0 #define MTU_1516 1 #define MTU_1580 5 /* LANEv2 */ #define MTU_4544 2 #define MTU_9234 3 #define MTU_18190 4 #endif /* CONN_H */ linux-atm-2.5.1/src/led/display.c0000644000200100001440000002312107706344471015437 0ustar chasusers/* display.c - display frames, addresses, opcodes, etc. */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #if HAVE_CONFIG_H #include #endif #include #include #include "display.h" #include "frame_defs.h" #define COMPONENT "display.c" #define MAX_TEXT 1024 /* Buffer size for displaying LE control frames */ static int my_atm2text(unsigned char *atm_addr, char *dest); static const char *lan_dst2text(struct lan_dst *dst); static void display_ready(void *buff); /* Prints out more or less human readable summary of * LE Control Frame pointed by frame. */ void display_frame(void *frame) { struct frame_hdr *hdr; struct ctrl_frame *f; char text[MAX_TEXT]; char *p; hdr = (struct frame_hdr *)frame; if (hdr->opcode == htons(READY_QUERY) || hdr->opcode == htons(READY_IND)) display_ready(frame); p = text; p += sprintf(p, "\n"); p += sprintf(p, "Marker 0x%x\n", ntohs(hdr->marker)); p += sprintf(p, "Protocol 0x%x\n", hdr->protocol); p += sprintf(p, "Version 0x%x\n", hdr->version); p += sprintf(p, "Op-Code 0x%x (%s)\n", ntohs(hdr->opcode), opcode2text(hdr->opcode)); p += sprintf(p, "Status %d (%s)\n", hdr->status, status2text(hdr->status)); p += sprintf(p, "Trans-ID %d\n", ntohl(hdr->tran_id)); p += sprintf(p, "Req Lec-ID %d\n", ntohs(hdr->lec_id)); p += sprintf(p, "Flags 0x%x", ntohs(hdr->flags)); if (hdr->flags & htons(REMOTE_ADDRESS)) p+= sprintf(p, " 'Remote Address'"); if (hdr->flags & htons(V2_CAPABLE)) p+= sprintf(p, " 'V2 Capable'"); if (hdr->flags & htons(V2_REQUIRED)) p+= sprintf(p, " 'V2 Required'"); if (hdr->flags & htons(PROXY_FLAG)) p+= sprintf(p, " 'Proxy Flag'"); if (hdr->flags & htons(TOPO_CHANGE)) p+= sprintf(p, " 'Topology Change'"); p += sprintf(p, "\n"); f = (struct ctrl_frame *)frame; p += sprintf(p, "Source Lan 0x%x (%s)\n", ntohs(f->src_lan_dst.tag), lan_dst2text(&f->src_lan_dst)); p += sprintf(p, "Target Lan 0x%x (%s)\n", ntohs(f->target_lan_dst.tag), lan_dst2text(&f->target_lan_dst)); p += sprintf(p, "Source ATM "); p += my_atm2text(f->src_atm_addr, p); p += sprintf(p, "\n"); p += sprintf(p, "Lan type 0x%x\n", f->lan_type); p += sprintf(p, "Lan MTU 0x%x\n", f->max_frame_size); p += sprintf(p, "# of TLVs 0x%x\n", f->num_tlvs); p += sprintf(p, "Elan Name size 0x%x\n", f->elan_name_size); p += sprintf(p, "Target ATM "); p += my_atm2text(f->target_atm_addr, p); p += sprintf(p, "\n"); p += sprintf(p, "Elan Name ("); memcpy(p, f->elan_name, f->elan_name_size); p += f->elan_name_size; p += sprintf(p, ")\n"); *p = '\0'; diag(COMPONENT, DIAG_DEBUG, "%s", text); return; } static void display_ready(void *ready_frame) { diag(COMPONENT, DIAG_DEBUG, "ready frame"); return; } /* Poor man's atm2text */ static int my_atm2text(unsigned char *atm_addr, char *dest) { int i, len; len = 0; for (i = 0; i < ATM_ESA_LEN; i++) len += sprintf(dest + len, "%2.2x ", *(atm_addr + i)); return len; } static const char *lan_dst2text(struct lan_dst *dst) { static char text[42]; /* big enough for text + MAC */ char *p = text; switch(ntohs(dst->tag)) { case LAN_DST_NOT_PRESENT: sprintf(text, "Not present"); break; case LAN_DST_MAC_ADDR: p += sprintf(p, "MAC address"); p += sprintf(p, " "); mac2text(p, dst->mac); break; case LAN_DST_ROUTE_DESC: p += sprintf(p, "Route Descriptor"); p += sprintf(p, " "); mac2text(p, dst->mac); break; default: sprintf(text, ""); break; } return text; } void mac2text(char *buff, unsigned char *mac_addr) { sprintf(buff, "%02x-%02x-%02x-%02x-%02x-%02x", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]); return; } const char *opcode2text(uint16_t opcode) { switch (ntohs(opcode)) { case LE_CONFIG_REQ: return "LE_CONFIG_REQUEST"; break; case LE_CONFIG_RSP: return "LE_CONFIG_RESPONSE"; break; case LE_JOIN_REQ: return "LE_JOIN_REQUEST"; break; case LE_JOIN_RSP: return "LE_JOIN_RESPONSE"; break; case LE_REG_REQ: return "LE_REGISTER_REQUEST"; break; case LE_REG_RSP: return "LE_REGISTER_RESPONSE"; break; case LE_ARP_REQ: return "LE_ARP_REQUEST"; break; case LE_ARP_RSP: return "LE_ARP_RESPONSE"; break; case LE_FLUSH_REQ: return "LE_FLUSH_REQUEST"; break; case LE_FLUSH_RSP: return "LE_FLUSH_RESPONSE"; break; case READY_QUERY: return "READY_QUERY"; break; case READY_IND: return "READY_INDICATION"; break; case LE_TOPO_REQ: return "LE_TOPOLOGY_REQUEST"; break; case LE_NARP_REQ: return "LE_NARP_REQUEST"; break; default: break; } return ""; } const char *tlv2text(uint32_t type) { switch (type) { case MAX_CUM_CTRL_TIMEOUT: return "Max-Cumulative-Control-Time-out"; break; case MAX_UNKNOWN_FRAME_CNT: return "Max-Unknown-Frame-Count"; break; case MAX_UNKNOWN_FRAME_TIME: return "Max-Unknown-Frame-Time"; break; case VCC_TIMEOUT_PERIOD: return "VCC-Timeout-Period"; break; case MAX_RETRY_COUNT: return "Max-Retry-Count"; break; case AGING_TIME: return "Aging-Time"; break; case FORWARD_DELAY_TIME: return "Forward-Delay-Time"; break; case EXPECTED_LE_ARP_TIME: return "Expected-LE_ARP-Response-Time"; break; case FLUSH_TIMEOUT: return "Flush-Time-out"; break; case PATH_SWITCHING_DELAY: return "Path-Switching-Delay"; break; case LOCAL_SEGMENT_ID: return "Local-Segment-ID"; break; case DEF_MCAST_SND_VCC_TYPE: return "Default-Mcast-Send-VCC-Type"; break; case DEF_MCAST_SND_VCC_AVG: return "Default-Mcast-Send-VCC-AvgRate"; break; case DEF_MCAST_SEND_PEAK_RT: return "Default-Mcast-Send-VCC-PeakRate"; break; case CONN_COMPLETION_TIMER: return "Connection-Completion-Timer"; break; case CONFIG_FRAG_INFO: return "Config-Frag-Info"; break; case LAYER3_ADDRESS: return "Layer-3-Address"; break; case ELAN_ID: return "ELAN-ID"; break; case SERVICE_CATEGORY: return "Service-Category"; break; case LLC_MUXED_ATM_ADDR: return "LLC-Muxed-ATM-Address"; break; case X5_ADJUSTMENT: return "X5-Adjustment"; break; case PREFERRED_LES: return "Preferred-LES"; break; case FORE_NAME: return "Fore's LANE client name"; break; default: break; } return ""; } const char *status2text(uint16_t status) { switch (ntohs(status)) { case 0: return "Success"; break; case 1: return "Version Not Supported"; break; case 2: return "Invalid request parameters"; break; case 4: return "Duplicate LAN Destination registration"; break; case 5: return "Dupliate ATM address"; break; case 6: return "Insufficient resources to grant request"; break; case 7: return "Access denied"; break; case 8: return "Invalid REQUESTOR-ID"; break; case 9: return "Invalid LAN Destination"; break; case 10: return "Invalid ATM Address"; break; case 20: return "No Configuration"; break; case 21: return "LE_CONFIGURE Error"; break; case 22: return "Insufficient Information"; break; case 24: return "TLV Not Found"; break; default: break; } return ""; } linux-atm-2.5.1/src/led/display.h0000644000200100001440000000050707360675443015451 0ustar chasusers/* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #ifndef DISPLAY_H #define DISPLAY_H void display_frame(void *frame); void mac2text(char *buff, unsigned char *mac_addr); const char *opcode2text(uint16_t opcode); const char *tlv2text(uint32_t type); const char *status2text(uint16_t status); #endif /* DISPLAY_H */ linux-atm-2.5.1/src/led/frame_defs.h0000644000200100001440000000710107360675443016074 0ustar chasusers/* frame_defs.h - definitions for LANE control frames, TLVs etc. */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #ifndef FRAMES_DEFS_H #define FRAMES_DEFS_H #ifndef ETH_ALEN #define ETH_ALEN 6 #endif /* Try to squeeze out all the padding from the structs so that we * can use them as templates for filling in and examining frames. * From the gcc documentation: * This attribute, attached to an `enum', `struct', or `union' type * definition, specified that the minimum required memory be used to * represent the type. */ #ifndef PACKED #define PACKED __attribute__((packed)) #endif /* READY_QUERY and READY_IND frame format */ struct ready_frame { uint16_t marker; uint8_t protocol; uint8_t version; uint16_t opcode; }; /* Fields common to all control frames, * not including READY_* */ struct frame_hdr { uint16_t marker; uint8_t protocol; uint8_t version; uint16_t opcode; uint16_t status; uint32_t tran_id; uint16_t lec_id; uint16_t flags; } PACKED; /* values for lan_dst.tag */ #define LAN_DST_NOT_PRESENT 0x0000 #define LAN_DST_MAC_ADDR 0x0001 #define LAN_DST_ROUTE_DESC 0x0002 struct lan_dst { /* Token Ring route descriptors omitted */ uint16_t tag; uint8_t mac[ETH_ALEN]; } PACKED; /* All frames except STATUS_INQ and STATUS_REPLY look like this */ struct ctrl_frame { struct frame_hdr header; struct lan_dst src_lan_dst; struct lan_dst target_lan_dst; uint8_t src_atm_addr[ATM_ESA_LEN]; uint8_t lan_type; uint8_t max_frame_size; uint8_t num_tlvs; uint8_t elan_name_size; uint8_t target_atm_addr[ATM_ESA_LEN]; uint8_t elan_name[32]; /* TLVs if any follow elan_name */ } PACKED; /* Frame types */ #define LE_CONFIG_REQ 0x0001 #define LE_CONFIG_RSP 0x0101 #define LE_JOIN_REQ 0x0002 #define LE_JOIN_RSP 0x0102 #define LE_REG_REQ 0x0004 #define LE_REG_RSP 0x0104 #define LE_ARP_REQ 0x0006 #define LE_ARP_RSP 0x0106 #define LE_FLUSH_REQ 0x0007 #define LE_FLUSH_RSP 0x0107 #define LE_NARP_REQ 0x0008 #define LE_TOPO_REQ 0x0009 #define READY_QUERY 0x0003 /* READY_* are not in ctrl_frame format */ #define READY_IND 0x0103 /* Flags for LE Control Frames */ #define REMOTE_ADDRESS 0x0001 #define V2_CAPABLE 0x0002 #define V2_REQUIRED 0x0008 #define PROXY_FLAG 0x0080 #define TOPO_CHANGE 0x0100 /* TLV types defined in LANEv1 and v2 + one Fore specific TLV */ #define MAX_CUM_CTRL_TIMEOUT 0x00A03E01 #define MAX_UNKNOWN_FRAME_CNT 0x00A03E02 #define MAX_UNKNOWN_FRAME_TIME 0x00A03E03 #define VCC_TIMEOUT_PERIOD 0x00A03E04 #define MAX_RETRY_COUNT 0x00A03E05 #define AGING_TIME 0x00A03E06 #define FORWARD_DELAY_TIME 0x00A03E07 #define EXPECTED_LE_ARP_TIME 0x00A03E08 #define FLUSH_TIMEOUT 0x00A03E09 #define PATH_SWITCHING_DELAY 0x00A03E0A #define LOCAL_SEGMENT_ID 0x00A03E0B #define DEF_MCAST_SND_VCC_TYPE 0x00A03E0C #define DEF_MCAST_SND_VCC_AVG 0x00A03E0D #define DEF_MCAST_SEND_PEAK_RT 0x00A03E0E #define CONN_COMPLETION_TIMER 0x00A03E0F #define CONFIG_FRAG_INFO 0x00A03E10 /* This and the rest are LANEv2 only */ #define LAYER3_ADDRESS 0x00A03E11 #define ELAN_ID 0x00A03E12 #define SERVICE_CATEGORY 0x00A03E13 #define LLC_MUXED_ATM_ADDR 0x00A03E2B #define X5_ADJUSTMENT 0x00A03E2C /* length 0 */ #define PREFERRED_LES 0x00A03E2D #define FORE_NAME 0x00204808 /* check zeppelin(8), -f option */ #endif /* FRAMES_DEFS_H */ linux-atm-2.5.1/src/led/frames.c0000644000200100001440000004761410230753355015253 0ustar chasusers/* frames.c - handle incoming frames, prefill outgoing frames, parse TLVs etc. */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ /* Functions for handling LANE control frames used when joining an * ELAN are in lec.c */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "conn.h" #include "lec.h" #include "frames.h" #include "display.h" #include "kernel.h" #define COMPONENT "frames.c" static uint32_t transaction_id = 0; static void extract_tlv_value(uint16_t opcode, uint32_t type, unsigned char *tlvp, int len); static void handle_x5(uint16_t opcode); /* Initializes LANE Control frame of type 'type' */ void prefill_frame(void *buff, uint16_t type) { struct frame_hdr *header; memset(buff, 0, sizeof(struct ctrl_frame)); header = (struct frame_hdr *)buff; header->marker = htons(0xff00); header->protocol = 0x01; header->version = 0x01; header->opcode = htons(type); header->status = htons(0x0000); header->tran_id = htonl(transaction_id); header->lec_id = htons(lec_params.c14_lec_id); header->flags = htons(0x0000); transaction_id++; return; } /* Validates incoming Control frames except READY_IND and * READY_QUERY which do not start with the common header. * Also calls display_frame() to print out conforming frames. * Returns < 0 for error */ int validate_frame(unsigned char *buff, int size) { struct ready_frame *hdr; /* Ready is the shortest possible */ if (size < sizeof(struct ready_frame)) { diag(COMPONENT, DIAG_DEBUG, "short frame, size %d", size); return -1; } hdr = (struct ready_frame *)buff; if (hdr->marker != htons(0xff00) || hdr->protocol != 0x01 || hdr->version != 0x01) return -1; /* READY_* frames are shorter than others */ if (hdr->opcode == htons(READY_QUERY) || hdr->opcode == htons(READY_IND)) { diag(COMPONENT, DIAG_DEBUG, "Received a %s", opcode2text(hdr->opcode)); return 0; } if (size < sizeof(struct ctrl_frame)) { diag(COMPONENT, DIAG_DEBUG, "short frame, size %d", size); return -1; } display_frame(buff); return 0; } /* Handle incoming LE_FLUSH_REQUEST frames. */ static void handle_flush_req(struct ctrl_frame *f) { if (memcmp(lec_params.c1n_my_atm_addr, f->target_atm_addr, ATM_ESA_LEN) != 0) return; f->header.opcode = htons(LE_FLUSH_RSP); if (send_frame(lec_params.ctrl_direct, f, sizeof(struct ctrl_frame)) < 0) diag(COMPONENT, DIAG_DEBUG, "could not send LE_FLUSH_RESPONSE"); return; } /* Handle incoming LE_FLUSH_RESPONSE frames. */ static void handle_flush_rsp(struct ctrl_frame *f) { struct atmlec_msg msg; if (f->header.lec_id != htons(lec_params.c14_lec_id)) { diag(COMPONENT, DIAG_DEBUG, "Wrong lec_id, ignoring"); return; } memset(&msg, 0, sizeof(struct atmlec_msg)); msg.type = l_flush_complete; msg.content.normal.flag = ntohl(f->header.tran_id); msg_to_kernel(&msg, sizeof(struct atmlec_msg)); return; } /* Handle incoming READY_QUERY frames. */ static void handle_ready_query(Conn_t *conn, struct ready_frame *f) { f->opcode = htons(READY_IND); send_frame(conn, f, sizeof(struct ready_frame)); return; } /* Helper for handle_le_arp_req. * If the target_lan_dst was not our MAC address, try to * see if the bridging table in the kernel knows about it. * Returns < 0 for serious error */ static int check_bridge(struct ctrl_frame *frame, int size) { struct atmlec_msg msg; if (lec_params.c4_proxy_flag == 0) return 0; memset(&msg, 0, sizeof(struct atmlec_msg)); msg.type = l_should_bridge; memcpy(msg.content.proxy.mac_addr, frame->target_lan_dst.mac, ETH_ALEN); memcpy(msg.content.proxy.atm_addr, frame->src_atm_addr, ATM_ESA_LEN); msg.content.proxy.tran_id = frame->header.tran_id; msg.content.proxy.lec_id = frame->header.lec_id; return msg_to_kernel(&msg, sizeof(struct atmlec_msg)); } /* Handles incoming LE_ARP_REQ and targetless LE_ARP_REQ. * See LANEv2, 7.1.5 and 7.1.30 * Returns < 0 for serious error */ static int handle_le_arp_req(struct ctrl_frame *frame, int size) { int sizeoftlvs, sizeofrsp, retval; struct ctrl_frame *rsp; struct atmlec_msg *msg; if (frame->header.lec_id == htons(lec_params.c14_lec_id)) { diag(COMPONENT, DIAG_DEBUG, "Ignoring own LE_ARP_REQUEST"); return 0; } retval = 0; if (frame->target_lan_dst.tag == htons(LAN_DST_MAC_ADDR)) { if (memcmp(frame->target_lan_dst.mac, lec_params.c6_mac_addr, ETH_ALEN) != 0) return (check_bridge(frame, size)); /* target was not us */ sizeofrsp = sizeof(struct ctrl_frame) + lec_params.sizeoftlvs; rsp = (struct ctrl_frame *)malloc(sizeofrsp); if (rsp == NULL) return 0; memcpy(rsp, frame, sizeof(struct ctrl_frame)); rsp->header.opcode = htons(LE_ARP_RSP); memcpy(rsp->target_atm_addr, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); rsp->num_tlvs = lec_params.num_tlvs; if (lec_params.num_tlvs > 0) memcpy(rsp + 1, lec_params.tlvs, lec_params.sizeoftlvs); retval = send_frame(lec_params.ctrl_direct, rsp, sizeofrsp); free(rsp); } else if (frame->target_lan_dst.tag == htons(LAN_DST_NOT_PRESENT) && lec_params.c29_v2_capable) { sizeoftlvs = size - sizeof(struct ctrl_frame); msg = (struct atmlec_msg *)malloc(sizeof(struct atmlec_msg) + sizeoftlvs); if (msg == NULL) return -1; memset(msg, 0, sizeof(struct atmlec_msg)); msg->type = l_arp_update; memcpy(msg->content.normal.mac_addr, frame->src_lan_dst.mac, ETH_ALEN); memcpy(msg->content.normal.atm_addr, frame->src_atm_addr, ATM_ESA_LEN); msg->content.normal.flag = (frame->header.flags & htons(REMOTE_ADDRESS)) ? 1 : 0; msg->content.normal.targetless_le_arp = 1; msg->sizeoftlvs = sizeoftlvs; if (sizeoftlvs > 0) memcpy(msg + 1, frame + 1, sizeoftlvs); retval = msg_to_kernel(msg, sizeof(struct atmlec_msg) + sizeoftlvs); free(msg); } return retval; } /* Handles incoming LE_NARP_REQUESTS frames. * Mandatory only in LANEv2. If we are LANEv1, we'll just ignore these. * See LANEv2, 7.1.31-35 LE_NARP_REQUEST/RESPONSE. * For no-source, i.e. no source ATM address, we remove the LE_ARP cache entry. * If the source is non-zero, we first remove the entry * and then add the new entry in the LE_ARP cache. * Returns < 0 for serious error. */ static int handle_narp_req(struct ctrl_frame *frame, int size) { int sizeoftlvs, no_source = 0, retval; struct atmlec_msg *msg; unsigned char empty[ATM_ESA_LEN]; if (frame->header.lec_id == htons(lec_params.c14_lec_id) || lec_params.c29_v2_capable == 0) { diag(COMPONENT, DIAG_DEBUG, "Ignoring LE_NARP_REQUEST"); return 0; } memset(empty, 0, ATM_ESA_LEN); if (memcmp(empty, frame->src_atm_addr, ATM_ESA_LEN) == 0) no_source = 1; sizeoftlvs = size - sizeof(struct ctrl_frame); msg = (struct atmlec_msg *)malloc(sizeof(struct atmlec_msg) + sizeoftlvs); if (msg == NULL) return -1; memset(msg, 0, sizeof(struct atmlec_msg)); msg->type = l_narp_req; memcpy(msg->content.normal.mac_addr, frame->src_lan_dst.mac, ETH_ALEN); memcpy(msg->content.normal.atm_addr, frame->src_atm_addr, ATM_ESA_LEN); msg->content.normal.flag = (frame->header.flags & htons(REMOTE_ADDRESS)) ? 1 : 0; msg->content.normal.no_source_le_narp = no_source; msg->sizeoftlvs = sizeoftlvs; if (sizeoftlvs > 0) memcpy(msg + 1, frame + 1, sizeoftlvs); retval = msg_to_kernel(msg, sizeof(struct atmlec_msg) + sizeoftlvs); free(msg); return retval; } /* Handles incoming LE_ARP_RESPONSE frames. * Returns < 0 for serious error */ static int handle_arp_rsp(struct ctrl_frame *frame, int size) { int sizeoftlvs, msglen, retval; char buff[MAX_CTRL_FRAME]; struct atmlec_msg *msg; if (frame->header.lec_id != htons(lec_params.c14_lec_id)) { diag(COMPONENT, DIAG_DEBUG, "Wrong lec_id, ignoring"); return 0; } sizeoftlvs = size - sizeof(struct ctrl_frame); msglen = sizeof(struct atmlec_msg) + sizeoftlvs; msg = (struct atmlec_msg *)buff; memset(msg, 0, msglen); msg->type = l_arp_update; memcpy(msg->content.normal.mac_addr, frame->target_lan_dst.mac, ETH_ALEN); memcpy(msg->content.normal.atm_addr, frame->target_atm_addr, ATM_ESA_LEN); msg->content.normal.flag = (frame->header.flags & htons(REMOTE_ADDRESS)) ? 1 : 0; msg->sizeoftlvs = sizeoftlvs; if (sizeoftlvs > 0) memcpy(msg + 1, frame + 1, sizeoftlvs); retval = msg_to_kernel(msg, msglen); return retval; } /* Handles incoming LE_TOPOLOGY_REQUEST frames. * Returns < 0 for serious error */ static int handle_topo_req(struct ctrl_frame *frame) { struct atmlec_msg msg; memset(&msg, 0, sizeof(struct atmlec_msg)); msg.type = l_topology_change; if (frame->header.flags & htons(TOPO_CHANGE)) msg.content.normal.flag = 1; return(msg_to_kernel(&msg, sizeof(struct atmlec_msg))); } static void handle_ready_ind(Conn_t *conn) { struct atmlec_msg msg; /* FIXME -- if its a receive only vcc we should not do this */ diag(COMPONENT, DIAG_DEBUG, "READY_IND, on fd %d; sending LE_FLUSH_REQ", conn->fd); memset(&msg, 0, sizeof(struct atmlec_msg)); msg.type = l_flush_tran_id; memcpy(msg.content.normal.atm_addr, conn->atm_address, ATM_ESA_LEN); msg.content.normal.flag = send_flush_req(conn); msg_to_kernel(&msg, sizeof(struct atmlec_msg)); } /* Processes and validates incoming frames. Calls frame * dependant handler functions. * Returns < 0 for serious error */ int handle_frame(Conn_t *conn, char *buff, int size) { struct ctrl_frame *frame; if (validate_frame(buff, size) < 0) return 0; frame = (struct ctrl_frame *)buff; switch (ntohs(frame->header.opcode)) { case LE_FLUSH_REQ: handle_flush_req(frame); break; case LE_FLUSH_RSP: diag(COMPONENT, DIAG_DEBUG, "LE_FLUSH_RESPONSE, on fd %d", conn->fd); handle_flush_rsp(frame); break; case READY_QUERY: handle_ready_query(conn, (struct ready_frame *)frame); break; case READY_IND: handle_ready_ind(conn); break; case LE_ARP_REQ: if (handle_le_arp_req(frame, size) < 0) return -1; break; case LE_ARP_RSP: if (handle_arp_rsp(frame, size) < 0) return -1; break; case LE_TOPO_REQ: if (handle_topo_req(frame) < 0) return -1; break; case LE_REG_RSP: /* FIXME: Should we do something? */ break; case LE_NARP_REQ: if (handle_narp_req(frame, size) < 0) return -1; break; default: diag(COMPONENT, DIAG_ERROR, "Unknown frame, opcode 0x%x %s", ntohs(frame->header.opcode), opcode2text(frame->header.opcode)); break; } return 0; } /* Sends a READY_INDICATION when a non-blocking connect completes. */ void send_ready_ind(Conn_t *conn) { struct ready_frame frame; int retval; frame.marker = htons(0xff00); frame.protocol = 0x01; frame.version = 0x01; frame.opcode = htons(READY_IND); retval = send_frame(conn, &frame, sizeof(struct ready_frame)); if (retval < 0) diag(COMPONENT, DIAG_DEBUG, "Could not send READY_IND, fd %d", conn->fd); return; } /* Sends a LE_FLUSH_REQUEST * Returns the transaction used with this flush REQ/RSP pair. */ uint32_t send_flush_req(Conn_t *conn) { struct ctrl_frame frame; prefill_frame(&frame, LE_FLUSH_REQ); memcpy(frame.src_atm_addr, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); memcpy(frame.target_atm_addr, conn->atm_address, ATM_ESA_LEN); send_frame(lec_params.mcast_send, &frame, sizeof(struct ctrl_frame)); return ntohl(frame.header.tran_id); } /* Registers our MAC address and associated TLVs with LES. * See LANEv2, 6. Registaration Protocol */ void send_register_req(void) { char buff[MAX_CTRL_FRAME]; struct ctrl_frame *frame; frame = (struct ctrl_frame *)buff; prefill_frame(frame, LE_REG_REQ); frame->src_lan_dst.tag = htons(LAN_DST_MAC_ADDR); memcpy(frame->src_lan_dst.mac, lec_params.c6_mac_addr, ETH_ALEN); memcpy(frame->src_atm_addr, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); frame->num_tlvs = lec_params.num_tlvs; if (lec_params.sizeoftlvs > 0) memcpy((frame + 1), lec_params.tlvs, lec_params.sizeoftlvs); send_frame(lec_params.ctrl_direct, frame, sizeof(struct ctrl_frame) + lec_params.sizeoftlvs); return; } /* Goes through the TLVs trailing a frame while passing them * one by one to the TLV handler. */ void parse_tlvs(uint16_t opcode, unsigned char *tlvp, int numtlvs, int sizeoftlvs) { uint32_t type; uint8_t len; unsigned char *end_of_tlvs; end_of_tlvs = tlvp + sizeoftlvs; while (numtlvs-- > 0 && end_of_tlvs - tlvp >= 5) { type = *(uint32_t *)tlvp; type = ntohl(type); len = tlvp[4]; tlvp += 5; diag(COMPONENT, DIAG_DEBUG, "parse_tlvs: type %s len %d", tlv2text(type), len); if (tlvp + len > end_of_tlvs) return; /* value too long */ extract_tlv_value(opcode, type, tlvp, len); tlvp += len; } return; } /* Does something depending on the frame type this TLV arrived with, * TLV type, and contents of TLV. */ static void extract_tlv_value(uint16_t opcode, uint32_t type, unsigned char *tlvp, int len) { uint16_t value16; uint32_t value32; /* LE_JOIN_RESPONSE does not support all the TLVs */ if (opcode == htons(LE_JOIN_RSP) && type != htonl(ELAN_ID)) return; switch(len) { case 0: switch (type) { case X5_ADJUSTMENT: handle_x5(opcode); break; default: goto whine; break; } break; case 2: value16 = *(uint16_t *)tlvp; value16 = ntohs(value16); diag(COMPONENT, DIAG_DEBUG, "value of TLV %d", value16); switch (type) { case MAX_CUM_CTRL_TIMEOUT: lec_params.c7_ctrl_timeout = value16; break; case MAX_UNKNOWN_FRAME_CNT: lec_params.c10_max_unknown_frames = value16; break; case MAX_UNKNOWN_FRAME_TIME: lec_params.c11_max_unknown_frame_time = value16; break; case MAX_RETRY_COUNT: lec_params.c13_max_retry_count = value16; break; case FORWARD_DELAY_TIME: lec_params.c18_forward_delay_time = value16; break; case EXPECTED_LE_ARP_TIME: lec_params.c20_le_arp_response_time = value16; break; case FLUSH_TIMEOUT: lec_params.c21_flush_timeout = value16; break; case PATH_SWITCHING_DELAY: lec_params.c22_path_switching_delay = value16; break; case LOCAL_SEGMENT_ID: case DEF_MCAST_SND_VCC_TYPE: case CONN_COMPLETION_TIMER: case SERVICE_CATEGORY: /* do nothing */ break; default: goto whine; break; } break; case 4: value32 = *(uint32_t *)tlvp; value32 = ntohl(value32); diag(COMPONENT, DIAG_DEBUG, "value of TLV %d", value32); switch (type) { case VCC_TIMEOUT_PERIOD: lec_params.c12_vcc_timeout = value32; break; case AGING_TIME: lec_params.c17_aging_time = value32; break; case ELAN_ID: lec_params.c31_elan_id = value32; break; case DEF_MCAST_SND_VCC_AVG: case DEF_MCAST_SEND_PEAK_RT: /* do nothing */ break; default: goto whine; break; } break; case 20: switch(type) { case PREFERRED_LES: memcpy(lec_params.c35_preferred_les, tlvp, ATM_ESA_LEN); lec_params.c35_contains_address = 1; break; case LLC_MUXED_ATM_ADDR: /* do nothing */ break; default: goto whine; break; } break; default: /* handle variable length TLVs */ switch(type) { case CONFIG_FRAG_INFO: diag(COMPONENT, DIAG_INFO, "Got Config-Frag-Info TLV"); break; case LAYER3_ADDRESS: /* do nothing */ break; default: goto whine; break; } break; } return; whine: diag(COMPONENT, DIAG_DEBUG, "Unknown TLV, type 0x%x, len %d", type, len); return; } /* Figures out what to do when we get a X5-Adjustment TLV */ static void handle_x5(uint16_t opcode) { if (!lec_params.c29_v2_capable) return; if (opcode != ntohs(LE_CONFIG_RSP)) { diag(COMPONENT, DIAG_WARN, "X5-Adjustment TLV received but not with LE_CONFIG_RSP"); return; } switch(lec_params.c3_max_frame_size) { case 1: lec_params.c3_max_frame_size = 5; /* 1580 */ return; break; case 2: lec_params.c3_max_frame_size = 5; /* 1580 */ return; break; default: /* rest of the values are not affected by X5 */ break; } return; } linux-atm-2.5.1/src/led/frames.h0000644000200100001440000000100707360675443015255 0ustar chasusers/* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #ifndef FRAMES_H #define FRAMES_H #include "frame_defs.h" #define MAX_CTRL_FRAME 512 void prefill_frame(void *ctrl_frame, uint16_t type); int validate_frame(unsigned char *buff, int size); void send_ready_ind(Conn_t *conn); void send_register_req(void); int handle_frame(Conn_t *conn, char *buff, int size); uint32_t send_flush_req(Conn_t *conn); void parse_tlvs(uint16_t opcode, unsigned char *tlvp, int numtlvs, int sizeoftlvs); #endif /* FRAMES_H */ linux-atm-2.5.1/src/led/join.c0000644000200100001440000007354710321257226014736 0ustar chasusers/* join.c - functions which are only needed when joining an ELAN */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include /* for rand() */ #include #include #include #include #include "conn.h" #include "lec.h" #include "join.h" #include "frames.h" #include "display.h" #define COMPONENT "lec.c" struct lec_params lec_params; static unsigned char bus_mac[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; static unsigned char well_known_lecs[ATM_ESA_LEN] = {0x47,0x00,0x79,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xA0, 0x3E,0x00,0x00,0x01,0x00}; static int do_lec_configure(Conn_t *conn); static int send_config_req(Conn_t *conn); static int read_config_rsp(Conn_t *conn, char *buff, int buffsize); static int parse_config_rsp(unsigned char *buff, int size); static int send_join_req(Conn_t *conn); static int read_join_rsp(char *buff, int buffsize); static int parse_join_rsp(unsigned char *buff, int size); static int get_bus_addr(struct sockaddr_atmsvc *addr); static int read_bus_arp(Conn_t *conn, struct sockaddr_atmsvc *addr, char *buff, int buffsize); /* * 5.1, Initial state */ void init_lec_params(unsigned char *mac_addr, char *elan_name, unsigned char *listen_addr, int itf, char *foreId, int max_frame_size, int proxy_flag, int lane_version) { memcpy(lec_params.c6_mac_addr, mac_addr, ETH_ALEN); strcpy(lec_params.c5_elan_name, elan_name); memcpy(lec_params.c1n_my_atm_addr, listen_addr, ATM_ESA_LEN); lec_params.itf_num = itf; strcpy(lec_params.foreId, foreId); lec_params.c3_max_frame_size = max_frame_size; lec_params.c4_proxy_flag = proxy_flag; if (lane_version > 1 ) lec_params.c29_v2_capable = 1; else lec_params.c29_v2_capable = 0; /* then come the defaults */ lec_params.c2_lan_type = LAN_TYPE_UNSPEC; /* Unspecified, implies Ethernet */ if (lec_params.c29_v2_capable) { lec_params.c7_ctrl_timeout = 30; lec_params.c10_max_unknown_frames = 10; } else { lec_params.c7_ctrl_timeout = 10; lec_params.c10_max_unknown_frames = 1; } lec_params.c7i_initial_ctrl_timeout = 5; lec_params.c7x_timeout_multiplier = 2; lec_params.c7c_current_timeout = lec_params.c7i_initial_ctrl_timeout; lec_params.c11_max_unknown_frame_time = 1; lec_params.c12_vcc_timeout = 1200; lec_params.c13_max_retry_count = 2; lec_params.c14_lec_id = 0; lec_params.c17_aging_time = 300; lec_params.c18_forward_delay_time = 15; lec_params.c19_topology_change = 0; lec_params.c20_le_arp_response_time = 1; lec_params.c21_flush_timeout = 4; lec_params.c22_path_switching_delay = 6; /* LANE2 added the following, only the ones used are listed */ memset(lec_params.c35_preferred_les, 0, ATM_ESA_LEN); lec_params.c35_contains_address = 0; lec_params.c37_min_reconfig_delay = 1; /* milliseconds */ lec_params.c38_max_reconfig_delay = 5000; /* milliseconds */ if (lec_params.tlvs != NULL) free (lec_params.tlvs); lec_params.tlvs = NULL; lec_params.sizeoftlvs = 0; lec_params.num_tlvs = 0; return; } /* ------------- Configure phase specific stuff starts ------------- */ /* * 5.2 LECS connect phase * Returns < 0 for error */ int lec_configure(int lecs_method, struct sockaddr_atmsvc *manual_atm_addr, struct sockaddr_atmsvc *listen_addr) { int retval; struct sockaddr_atmsvc addr_c5, addr_47; struct atm_sap sap; struct atm_qos qos; Conn_t *conn; diag(COMPONENT, DIAG_DEBUG, "entering lec_configure"); /* initialize well known LECS addresses */ memset(&addr_c5, 0, sizeof(struct sockaddr_atmsvc)); memset(&addr_47, 0, sizeof(struct sockaddr_atmsvc)); addr_c5.sas_family = addr_47.sas_family = AF_ATMSVC; memcpy(addr_c5.sas_addr.prv, well_known_lecs, ATM_ESA_LEN); memcpy(addr_47.sas_addr.prv, well_known_lecs, ATM_ESA_LEN); addr_c5.sas_addr.prv[0] = 0xC5; /* see if the user wants to skip LECS */ if (lecs_method == LECS_NONE) return 0; init_conn_params(&sap, &qos, CONTROL_CONN); if ((lecs_method == LECS_MANUAL) || (lecs_method == LECS_FROM_ILMI)) { diag(COMPONENT, DIAG_DEBUG, "trying manual LECS address"); conn = setup_svc(manual_atm_addr, listen_addr, &sap, &qos); if (conn) { retval = do_lec_configure(conn); close_connection(conn); return retval; } else random_delay(); } diag(COMPONENT, DIAG_DEBUG, "trying well-known anycast LECS address"); conn = setup_svc(&addr_c5, listen_addr, &sap, &qos); if (conn) { retval = do_lec_configure(conn); close_connection(conn); return retval; } else random_delay(); diag(COMPONENT, DIAG_DEBUG, "trying well-known LECS address"); conn = setup_svc(&addr_47, listen_addr, &sap, &qos); if (conn) { retval = do_lec_configure(conn); close_connection(conn); return retval; } return -1; } /* * 5.3 Configuration phase, get configuration from LECS * Returns < 0 for error */ static int do_lec_configure(Conn_t *conn) { int frame_size = 0; char buff[MAX_CTRL_FRAME]; lec_params.c7c_current_timeout = lec_params.c7i_initial_ctrl_timeout; /* reset it */ while (lec_params.c7c_current_timeout <= lec_params.c7_ctrl_timeout) { if (send_config_req(conn) < 0) return -1; frame_size = read_config_rsp(conn, buff, sizeof(buff)); if (frame_size < 0) return -1; if (frame_size == 0) /* timeout */ lec_params.c7c_current_timeout *= lec_params.c7x_timeout_multiplier; else break; /* frame in */ } lec_params.c7c_current_timeout = lec_params.c7i_initial_ctrl_timeout; /* reset it */ if (frame_size == 0) { diag(COMPONENT, DIAG_INFO, "Timed out while waiting for LE_CONFIGURE_RESPONSE"); return -1; /* timeout */ } if (parse_config_rsp(buff, frame_size) < 0) { diag(COMPONENT, DIAG_ERROR, "Parsing LE_CONFIG_RESPONSE indicates failure"); return -1; } return 0; } /* * Compose a LE Config request frame and send it to LECS * Returns < 0 for error */ static int send_config_req(Conn_t *conn) { int frame_size; struct ctrl_frame *config_req; char buff[MAX_CTRL_FRAME]; diag(COMPONENT, DIAG_DEBUG, "Sending LE_CONFIGURE_REQUEST"); /* TLVs make config frame variable length */ frame_size = sizeof(struct ctrl_frame); if (lec_params.c3_max_frame_size == MTU_1580) frame_size += 5; config_req = (struct ctrl_frame *)buff; memset(config_req, 0, frame_size); prefill_frame(config_req, LE_CONFIG_REQ); if (lec_params.c29_v2_capable) config_req->header.flags = htons(V2_CAPABLE); config_req->src_lan_dst.tag = htons(LAN_DST_MAC_ADDR); memcpy(config_req->src_lan_dst.mac, lec_params.c6_mac_addr, ETH_ALEN); memcpy(config_req->src_atm_addr, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); config_req->lan_type = lec_params.c2_lan_type; config_req->max_frame_size = lec_params.c3_max_frame_size; config_req->elan_name_size = strlen(lec_params.c5_elan_name); if (strlen(lec_params.c5_elan_name) > 0) strcpy(config_req->elan_name, lec_params.c5_elan_name); if (lec_params.c3_max_frame_size == MTU_1580) { lec_params.c3_max_frame_size = MTU_1516; *(uint32_t *)(config_req + 1) = htonl(X5_ADJUSTMENT); config_req->num_tlvs++; } if (send_frame(conn, buff, frame_size) != frame_size) return -1; return 0; } /* * Reads in Config frame or timeouts * Returns Config frame length, < 0 for error, 0 for timeout */ static int read_config_rsp(Conn_t *conn, char *buff, int buffsize) { int frame_size, retval; struct timeval tv; fd_set rfds; tv.tv_sec = lec_params.c7c_current_timeout; tv.tv_usec = 0; FD_ZERO(&rfds); FD_SET(conn->fd, &rfds); retval = select(conn->fd + 1, &rfds, NULL, NULL, &tv); if (retval < 0) { diag(COMPONENT, DIAG_ERROR, "read_ctrl_rsp: select: %s", strerror(errno)); return retval; } if (retval == 0) return 0; /* timeout */ frame_size = recv_frame(conn, buff, buffsize); if (frame_size < 0) { diag(COMPONENT, DIAG_ERROR, "read_ctrl_rsp: recv_frame: %s", strerror(errno)); return frame_size; } if (frame_size == 0) { diag(COMPONENT, DIAG_ERROR, "read_ctrl_rsp: conn closed: %s", strerror(errno)); return -1; } return frame_size; } /* Validates and parses a LE_CONFIGURE_RESPONSE. * See LANEv2, 5.3.x * Returns < 0 for error */ static int parse_config_rsp(unsigned char *buff, int size) { struct ctrl_frame *frame; diag(COMPONENT, DIAG_DEBUG, "Parsing LE_CONFIG_RESPONSE"); if (validate_frame(buff, size) < 0) { diag(COMPONENT, DIAG_ERROR, "parse_config_rsp: bad frame"); return -1; } frame = (struct ctrl_frame *)buff; if (frame->header.opcode != htons(LE_CONFIG_RSP)) { diag(COMPONENT, DIAG_ERROR, "parse_config_rsp: not a LE_CONFIG_RESPONSE"); return -1; } if (frame->header.status != 0) { diag(COMPONENT, DIAG_ERROR, "LECS said: %s", status2text(frame->header.status)); return -1; } if (frame->elan_name_size > 32) return -1; /* looks good, now extract the information */ lec_params.c2_lan_type = frame->lan_type; lec_params.c3_max_frame_size = frame->max_frame_size; if (frame->elan_name_size != 0) strncpy(lec_params.c5_elan_name, frame->elan_name, frame->elan_name_size); lec_params.c5_elan_name[frame->elan_name_size] = '\0'; memcpy(lec_params.c9_les_atm_addr, frame->target_atm_addr, ATM_ESA_LEN); parse_tlvs(frame->header.opcode, buff + sizeof(struct ctrl_frame), frame->num_tlvs, size - sizeof(struct ctrl_frame)); return 0; } /* ------------- Configure phase specific stuff ends ------------- */ /* -------------- Join phase specific stuff starts --------------- */ /* * 5.4 Join phase * Create control direct VCC and accept possible control distribute VCC * Returns < 0 for error */ int les_connect(int lecs_method, struct sockaddr_atmsvc *manual_atm_addr, struct sockaddr_atmsvc *listen_addr) { struct sockaddr_atmsvc les_addr; struct atm_sap sap; struct atm_qos qos; char buff[MAX_CTRL_FRAME]; int frame_size = 0; /* shut up, GCC */ diag(COMPONENT, DIAG_DEBUG, "Entering Join phase"); if (lecs_method == LECS_NONE) { diag(COMPONENT, DIAG_DEBUG, "Skipping LECS, connecting straight to LES"); memcpy(les_addr.sas_addr.prv, manual_atm_addr->sas_addr.prv, ATM_ESA_LEN); } else memcpy(les_addr.sas_addr.prv, lec_params.c9_les_atm_addr, ATM_ESA_LEN); *les_addr.sas_addr.pub = 0; init_conn_params(&sap, &qos, CONTROL_CONN); lec_params.ctrl_direct = setup_svc(&les_addr, listen_addr, &sap, &qos); if (lec_params.ctrl_direct == NULL) { diag(COMPONENT, DIAG_ERROR, "Control direct SVC failed"); random_delay(); return -1; } lec_params.ctrl_listen = create_listensocket(listen_addr, &sap, &qos); if (lec_params.ctrl_listen == NULL) { diag(COMPONENT, DIAG_ERROR, "Control distribute listen socket failed"); random_delay(); return -1; } lec_params.c7c_current_timeout = lec_params.c7i_initial_ctrl_timeout; /* reset it */ while (lec_params.c7c_current_timeout <= lec_params.c7_ctrl_timeout) { if (send_join_req(lec_params.ctrl_direct) < 0) { diag(COMPONENT, DIAG_ERROR, "Sending LE_JOIN_REQUEST failed"); random_delay(); return -1; } frame_size = read_join_rsp(buff, sizeof(buff)); if (frame_size < 0) { diag(COMPONENT, DIAG_ERROR, "Receiving LE_JOIN_RESPONSE failed"); random_delay(); return -1; } else if (frame_size == 0) /* timeout */ lec_params.c7c_current_timeout *= lec_params.c7x_timeout_multiplier; else break; /* frame in */ } lec_params.c7c_current_timeout = lec_params.c7i_initial_ctrl_timeout; /* reset it */ if (frame_size == 0) { diag(COMPONENT, DIAG_ERROR, "LE_JOIN_RESPONSE timed out"); return -1; } if (parse_join_rsp(buff, frame_size) < 0) { diag(COMPONENT, DIAG_ERROR, "Parsing LE_JOIN_RESPONSE failed"); return -1; } return 0; } /* 5.4.1.2 Transmitting LE_JOIN_REQUEST * Note that the TLVs should be the same as in LE_CONFIG_REQUEST * excluding X5-Adjustment and Preferred-LES */ static int send_join_req(Conn_t *conn) { char buff[MAX_CTRL_FRAME], *tlvp; struct ctrl_frame *frame; int frame_size; frame_size = sizeof(struct ctrl_frame); if (lec_params.c3_max_frame_size == 5) frame_size += 5; if (lec_params.c35_contains_address) frame_size += (5 + ATM_ESA_LEN); if (strlen(lec_params.foreId) > 0) frame_size += (5 + strlen(lec_params.foreId)); frame = (struct ctrl_frame *)buff; tlvp = (char *)(frame + 1); prefill_frame(frame, LE_JOIN_REQ); frame->lan_type = lec_params.c2_lan_type; if (lec_params.c4_proxy_flag) frame->header.flags |= htons(PROXY_FLAG); frame->src_lan_dst.tag = htons(LAN_DST_MAC_ADDR); strcpy(frame->elan_name, lec_params.c5_elan_name); frame->elan_name_size = strlen(lec_params.c5_elan_name); if (lec_params.c29_v2_capable) frame->header.flags |= htons(V2_CAPABLE); memcpy(frame->src_atm_addr, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); memcpy(frame->src_lan_dst.mac, lec_params.c6_mac_addr, ETH_ALEN); frame->max_frame_size = lec_params.c3_max_frame_size; if (lec_params.c3_max_frame_size == 5) { frame->max_frame_size = 1; *(uint32_t *)tlvp = htonl(X5_ADJUSTMENT); tlvp += 4; *tlvp = 0; tlvp++; frame->num_tlvs++; } if (lec_params.c35_contains_address) { *(uint32_t *)tlvp = htonl(PREFERRED_LES); tlvp +=4; *tlvp = (uint8_t)ATM_ESA_LEN; tlvp++; memcpy(tlvp, lec_params.c35_preferred_les, ATM_ESA_LEN); tlvp += 20; frame->num_tlvs++; } if (strlen(lec_params.foreId) > 0) { *(uint32_t *)tlvp = htonl(FORE_NAME); tlvp +=4; *tlvp = (uint8_t)strlen(lec_params.foreId); tlvp++; memcpy(tlvp, lec_params.foreId, strlen(lec_params.foreId)); tlvp += strlen(lec_params.foreId); frame->num_tlvs++; } if (send_frame(conn, frame, frame_size) != frame_size) return -1; return 0; } /* LE_JOIN_RESPONSE can either come over ctrl_direct or ctrl_dist. * However, if LES uses Control Direct VCC, we can ignore connections * to ctrl_listen and if it connects to ctrl_listen we can wait * the reponse to arrive that route. Simple :) * * Returns < 0 for error, 0 for timeout, > 0 for frame size */ static int read_join_rsp(char *buff, int buffsize) { Conn_t *dist; int n, retval, frame_size = 0; struct timeval tv; fd_set rfds; /* Idea here is always to listen for two sockets. One of the sockets is always Control Direct and the other is either listen socket for Control Distribute or the Control Distribute itself. We can do it like this, since listen socket gets closed as soon as it creates a new connection */ dist = (lec_params.ctrl_listen != NULL) ? lec_params.ctrl_listen : lec_params.ctrl_dist; n = (lec_params.ctrl_direct->fd > dist->fd) ? lec_params.ctrl_direct->fd : dist->fd; n++; tv.tv_sec = lec_params.c7c_current_timeout; tv.tv_usec = 0; FD_ZERO(&rfds); FD_SET(lec_params.ctrl_direct->fd, &rfds); FD_SET(dist->fd, &rfds); retval = select(n, &rfds, NULL, NULL, &tv); if (retval < 0) { diag(COMPONENT, DIAG_ERROR, "get_join_rsp: select: %s", strerror(errno)); return -1; } if (retval == 0) return 0; /* timeout */ /* Be careful here. The both sockets might be readable * and the response can come from either one */ if (FD_ISSET(lec_params.ctrl_direct->fd, &rfds)) { /* Control Direct was changed */ frame_size = recv_frame(lec_params.ctrl_direct, buff, buffsize); if (frame_size < 0) { diag(COMPONENT, DIAG_ERROR, "get_join_rsp: recv_frame: %s", strerror(errno)); return -1; } if (frame_size == 0) { diag(COMPONENT, DIAG_ERROR, "get_join_rsp: Control direct VCC closed"); return -1; } diag(COMPONENT, DIAG_DEBUG, "LE_JOIN_RESPONSE over Control direct VCC"); } if (FD_ISSET(dist->fd, &rfds)) { /* Event in listen socket or Control Distribute */ if (dist == lec_params.ctrl_listen) { /* Connection to control listen */ lec_params.ctrl_dist = accept_conn(lec_params.ctrl_listen); if (lec_params.ctrl_dist == NULL) { diag(COMPONENT, DIAG_ERROR, "accept of Ctrl distribute failed"); return -1; } diag(COMPONENT, DIAG_DEBUG, "Closing listen socket for Ctrl distribute VCC"); close_connection(lec_params.ctrl_listen); lec_params.ctrl_listen = NULL; /* let's see if this new socket has something for us */ return (read_join_rsp(buff, buffsize)); } /* Event in Control distribute */ frame_size = recv_frame(lec_params.ctrl_dist, buff, buffsize); if (frame_size < 0) { diag(COMPONENT, DIAG_ERROR, "get_join_rsp: recv_frame: %s", strerror(errno)); return -1; } if (frame_size == 0) { diag(COMPONENT, DIAG_ERROR, "Control distribute VCC closed"); return -1; } diag(COMPONENT, DIAG_DEBUG, "LE_JOIN_RESPONSE over Control distribute VCC"); } return frame_size; } /* Validates and parses a LE_JOIN_RESPONSE. * See LANEv2 5.4.x * Returns < 0 for error */ static int parse_join_rsp(unsigned char *buff, int size) { struct ctrl_frame *frame; diag(COMPONENT, DIAG_DEBUG, "Parsing LE_JOIN_RESPONSE"); if (validate_frame(buff, size) < 0) return -1; frame = (struct ctrl_frame *)buff; if (frame->header.opcode != htons(LE_JOIN_RSP)) return -1; if (frame->header.status != 0) { diag(COMPONENT, DIAG_ERROR, "LES said: %s", status2text(frame->header.status)); return -1; } if (frame->elan_name_size > 32) return -1; /* looks good, now extract the information */ lec_params.c2_lan_type = frame->lan_type; lec_params.c3_max_frame_size = frame->max_frame_size; if (frame->elan_name_size != 0) strncpy(lec_params.c5_elan_name, frame->elan_name, frame->elan_name_size); lec_params.c5_elan_name[frame->elan_name_size] = '\0'; lec_params.c14_lec_id = ntohs(frame->header.lec_id); if (!(frame->header.flags & htons(V2_REQUIRED)) && lec_params.c29_v2_capable) { diag(COMPONENT, DIAG_INFO, "LES did not return V2 Required Flag, acting as V1 client"); lec_params.c29_v2_capable = 0; } if (!(frame->header.flags & htons(V2_REQUIRED)) && (lec_params.c3_max_frame_size == MTU_1580)) { /* Against spec, but we'll accept the MTU and clear the flag */ diag(COMPONENT, DIAG_ERROR, "LES not LANEv2 but uses MTU of 1580 bytes"); lec_params.c29_v2_capable = 0; } parse_tlvs(frame->header.opcode, buff + sizeof(struct ctrl_frame), frame->num_tlvs, size - sizeof(struct ctrl_frame)); return 0; } /* --------------- Join phase specific stuff ends ---------------- */ /* -------------- Bus connect specific stuff starts --------------- */ int bus_connect(void) { struct ctrl_frame *frame; char buff[MAX_CTRL_FRAME]; struct sockaddr_atmsvc bus_addr, listen_addr; int retval, tries, n; struct atm_sap sap; struct atm_qos qos; struct timeval tv; fd_set rfds; Conn_t *mcast_fwd; struct atmlec_ioc ioc_data; frame = (struct ctrl_frame *)buff; memset(&bus_addr, 0, sizeof(struct sockaddr_atmsvc)); memset(&listen_addr, 0, sizeof(struct sockaddr_atmsvc)); /* try to arp BUS two times */ tries = 2; while (tries > 0) { prefill_frame(frame, LE_ARP_REQ); frame->header.lec_id = htons(lec_params.c14_lec_id); frame->src_lan_dst.tag = htons(LAN_DST_MAC_ADDR); memcpy(frame->src_lan_dst.mac, lec_params.c6_mac_addr, ETH_ALEN); memcpy(frame->src_atm_addr, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); frame->target_lan_dst.tag = htons(LAN_DST_MAC_ADDR); memcpy(frame->target_lan_dst.mac, bus_mac, ETH_ALEN); retval = send_frame(lec_params.ctrl_direct, frame, sizeof(struct ctrl_frame)); if (retval < 0) { diag(COMPONENT, DIAG_ERROR, "LE_ARP_REQUEST for BUS failed"); return -1; } retval = get_bus_addr(&bus_addr); if (retval < 0) { diag(COMPONENT, DIAG_ERROR, "LE_ARP_RESPONSE for BUS failed"); return -1; } else if (retval > 0) break; /* got it */ tries--; } if (tries == 0) { diag(COMPONENT, DIAG_ERROR, "LE_ARP_RESPONSE for BUS timed out"); return -1; } /* We got address for BUS. Make the listen socket for Multicast * Forward first and then contact BUS. */ memcpy(listen_addr.sas_addr.prv, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); listen_addr.sas_family = bus_addr.sas_family = AF_ATMSVC; init_conn_params(&sap, &qos, MCAST_CONN); lec_params.mcast_listen = create_listensocket(&listen_addr, &sap, &qos); if (lec_params.mcast_listen == NULL) { diag(COMPONENT, DIAG_ERROR, "Listen socket for BUS failed"); return -1; } lec_params.mcast_send = setup_svc(&bus_addr, &listen_addr, &sap, &qos); if (lec_params.mcast_send == NULL) { diag(COMPONENT, DIAG_ERROR, "Connect to BUS failed"); return -1; } /* Default Multicast send VCC to BUS ready, notify kernel */ if (ioctl(lec_params.mcast_send->fd, ATMLEC_MCAST, lec_params.itf_num) < 0) { diag(COMPONENT, DIAG_FATAL, "Can't change socket into LE mcast socket: %s", strerror(errno)); return -1; } diag(COMPONENT, DIAG_DEBUG, "About to wait for BUS to connect"); tv.tv_sec = lec_params.c7_ctrl_timeout; tv.tv_usec = 0; FD_ZERO(&rfds); FD_SET(lec_params.mcast_listen->fd, &rfds); n = lec_params.mcast_listen->fd + 1; retval = select(n, &rfds, NULL, NULL, &tv); if (retval == 0) { diag(COMPONENT, DIAG_ERROR, "BUS connect to Multicast Forward listen socket timed out"); return -1; } if (retval < 0) { diag(COMPONENT, DIAG_ERROR, "while waiting for Multicast Forward VCC: select: %s", strerror(errno)); return -1; } mcast_fwd = accept_conn(lec_params.mcast_listen); if (mcast_fwd == NULL) { diag(COMPONENT, DIAG_ERROR, "BUS connect to Multicast Forward listen socket failed"); return -1; } memcpy(ioc_data.atm_addr, mcast_fwd->atm_address, ATM_ESA_LEN); ioc_data.dev_num = lec_params.itf_num; ioc_data.receive = 2; /* Multicast distribute */ diag(COMPONENT, DIAG_DEBUG, "About to notify kernel about Multicast Forward VCC"); if (ioctl(mcast_fwd->fd, ATMLEC_DATA, &ioc_data) < 0) { diag(COMPONENT, DIAG_DEBUG, "Could not notify kernel: %s", strerror(errno)); return -1; } /* All done. We're in! */ return 0; } /* * Waits for LE_ARP_RESPONSE for BUS' ATM address to arrive. * Returns < 0 for error, 0 for timeout > 0 for success * BUS ATM address will be stored in *addr */ static int get_bus_addr(struct sockaddr_atmsvc *addr) { fd_set rfds; struct timeval tv; int n = 0, retval, timeout; char buff[MAX_CTRL_FRAME]; timeout = 4; /* wait response for 4 seconds */ lec_params.c7c_current_timeout = 1; while (lec_params.c7c_current_timeout <= timeout) { tv.tv_sec = lec_params.c7c_current_timeout; /* actually not specified exactly */ tv.tv_usec = 0; FD_ZERO(&rfds); FD_SET(lec_params.ctrl_direct->fd, &rfds); if (lec_params.ctrl_dist != NULL) { FD_SET(lec_params.ctrl_dist->fd, &rfds); n = lec_params.ctrl_dist->fd; } n = (lec_params.ctrl_direct->fd > n) ? lec_params.ctrl_direct->fd : n; n++; retval = select(n, &rfds, NULL, NULL, &tv); if (retval == 0) { lec_params.c7c_current_timeout++; continue; /* back to waiting */ } if (retval < 0) { diag(COMPONENT, DIAG_ERROR, "get_bus_addr: select: %s", strerror(errno)); return -1; } if (FD_ISSET(lec_params.ctrl_direct->fd, &rfds)) { diag(COMPONENT, DIAG_DEBUG, "get_bus_addr: ctrl.direct changed:"); retval = read_bus_arp(lec_params.ctrl_direct, addr, buff, sizeof(buff)); if (retval < 0) return -1; if (retval > 0) return retval; } if (lec_params.ctrl_dist != NULL && FD_ISSET(lec_params.ctrl_dist->fd, &rfds)) { diag(COMPONENT, DIAG_DEBUG, "get_bus_addr: ctrl.dist changed:"); retval = read_bus_arp(lec_params.ctrl_dist, addr, buff, sizeof(buff)); if (retval < 0) return -1; if (retval > 0) return retval; } diag(COMPONENT, DIAG_DEBUG, "get_bus_addr: consumed a packet"); } diag(COMPONENT, DIAG_ERROR, "Timeout while waiting for BUS LE_ARP response"); return 0; } /* * Tries to read BUS ATM address in *addr * returns < 0 for error, 0 for not found > 0 for success */ static int read_bus_arp(Conn_t *conn, struct sockaddr_atmsvc *addr, char *buff, int buffsize) { int frame_size; struct ctrl_frame *frame; frame_size = recv_frame(conn, buff, buffsize); if (frame_size == 0) { diag(COMPONENT, DIAG_ERROR, "LES Control connection closed"); return -1; } if (frame_size < 0) { diag(COMPONENT, DIAG_ERROR, "get_bus_arp: recv_frame: %s", strerror(errno)); return -1; } frame = (struct ctrl_frame *)buff; if (validate_frame(buff, frame_size) >= 0 && frame->header.opcode == htons(LE_ARP_RSP) && memcmp(frame->src_lan_dst.mac, lec_params.c6_mac_addr, ETH_ALEN) == 0) { memcpy(addr->sas_addr.prv, frame->target_atm_addr, ATM_ESA_LEN); return frame_size; } return 0; /* not found */ } /* --------------- Bus connect specific stuff ends --------------- */ linux-atm-2.5.1/src/led/join.h0000644000200100001440000000134710321257226014730 0ustar chasusers/* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #ifndef JOIN_H #define JOIN_H void init_lec_params(unsigned char *mac_addr, char *elan_name, unsigned char *listen_addr, int itf, char *foreId, int max_frame_size, int proxy_flag, int lane_version); int lec_configure(int lecs_method, struct sockaddr_atmsvc *manual_atm_addr, struct sockaddr_atmsvc *listen_addr); int les_connect(int lecs_method, struct sockaddr_atmsvc *manual_atm_addr, struct sockaddr_atmsvc *listen_addr); int bus_connect(void); /* Different ways to contact LECS */ #define LECS_NONE 0 #define LECS_WELLKNOWN 1 #define LECS_MANUAL 2 #define LECS_FROM_ILMI 3 #endif /* JOIN_H */ linux-atm-2.5.1/src/led/kernel.c0000644000200100001440000003056510321257226015250 0ustar chasusers/* kernel.c - send and receive messages from kernel and act accordingly */ /* * Marko Kiiskila carnil@cs.tut.fi * * Copyright (c) 1996 * Tampere University of Technology - Telecommunications Laboratory * All rights reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. * */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #if HAVE_CONFIG_H #include #endif /* System includes */ #include #include #include #include #include /* Atm includes */ #include #include #include #include /* Local includes */ #include "kernel.h" #include "lec.h" #include "frames.h" #define COMPONENT "kernel.c" /* Local vars */ static int lec_socket; static const char* get_mesg_type_str(atmlec_msg_type type); static void send_le_arp_req(unsigned char *mac_addr, int is_rdesc, int sizeoftlvs); static void send_proxy_arp_rsp(unsigned char *target_mac, uint32_t tran_id, uint16_t lec_id, unsigned char *src_atm_addr); static void send_topology_req(int flag); static void associate_tlvs(int sizeoftlvs); /* Notify kernel that zeppelin is present and tell * kernel what MAC address this LEC uses */ int kernel_init(unsigned char *mac_addr, int itf) { int rvalue; struct atmlec_msg msg; lec_socket = socket(PF_ATMSVC, SOCK_DGRAM, 0); if (lec_socket < 0) { diag(COMPONENT, DIAG_FATAL, "Kernel socket creation failed: %s", strerror(errno)); return -1; } itf = ioctl(lec_socket, ATMLEC_CTRL, itf); if (itf < 0) { diag(COMPONENT, DIAG_FATAL, "Socket ioctl to lecd_ctrl failed:%s", strerror(errno)); close(lec_socket); return -1; } msg.type = l_set_mac_addr; memcpy(msg.content.normal.mac_addr, mac_addr, ETH_ALEN); rvalue = write(lec_socket, &msg, sizeof(msg)); if (rvalue < 0) { diag(COMPONENT, DIAG_FATAL, "Can't write mac address to LEC:%s", strerror(errno)); close(lec_socket); return -1; } diag(COMPONENT, DIAG_DEBUG, "Kernel interface initialized"); if (conn_set_kernel_socket(lec_socket) < 0) { close(lec_socket); return -1; } return itf; } /* Send a message to kernel * Returns < 0 for error */ int msg_to_kernel(struct atmlec_msg *msg, int msg_size) { int retval; diag(COMPONENT, DIAG_DEBUG, "msg_to_kernel, type %s", get_mesg_type_str(msg->type)); retval = write(lec_params.kernel->fd, msg, msg_size); if (retval < 0) { diag(COMPONENT, DIAG_ERROR, "msg_to_kernel: write: %s", strerror(errno)); return -1; } if (retval != msg_size) { diag(COMPONENT, DIAG_ERROR, "msg_to_kernel: partial write"); return -1; } return retval; } /* Read and process message from kernel * Returns < 0 for error */ int msg_from_kernel(void) { int retval; struct atmlec_msg msg; int codepoint, is_rdesc = 0; uint8_t bcast; retval = read(lec_params.kernel->fd, &msg, sizeof(struct atmlec_msg)); if (retval < 0) { diag(COMPONENT, DIAG_FATAL, "msg_from_kernel: read: %s", strerror(errno)); return -1; } if (retval != sizeof(struct atmlec_msg)) { diag(COMPONENT, DIAG_ERROR, "msg_from_kernel: msg size != sizeof(atmlec_msg)"); return 0; } diag(COMPONENT, DIAG_DEBUG, "msg_from_kernel: type %s", get_mesg_type_str(msg.type)); switch (msg.type) { case l_rdesc_arp_xmt: is_rdesc = 1; /* fall through */ case l_arp_xmt: if (msg.content.normal.targetless_le_arp) send_le_arp_req(NULL, 0, msg.sizeoftlvs); else send_le_arp_req(msg.content.normal.mac_addr, is_rdesc, msg.sizeoftlvs); break; case l_svc_setup: bcast = (lec_params.c2_lan_type == LAN_TYPE_8025) ? 0x80 : 0x01; /* TR is MSB */ codepoint = (msg.content.normal.mac_addr[0] & bcast) ? MCAST_CONN : DATA_DIRECT_CONN; if (create_data_svc(msg.content.normal.atm_addr, codepoint) < 0) diag(COMPONENT, DIAG_ERROR, "Data direct VCC failed"); break; case l_associate_req: associate_tlvs(msg.sizeoftlvs); break; case l_should_bridge: send_proxy_arp_rsp(msg.content.proxy.mac_addr, msg.content.proxy.tran_id, msg.content.proxy.lec_id, msg.content.proxy.atm_addr); break; case l_topology_change: send_topology_req(msg.content.normal.flag); break; default: diag(COMPONENT, DIAG_ERROR, "no handler for kernel msg %s", get_mesg_type_str(msg.type)); break; } return 0; } /* Send LE_ARP_REQUEST. If mac_addr is NULL, sends a targetless LE_ARP. * If sizeoftlvs != 0, reads TLVs waiting in the kernel socket and * adds them to the frame. If sizeoftlvs == 0 then the TLVs (if any) * associated with this LEC are used. * FIXME: add TLV count in kernel messages */ static void send_le_arp_req(unsigned char *mac_addr, int is_rdesc, int sizeoftlvs) { struct ctrl_frame *frame; int frame_size; char buff[MAX_CTRL_FRAME]; diag(COMPONENT, DIAG_DEBUG, "Sending LE_ARP_REQUEST"); if (sizeoftlvs == 0) frame_size = sizeof(struct ctrl_frame) + lec_params.sizeoftlvs; else frame_size = sizeof(struct ctrl_frame) + sizeoftlvs; frame = (struct ctrl_frame *)buff; memset(frame, 0, frame_size); prefill_frame(frame, LE_ARP_REQ); frame->header.lec_id = htons(lec_params.c14_lec_id); frame->src_lan_dst.tag = htons(LAN_DST_MAC_ADDR); memcpy(frame->src_lan_dst.mac, lec_params.c6_mac_addr, ETH_ALEN); memcpy(frame->src_atm_addr, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); if (mac_addr != NULL) { memcpy(frame->target_lan_dst.mac, mac_addr, ETH_ALEN); if (is_rdesc) frame->target_lan_dst.tag = htons(LAN_DST_ROUTE_DESC); else frame->target_lan_dst.tag = htons(LAN_DST_MAC_ADDR); } else diag(COMPONENT, DIAG_DEBUG, "Sending targetless LE_ARP"); if (sizeoftlvs != 0) { if (read(lec_params.kernel->fd, (frame + 1), sizeoftlvs) < 0) { diag(COMPONENT, DIAG_ERROR, "reading TLVs from kernel failed: %s", strerror(errno)); return; } frame->num_tlvs++; } else if (lec_params.sizeoftlvs != 0) { memcpy((frame + 1), lec_params.tlvs, lec_params.sizeoftlvs); frame->num_tlvs += lec_params.num_tlvs; } send_frame(lec_params.ctrl_direct, frame, frame_size); return; } /* Associate the set of TLVs available in kernel socket * with this LEC. The old TLVs, if any, are removed. * Also, send a LE_REGISTER_REQUEST to register the TLVs * we just got. */ static void associate_tlvs(int sizeoftlvs) { if (lec_params.tlvs != NULL) free (lec_params.tlvs); lec_params.sizeoftlvs = 0; lec_params.num_tlvs = 0; lec_params.tlvs = malloc(sizeoftlvs); if (lec_params.tlvs == NULL) { diag(COMPONENT, DIAG_ERROR, "Could not associate TLVs, out of memory"); lec_params.sizeoftlvs = 0; lec_params.num_tlvs = 0; return; } if (read(lec_params.kernel->fd, lec_params.tlvs, sizeoftlvs) < 0) { diag(COMPONENT, DIAG_ERROR, "reading TLVs from kernel failed: %s", strerror(errno)); return; } lec_params.sizeoftlvs = sizeoftlvs; lec_params.num_tlvs = 1; /* FIXME, add TLV count in messages */ send_register_req(); return; } /* Send a LE_ARP_RESPONSE for a LAN destination (MAC address) when * the LAN destination is present in kernel bridging table and we * are acting as a proxy lane client */ static void send_proxy_arp_rsp(unsigned char *target_mac, uint32_t tran_id, uint16_t lec_id, unsigned char *src_atm_addr) { struct ctrl_frame *frame; int frame_size; frame_size = sizeof(struct ctrl_frame) + lec_params.sizeoftlvs; frame = malloc(frame_size); if (frame == NULL) return; memset(frame, 0, frame_size); prefill_frame(frame, LE_ARP_RSP); frame->header.tran_id = tran_id; frame->header.lec_id = lec_id; frame->header.flags = htons(REMOTE_ADDRESS); memcpy(frame->target_atm_addr, lec_params.c1n_my_atm_addr, ATM_ESA_LEN); frame->target_lan_dst.tag = htons(LAN_DST_MAC_ADDR); memcpy(frame->target_lan_dst.mac, target_mac, ETH_ALEN); memcpy(frame->src_atm_addr, src_atm_addr, ATM_ESA_LEN); frame->num_tlvs = lec_params.num_tlvs; if (lec_params.num_tlvs > 0) memcpy(frame + 1, lec_params.tlvs, lec_params.sizeoftlvs); if (send_frame(lec_params.ctrl_direct, frame, frame_size) < 0) diag(COMPONENT, DIAG_ERROR, "send_proxy_arp_rsp: send_frame() failed"); free(frame); return; } /* 7.1.25 Send a LE_TOPOLOGY_REQUEST */ static void send_topology_req(int flag) { struct ctrl_frame frame; prefill_frame(&frame, LE_TOPO_REQ); if (flag) frame.header.flags = htons(TOPO_CHANGE); send_frame(lec_params.ctrl_direct, &frame, sizeof(struct ctrl_frame)); return; } static const char *get_mesg_type_str(atmlec_msg_type type) { switch(type) { case l_set_mac_addr: return "SET_MAC_ADDR"; case l_del_mac_addr: return "DEL_MAC_ADDR"; case l_svc_setup: return "SVC_SETUP"; case l_arp_xmt: return "ARP_XMT"; case l_addr_delete: return "ADDR_DELETE"; case l_topology_change: return "TOPOLOGY_CHANGE"; case l_flush_tran_id: return "FLUSH_TRANSACTION_ID"; case l_flush_complete: return "FLUSH_COMPLETE"; case l_arp_update: return "ARP_UPDATE"; case l_config: return "CONFIG"; case l_associate_req: return "LANE2_ASSOCIATE_REQ"; case l_set_lecid: return "SET_LEC_ID"; case l_narp_req: return "LE_NARP_REQUEST"; case l_should_bridge: return "SHOULD_BRIDGE"; default: return ""; } } int get_lecsaddr(int itf, struct sockaddr_atmsvc *addr) { int fd, howmany; struct atmif_sioc req; char txt[80]; #ifdef ATM_GETLECSADDR fd = socket(AF_ATMSVC, SOCK_DGRAM, 0); if (fd < 0) { diag(COMPONENT, DIAG_ERROR, "could not create AF_ATMSVC socket"); return -1; } req.number = itf; req.arg = addr; req.length = sizeof( struct sockaddr_atmsvc ); if (ioctl(fd, ATM_GETLECSADDR, &req) < 0) { diag(COMPONENT, DIAG_DEBUG, "ioctl ATM_GETLECSADDR failed" ); close(fd); return -1; } close(fd); howmany = req.length; if (howmany == 0) { diag(COMPONENT, DIAG_ERROR, "No LECS address registered"); return -1; } if (addr->sas_addr.pub[0] != 0){ diag( COMPONENT, DIAG_ERROR, "Public address???" ); addr->sas_addr.pub[0] = 0; } atm2text(txt, 80, (struct sockaddr *)addr, 0); diag(COMPONENT, DIAG_DEBUG, "discovered LECS address %s", txt); return howmany; #else return -1; #endif } linux-atm-2.5.1/src/led/kernel.h0000644000200100001440000000225110321257226015244 0ustar chasusers/* * Marko Kiiskila carnil@cs.tut.fi * * Copyright (c) 1996 * Tampere University of Technology - Telecommunications Laboratory * All rights reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. * */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #ifndef KERNEL_H #define KERNEL_H #include int kernel_init(unsigned char *mac_addr, int itf); int msg_to_kernel(struct atmlec_msg *msg, int msg_size); int msg_from_kernel(void); int read_from_kernel (char *buff, int size); int get_lecsaddr(int itf, struct sockaddr_atmsvc *addr); #endif /* KERNEL_H */ linux-atm-2.5.1/src/led/lec.h0000644000200100001440000000450507360675443014551 0ustar chasusers/* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #ifndef LEC_H #define LEC_H #include "conn.h" /* * LANE client configuration and operation values. * These are in host byte order since there are * some values coming from network and some values * which are used by the host only */ struct lec_params { unsigned char c1n_my_atm_addr[ATM_ESA_LEN]; uint8_t c2_lan_type; uint8_t c3_max_frame_size; int c4_proxy_flag; char c5_elan_name[32 + 1]; char c6_mac_addr[ETH_ALEN]; int c7_ctrl_timeout; int c7i_initial_ctrl_timeout; int c7x_timeout_multiplier; int c7c_current_timeout; /* sum of c7i and c7x, LANEv2 5.3.1.7 */ unsigned char c9_les_atm_addr[ATM_ESA_LEN]; int c10_max_unknown_frames; int c11_max_unknown_frame_time; int c12_vcc_timeout; int c13_max_retry_count; uint16_t c14_lec_id; int c17_aging_time; int c18_forward_delay_time; int c19_topology_change; int c20_le_arp_response_time; int c21_flush_timeout; int c22_path_switching_delay; /* LANE2 variables follow */ int c29_v2_capable; uint32_t c31_elan_id; unsigned char c35_preferred_les[ATM_ESA_LEN]; int c35_contains_address; int c37_min_reconfig_delay; /* milliseconds */ int c38_max_reconfig_delay; /* milliseconds */ /* other stuff */ int itf_num; /* 1 for lec1 and so forth */ int sizeoftlvs; /* total size of TLVs associated with this LEC */ int num_tlvs; /* number of the TLVs */ unsigned char *tlvs; /* the TLVs */ char foreId[255]; /* connections to and from LES/BUS plus listen sockets */ Conn_t *kernel; Conn_t *ctrl_direct; Conn_t *ctrl_listen; /* Closed when join phase is over */ Conn_t *ctrl_dist; Conn_t *mcast_send; /* LANEv2 calls this Default Mcast Send VCC */ Conn_t *mcast_listen; Conn_t *data_listen; }; extern struct lec_params lec_params; #define LAN_TYPE_UNSPEC 0x00 /* Implies Ethernet/IEEE 802.3 */ #define LAN_TYPE_8023 0x01 /* IEEE 802.3 */ #define LAN_TYPE_8025 0x02 /* IEEE 802.5 */ #endif /* LEC_H */ linux-atm-2.5.1/src/led/main.c0000644000200100001440000005024411235572166014720 0ustar chasusers/* main.c - Do what ever a LANE client does */ /* * Marko Kiiskila carnil@cs.tut.fi * * Copyright (c) 1996 * Tampere University of Technology - Telecommunications Laboratory * All rights reserved. * * Permission to use, copy, modify and distribute this * software and its documentation is hereby granted, * provided that both the copyright notice and this * permission notice appear in all copies of the software, * derivative works or modified versions, and any portions * thereof, that both notices appear in supporting * documentation, and that the use of this software is * acknowledged in any publications resulting from using * the software. * * TUT ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION AND DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS * SOFTWARE. * */ /* Copyright (C) 1999 Heikki Vatiainen hessu@cs.tut.fi */ #if HAVE_CONFIG_H #include #endif /* Global includes */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* Local incs */ #include "join.h" #include "lec.h" #include "address.h" #include "display.h" #include "kernel.h" #define COMPONENT "main.c" static void main_loop(void); static int reset = 0; void sig_reset(int a) { reset = 1; return; } static void usage(const char *progname) { printf("Usage: %s [-c LECS_address | -s LES_address] [-e esi] [-n VLAN_name]" " [-m mesg_mask] [-l listen_address | selector] [-i interface_number]" " [-I physical_interface_number]" " [-t 1516|1580|4544|9234|18190] [-1] [-2] [-p] [-F logfile]" " [-f Fore specific name]\n", progname); } /* * My First C function (TM), hessu@cs.tut.fi */ static int esi_convert(char *parsestring, unsigned char *mac_addr) { const char *hexchars = "abcdefABCDEF0123456789"; char hexnum [17+1], curr; int i = 0, j = -1, hexindex = 0, tmp; char *k, *string; if (strchr(parsestring,'.') || /* do we have separators like */ strchr(parsestring,':')) { /* 00:20:22:23:04:05 */ k = parsestring; for (i = 0; i < strlen(parsestring); i++) { curr = *k; if (curr == ':' || curr == '.') { /* separator ? */ if (i - j == 3) { /* there were 2 hex characters */ ; } else if (i - j == 2) { /* there was only 1 hex char */ hexnum [hexindex] = hexnum [hexindex-1]; hexnum [hexindex-1] = '0'; hexindex +=1; } else /* too many hexchars in a byte */ return -1; j = i; /* j is the location of the last separator */ } else if (strchr(hexchars, curr) == NULL) /* not a hexchar ? */ return -1; else { /* we have a hex character */ hexnum [hexindex] = curr; hexindex +=1; } k++; } hexnum [hexindex] = '\0'; string = hexnum; } else { /* no separators */ k = parsestring; while (*k != '\0') { if (strchr(hexchars, *k) == NULL) return -1; k++; } string = parsestring; } /* the esi now looks like 002022230405 */ i = strlen(string); if (i != 12) return -1; for(i=0; i<6; i++) { sscanf(&string[i*2], "%2x", &tmp); mac_addr[i] = (unsigned char)tmp; } return 0; } /* Tells kernel what our LEC_ID is. * Returns < 0 for serisous error */ static int set_lec_id(uint16_t lec_id) { struct atmlec_msg msg; memset(&msg, 0, sizeof(struct atmlec_msg)); msg.type = l_set_lecid; msg.content.normal.flag = lec_id; if (msg_to_kernel(&msg, sizeof(struct atmlec_msg)) < 0) { diag(COMPONENT, DIAG_ERROR, "Could not tell kernel LEC_ID"); return -1; } return 0; } /* Tell kernel the parameters this ELAN has. * Returns < 0 for serious error */ static int config_kernel(void) { struct atmlec_msg msg; memset(&msg, 0, sizeof(struct atmlec_msg)); msg.type = l_config; msg.content.config.maximum_unknown_frame_count = lec_params.c10_max_unknown_frames; msg.content.config.max_unknown_frame_time = lec_params.c11_max_unknown_frame_time; msg.content.config.max_retry_count = lec_params.c13_max_retry_count; msg.content.config.aging_time = lec_params.c17_aging_time; msg.content.config.forward_delay_time = lec_params.c18_forward_delay_time; msg.content.config.arp_response_time = lec_params.c20_le_arp_response_time; msg.content.config.flush_timeout = lec_params.c21_flush_timeout; msg.content.config.path_switching_delay = lec_params.c22_path_switching_delay; msg.content.config.lane_version = (lec_params.c29_v2_capable) ? 2 : 1; msg.content.config.mtu = maxmtu2itfmtu(lec_params.c3_max_frame_size); msg.content.config.is_proxy = lec_params.c4_proxy_flag; if (msg_to_kernel(&msg, sizeof(struct atmlec_msg)) < 0) { diag(COMPONENT, DIAG_ERROR, "Could not tell kernel ELAN parameters"); return -1; } return 0; } int main(int argc, char **argv) { char mac_addr[ETH_ALEN]; char elan_name[32 + 1]; char preferred_les[ATM_ESA_LEN]; /* LANE2 */ char foreId[255]; /* Max size for a TLV */ char atm2textbuff[100]; char esibuff[20]; int esi_set = 0; int listen_addr_set = 0; int atm_set=0; int proxy_flag = 0; int lane_version = 0; /* LANE2 */ int max_frame_size = MTU_UNSPEC; int lecs_method = LECS_WELLKNOWN; int poll_ret = 0, itf = 0, phys_itf = 0, selector = 0; int daemon_flag = 0; pid_t pid; struct sockaddr_atmsvc manual_atm_addr; struct sockaddr_atmsvc listen_addr; char pidbuf[PATH_MAX + 1]; int fd; int retval; memset(elan_name, '\0', sizeof(elan_name)); memset(foreId, '\0', sizeof(foreId)); memset(preferred_les, 0, ATM_ESA_LEN); memset(&manual_atm_addr, 0, sizeof(struct sockaddr_atmsvc)); memset(&listen_addr, 0, sizeof(struct sockaddr_atmsvc)); listen_addr.sas_family = AF_ATMSVC; set_application("zeppelin"); /* for debug msgs */ while(poll_ret != -1) { poll_ret = getopt(argc, argv, "bc:e:n:s:m:l:i:I:q:12pf:t:F:"); switch(poll_ret) { case 'b': daemon_flag = 1; break; case 'c': if (atm_set) { usage(argv[0]); exit(-1); } if (text2atm(optarg, (struct sockaddr *)&manual_atm_addr, sizeof(struct sockaddr_atmsvc), T2A_NAME) < 0) { diag(COMPONENT, DIAG_ERROR, "Invalid LECS address"); usage(argv[0]); exit(-1); } atm2text(atm2textbuff, sizeof(atm2textbuff), (struct sockaddr *)&manual_atm_addr, 0); diag(COMPONENT, DIAG_INFO, "LECS address: %s", atm2textbuff); lecs_method = LECS_MANUAL; atm_set=1; break; case 'e': if(esi_convert(optarg, mac_addr)<0) { diag(COMPONENT, DIAG_ERROR, "Invalid ESI format"); usage(argv[0]); exit(-1); } mac2text(esibuff, mac_addr); diag(COMPONENT, DIAG_DEBUG, "LEC ESI:%s", esibuff); esi_set=1; break; case 'n': if (strlen(optarg) > 32) { diag(COMPONENT, DIAG_ERROR, "ELAN name too long"); exit(-1); } strcpy(elan_name, optarg); diag(COMPONENT, DIAG_INFO, "Vlan name :'%s'", elan_name); break; case 's': if (atm_set) { usage(argv[0]); exit(-1); } if (text2atm(optarg, (struct sockaddr *)&manual_atm_addr, sizeof(struct sockaddr_atmsvc), T2A_NAME) < 0) { diag(COMPONENT, DIAG_ERROR, "Invalid LES address"); usage(argv[0]); exit(-1); } atm2text(atm2textbuff, sizeof(atm2textbuff), (struct sockaddr *)&manual_atm_addr, 0); diag(COMPONENT, DIAG_INFO, "LES address: %s", atm2textbuff); lecs_method = LECS_NONE; atm_set=1; break; case 'm': set_verbosity(NULL, DIAG_DEBUG); break; case 'l': if (isdigit(optarg[0]) && strlen(optarg) < 4 && sscanf(optarg, "%d", &selector) && selector >=0 && selector <= 0xff) { listen_addr.sas_addr.prv[ATM_ESA_LEN - 1] = (char) selector; diag(COMPONENT, DIAG_INFO, "Selector byte set " "to %d", selector); } else { if (text2atm(optarg, (struct sockaddr *)&listen_addr, sizeof(struct sockaddr_atmsvc), T2A_NAME) < 0) { diag(COMPONENT, DIAG_ERROR, "Invalid ATM listen address"); usage(argv[0]); exit(-1); } listen_addr_set = 1; } break; case 'i': if (sscanf(optarg, "%d", &itf) <= 0 || itf >= MAX_LEC_ITF) { diag(COMPONENT, DIAG_ERROR, "Invalid interface number"); usage(argv[0]); exit(-1); } diag(COMPONENT, DIAG_INFO, "Interface number set to %d", itf); break; case 'I': if (sscanf(optarg, "%d", &phys_itf) <= 0 || phys_itf < 0) { diag(COMPONENT, DIAG_ERROR, "Invalid physical interface number"); usage(argv[0]); exit(-1); } diag(COMPONENT, DIAG_INFO, "Physical interface number set to %d", phys_itf); break; case 'q': #if 0 if (text2qos(optarg,NULL,0) < 0) { diag(COMPONENT, DIAG_ERROR, "Invalid QOS specification"); usage(argv[0]); exit(-1); } qos_spec = optarg; #endif diag(COMPONENT, DIAG_INFO, "-q is deprecated, ignoring it"); break; case '1': lane_version = 1; break; case '2': lane_version = 2; break; case 'p': proxy_flag = 1; break; case 'f': if (strlen(optarg) > 255) { diag(COMPONENT, DIAG_ERROR, "foreId too long"); exit(-1); } memcpy (foreId, optarg, strlen(optarg)); foreId[strlen(optarg)] = '\0'; diag(COMPONENT, DIAG_INFO, "foreId :'%s'", foreId); break; case 't': /* ERIC */ if( !strncmp( optarg, "1516", 4 )) max_frame_size = MTU_1516; else if( !strncmp( optarg, "1580", 4 )) max_frame_size = MTU_1580; else if( !strncmp( optarg, "4544", 4 )) max_frame_size = MTU_4544; else if( !strncmp( optarg, "9234", 4 )) max_frame_size = MTU_9234; else if( !strncmp( optarg, "18190", 5 )) max_frame_size = MTU_18190; break; case 'F': set_logfile(optarg); diag(COMPONENT, DIAG_DEBUG, "logfile set to %s", optarg); break; case -1: break; default: usage(argv[0]); exit(-1); } } if (argc != optind) { usage(argv[0]); exit(1); } if (lane_version == 1 && max_frame_size == MTU_1580) { diag(COMPONENT, DIAG_ERROR, "MTU 1580 not defined with LANEv1"); exit(-1); } /* Reserve signals */ signal(SIGHUP, sig_reset); signal(SIGPIPE, SIG_IGN); if (!esi_set) { if(addr_getesi(mac_addr, phys_itf) < 0) { diag(COMPONENT, DIAG_ERROR, "Can't get ESI from kernel!"); return -1; } mac2text(esibuff, mac_addr); diag(COMPONENT, DIAG_DEBUG, "LEC ESI:%s", esibuff); if (itf != 0) mac_addr[0] = 0x2 | ((itf - 1) << 2); } if ((itf = kernel_init(mac_addr, itf)) < 0 ) { diag(COMPONENT, DIAG_FATAL, "Kernel interface creation failed, exiting..."); return -1; } if (daemon_flag == 1) { daemon_flag = 0; pid = fork(); if (pid < 0) { diag(COMPONENT, DIAG_FATAL, "fork failed, exiting..."); return -1; } if (pid) { /* parent */ return 0; } else { /* child */ if (setsid() < 0) { diag(COMPONENT, DIAG_FATAL, "setsid failed, exiting..."); return -1; } } } sprintf(pidbuf, "/var/run/lec%d.pid", itf); fd = open(pidbuf, O_CREAT | O_WRONLY, 0600); if (fd < 0) { diag(COMPONENT, DIAG_FATAL, "open(%s, ..) failed, %s", pidbuf, strerror(errno)); return -1; } sprintf(pidbuf, "%d\n", getpid()); write(fd, pidbuf, strlen(pidbuf)); close(fd); /* Loop here until the Sun gets cold */ while (1) { if (!listen_addr_set) { char sel = listen_addr.sas_addr.prv[ATM_ESA_LEN - 1]; if (get_listenaddr(listen_addr.sas_addr.prv, phys_itf) < 0) { diag(COMPONENT, DIAG_FATAL, "Could not figure out my ATM address"); exit(-1); } listen_addr.sas_addr.prv[ATM_ESA_LEN - 1] = sel; } atm2text(atm2textbuff, sizeof(atm2textbuff), (struct sockaddr *)&listen_addr, A2T_NAME | A2T_PRETTY | A2T_LOCAL); diag(COMPONENT, DIAG_INFO, "Our ATM address: %s", atm2textbuff); diag(COMPONENT, DIAG_DEBUG, "initializing lec parameters"); init_lec_params(mac_addr, elan_name, listen_addr.sas_addr.prv, itf, foreId, max_frame_size, proxy_flag, lane_version); if (lecs_method != LECS_MANUAL && lecs_method != LECS_NONE) { diag(COMPONENT, DIAG_DEBUG, "trying to get LECS address from ILMI"); /* Not sure why this memset is necessary */ memset(&manual_atm_addr, 0, sizeof(struct sockaddr_atmsvc)); retval = get_lecsaddr(phys_itf, &manual_atm_addr); if (retval <= 0) { diag(COMPONENT, DIAG_DEBUG, "get_lecsaddr failed; not enough " "memory allocated for all addresses " "or no LECS address registered"); } else { diag(COMPONENT, DIAG_DEBUG, "obtained LECS address from ILMI"); lecs_method = LECS_FROM_ILMI; } } diag(COMPONENT, DIAG_DEBUG, "About to connect LECS"); if (lec_configure(lecs_method, &manual_atm_addr, &listen_addr) < 0) { close_connections(); random_delay(); continue; } diag(COMPONENT, DIAG_DEBUG, "About to connect LES"); if (les_connect(lecs_method, &manual_atm_addr, &listen_addr) < 0) { close_connections(); random_delay(); continue; } diag(COMPONENT, DIAG_DEBUG, "About to connect BUS"); if (bus_connect() < 0) { close_connections(); random_delay(); continue; } diag(COMPONENT, DIAG_DEBUG, "About to create data direct listen socket"); if (create_data_listen() < 0) { close_connections(); random_delay(); continue; } diag(COMPONENT, DIAG_DEBUG, "About to tell kernel our LEC_ID %d", lec_params.c14_lec_id); if (set_lec_id(lec_params.c14_lec_id) < 0) { close_connections(); continue; } diag(COMPONENT, DIAG_DEBUG, "About to tell kernel LEC parameters"); if (config_kernel() < 0) { close_connections(); continue; } diag(COMPONENT, DIAG_DEBUG, "Joined ELAN '%s' successfully", lec_params.c5_elan_name); main_loop(); diag(COMPONENT, DIAG_INFO, "Resetting..."); close_connections(); random_delay(); reset = 0; } return 0; /* not reached */ } /* zeppelin loops here when it is in operational state. The check * against reset variable is probably not needed since select() will * return < 0 when a signal interrupts it. */ static void main_loop(void) { fd_set rfds, cfds; int retval, ret1, ret2, ret3; while(!reset) { retval = ret1 = ret2 = ret3 = 0; FD_ZERO(&rfds); conn_get_fds(&rfds); FD_ZERO(&cfds); conn_get_connecting_fds(&cfds); retval = select(FD_SETSIZE, &rfds, &cfds, NULL, NULL); diag(COMPONENT, DIAG_DEBUG, "main_loop: select returned %d", retval); if (retval < 0) { diag(COMPONENT, DIAG_ERROR, "main_loop: select: %s", strerror(errno)); break; /* leave main_loop */ } if (retval == 0) { /* Timeout, funny, since we have no timers */ continue; } if (FD_ISSET(lec_params.kernel->fd, &rfds)) { ret1 = msg_from_kernel(); FD_CLR(lec_params.kernel->fd, &rfds); } ret2 = complete_connections(&cfds); ret3 = check_connections(&rfds); if (ret1 < 0 || ret2 < 0 || ret3 < 0) break; /* leave main_loop */ } diag(COMPONENT, DIAG_DEBUG, "exiting main_loop"); return; } linux-atm-2.5.1/src/led/zeppelin.80000644000200100001440000001165107654526110015544 0ustar chasusers.TH zeppelin 8 "Nov 29, 1999" "Linux" "Maintenance Commands" .SH NAME zeppelin \- ATM LAN Emulation client demon (LED) Zeppelin .SH SYNOPSIS .B zeppelin .RB [ \-b\ ] .RB [ \-c\ \fILECS_address\fP\ |\ \-s\ \fILES_address\fP ] .RB [ \-e\ \fIesi\fP ] .RB [ \-n\ \fIVLAN_name\fP ] .RB [ \-m\ \fImesg_mask\fP ] .RB [ \-l\ \fIlisten_address\ | \ selector\fP ] .RB [ \-i\ \fIinterface_number\fP ] .RB [ \-I\ \fIphysical_interface_number\fP ] .RB [ \-t\ \fI1516|1580|4544|9234|18190\fP ] .RB [ \-1\ ] .RB [ \-2\ ] .RB [ \-p\ ] .RB [ \-F\ \fIlogfile\fP ] .RB [ \-f\ \fIFore_specific_name\fP ] .SH DESCRIPTION A LAN Emulation Client is an entity in an ATM endstation that performs data forwarding, address resolution and other control functions. It uses the LUNI interface when communicating with other components in emulated LANs. It provides upper protocol layers a MAC like interface similar to IEEE 802.3/Ethernet or IEEE 802.5/Token Ring LAN. .PP LAN Emulation client code is divided into two parts: user space application LAN Emulation Demon called (LED) \fBzeppelin(8)\fP, and the kernel component. \fBZeppelin\fP is responsible for control operations needed in LAN Emulation clienthood. It forms the necessary VCCs and receives all the LE control frames and acts accordingly. It also controls the operation of the LEC kernel component. .PP Linux LEC supports only Ethernet type of emulated LAN. .PP \fBSIGHUP\fP causes restart of the LEC. All resources are released and \fBzeppelin\fP is started. .SH OPTIONS .IP \fB\-b\fP Run in background (i.e. in a forked child process) after initializing kernel interface. .IP \fB\-c\ \fILECS_address\fP ATM address of \fBlecs(8)\fP (Lan Emulation Configuration Server), if not set, Well-Known server address is used. .IP \fB\-s\ \fILES_address\fP ATM address of \fBles(8)\fP (Lan Emulation Server), can be used in bypassing configuration phase in joining emulated Lan i.e \fBlecs\fP address is not used. .IP \fB\-e\ \fIesi\fP Mac address to use when communicating in Emulated LAN. E.g. 00:20:22:23:04:05 . .IP \fB\-n\ \fIVLAN_name\fP Name of the virtual LAN to which joining is requested. This is used in LE_CONFIGURE_REQUEST to LECS or LE_JOIN_RESPONSE to LES, if configuration phase is bypassed. .IP \fB\-m\ \fImesg_mask\fP Sometimes one wants to know more what is happening in LE daemon e.g. when nothing works. This is a hexadecimal long value setting global message mask. 0 = No messages, ffff = All messages. .IP \fB\-l\ \fIlisten_address\ |\ selector\fP Local ATM address that zeppelin uses as local binding point in signalling. Use this if you are running more than one client or a set of LE servers. The local ATM address can be specified by either giving the full ATM address or the desired selector byte. .IP \fB\-i\ \fIinterface_number\fP Linux LEC supports up to 40+8 network interfaces. The interface_number tells zeppelin to which of these to attach. Ethernet type network interfaces are numbered from "lec0" to "lec39" and Token Ring interfaces are from "lec40" to "lec47". These parameters are tweakable during the kernel compile, see . .IP \fB\-I\ \fIphysical_interface_number\fP The physical interface this LANE client should bind to. If your host has multiple ATM network cards, you can use this option to choose which card this zeppelin will use. .IP \fB\-t\ \fIMTU\fP The MTU of ELAN to join. You need to also use \fBifconfig(8)\fP to set the MTU of the LANE interface. .IP \fB\-1\fP Run as LANEv1 client. This is the default. .IP \fB\-2\fP Run as LANEv2 client. This is required by MPOA. .IP \fB\-p\fP Enable proxy. When started with this option, it is possible to bridge packets between ATM and Ethernet. That is, you can use LANE interfaces with normal bridging. See the Bridging mini-Howto for more info. .IP \fB\-F\ \fIlogfile\fP Instead of writing debug messages to \fBstderr\fP, write the messages to the file \fBlogfile\fP. Use \fBsyslog\fP as the file name to use the \fBsyslog(3)\fP facility. .IP \fB\-f\ \fIFore\ specific\ name\fP The LANE servers on Fore ATM switches can display a special name if a client can supply one. This name shows with command \'conf lane les show advanced\'. .SH TOKEN RING CONSIDERATIONS A number of lec interfaces is reserved for Token Ring ELANs when the kernel is compiled with Token Ring (CONFIG_TR) support. See the discussion about interface_number command line option above. The Linux Token Ring LANE client does not support bridging between legacy Token Ring and ATM parts of the ELAN, so using the -p option is not recommended. Token Ring support has received less testing than its Ethernet counterpart. .SH FILES .IP \fI/var/run/lec[interface number].pid\fP The file containing the process id of zeppelin. .SH BUGS John Bonham died 1980 and Led Zeppelin broke. .PP Please report any other bugs to Heikki Vatiainen .SH AUTHORS Marko Kiiskila, TUT and Heikki Vatiainen, TUT .SH "SEE ALSO" lecs(8), mpcd(8), atmsigd(8), les(8), qos(7) .\"{{{}}} linux-atm-2.5.1/src/led/Makefile.in0000644000200100001440000004750511304770375015702 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ sbin_PROGRAMS = zeppelin$(EXEEXT) subdir = src/led DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" PROGRAMS = $(sbin_PROGRAMS) am_zeppelin_OBJECTS = join.$(OBJEXT) conn.$(OBJEXT) main.$(OBJEXT) \ address.$(OBJEXT) frames.$(OBJEXT) display.$(OBJEXT) \ kernel.$(OBJEXT) zeppelin_OBJECTS = $(am_zeppelin_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(zeppelin_SOURCES) DIST_SOURCES = $(zeppelin_SOURCES) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ zeppelin_SOURCES = join.c join.h conn.c conn.h main.c address.c address.h \ frames.c frames.h display.c display.h \ kernel.c kernel.h frame_defs.h lec.h zeppelin_LDADD = $(top_builddir)/src/lib/libatm.la zeppelin_DEPENDENCIES = $(zeppelin_LDADD) man_MANS = zeppelin.8 EXTRA_DIST = $(man_MANS) COPYRIGHT.TUT all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/led/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/led/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list zeppelin$(EXEEXT): $(zeppelin_OBJECTS) $(zeppelin_DEPENDENCIES) @rm -f zeppelin$(EXEEXT) $(LINK) $(zeppelin_OBJECTS) $(zeppelin_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/address.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conn.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/display.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frames.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/join.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kernel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man8: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" @list=''; test -n "$(man8dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) installdirs: for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-sbinPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-sbinPROGRAMS uninstall-man: uninstall-man8 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-sbinPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man8 install-pdf install-pdf-am install-ps \ install-ps-am install-sbinPROGRAMS install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-man uninstall-man8 \ uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/lib/0000755000200100001440000000000011304770376013625 5ustar chasuserslinux-atm-2.5.1/src/lib/CVS/0000755000200100001440000000000011304767137014261 5ustar chasuserslinux-atm-2.5.1/src/lib/CVS/Root0000644000200100001440000000007411304767137015130 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/lib/CVS/Repository0000644000200100001440000000002211304767137016355 0ustar chasuserslinux-atm/src/lib linux-atm-2.5.1/src/lib/CVS/Entries0000644000200100001440000000211111304767137015610 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:27 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile.am/1.2.2.2/Wed Jul 11 15:26:17 2007//TV2_5_1 /ans.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atm2text.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmequal.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmres.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /common.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /diag.c/1.2.2.2/Thu Jan 6 21:44:11 2005//TV2_5_1 /kptr.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /misc.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /qos2text.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /qosequal.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /sap2text.c/1.2.2.1/Thu May 1 13:23:18 2003//TV2_5_1 /sapequal.c/1.2.2.1/Fri Dec 10 17:46:56 2004//TV2_5_1 /sdu2cell.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /text2atm.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /text2ip.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /text2qos.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /text2sap.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /timer.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /unix.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 D linux-atm-2.5.1/src/lib/CVS/Tag0000644000200100001440000000001011304767137014706 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/lib/.cvsignore0000644000200100001440000000035110666025263015622 0ustar chasusersMakefile Makefile.in .deps .libs ans.lo atm2text.lo atmequal.lo common.lo diag.lo kptr.lo libatm.la misc.lo qos2text.lo qosequal.lo sap2text.lo sapequal.lo sdu2cell.lo text2atm.lo text2ip.lo text2qos.lo text2sap.lo timer.lo unix.lo linux-atm-2.5.1/src/lib/Makefile-0.790000644000200100001440000000123607360675443015670 0ustar chasusersATM_OBJS=text2atm.o atm2text.o atmequal.o sdu2cell.o text2qos.o qos2text.o \ qosequal.o sap2text.o text2sap.o sapequal.o misc.o ifeq (/usr/lib/libresolv.a,$(wildcard /usr/lib/libresolv.a)) ATM_OBJS += ans_l.o else ATM_OBJS += ans.o endif ATMD_OBJS=common.o diag.o kptr.o text2ip.o timer.o unix.o PGMS=#test GENLIBS=libatm.a libatmd.a SYSHDR=atm.h atmd.h atmsap.h OPTSYSHDR=stdint.h do_all: libatm.a libatmd.a include ../Rules.make ../lib/libatm.a: libatm.a libatm.a: $(ATM_OBJS) ar rcs libatm.a $(ATM_OBJS) ../lib/libatmd.a: libatmd.a libatmd.a: $(ATMD_OBJS) ar rcs libatmd.a $(ATMD_OBJS) ans_l.o: ans.o ld -r -o ans_l.o ans.o -L/usr/lib -lresolv linux-atm-2.5.1/src/lib/Makefile.am0000644000200100001440000000113110645173231015647 0ustar chasusers#lib_LTLIBRARIES = libatm.la libatmd.la lib_LTLIBRARIES = libatm.la # ATMLIBS_VERSION comes from configure.in in the toplevel directory AM_LDFLAGS = -version-info @LIBVER_CURRENT@:@LIBVER_REVISION@:@LIBVER_AGE@ libatm_la_SOURCES = text2atm.c atm2text.c atmequal.c sdu2cell.c text2qos.c \ qos2text.c qosequal.c sap2text.c text2sap.c sapequal.c \ misc.c atmres.h ans.c \ common.c diag.c kptr.c text2ip.c timer.c unix.c libatm_la_LIBADD = -lresolv libatm_la_DEPENDENCIES = $(top_builddir)/src/include/atm.h \ $(top_builddir)/src/include/atmsap.h \ $(top_builddir)/src/include/atmd.h linux-atm-2.5.1/src/lib/ans.c0000644000200100001440000001502307360675443014561 0ustar chasusers/* ans.c - Interface for text2atm and atm2text to ANS */ /* Written 1996-2000 by Werner Almesberger, EPFL-LRC/ICA */ /* * This stuff is a temporary hack to avoid using gethostbyname_nsap and such * without doing the "full upgrade" to getaddrinfo/getnameinfo. This also * serves as an exercise for me to get all the details right before I propose * a patch that would eventually end up in libc (and that should therefore be * as stable as possible). */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include "atm.h" #include "atmres.h" #define MAX_ANSWER 2048 #define MAX_NAME 1024 #define MAX_LINE 2048 /* in /etc/e164_cc */ #define E164_CC_DEFAULT_LEN 2 #define E164_CC_FILE "/etc/e164_cc" #define GET16(pos) (((pos)[0] << 8) | (pos)[1]) static int ans(const char *text,int wanted,void *result,int res_len) { unsigned char answer[MAX_ANSWER]; unsigned char name[MAX_NAME]; unsigned char *pos,*data,*found; int answer_len,name_len,data_len,found_len; int questions,answers; found_len = 0; /* gcc wants it */ if ((answer_len = res_search(text,C_IN,wanted,answer,MAX_ANSWER)) < 0) return TRY_OTHER; /* * Response header: id, flags, #queries, #answers, #authority, * #additional (all 16 bits) */ pos = answer+12; if (answer[3] & 15) return TRY_OTHER; /* rcode != 0 */ questions = GET16(answer+4); if (questions != 1) return TRY_OTHER; /* trouble ... */ answers = GET16(answer+6); if (answers < 1) return TRY_OTHER; /* * Query: name, type (16), class (16) */ if ((name_len = dn_expand(answer,answer+answer_len,pos,name,MAX_NAME)) < 0) return TRY_OTHER; pos += name_len; if (GET16(pos) != wanted || GET16(pos+2) != C_IN) return TRY_OTHER; pos += 4; /* * Iterate over answers until we find something we like, giving priority * to ATMA_AESA (until signaling is fixed to work with E.164 too) */ found = NULL; while (answers--) { /* * RR: name, type (16), class (16), TTL (32), resource_len (16), * resource_data ... */ if ((name_len = dn_expand(answer,answer+answer_len,pos,name,MAX_NAME)) < 0) return TRY_OTHER; pos += name_len; data_len = GET16(pos+8); data = pos+10; pos = data+data_len; if (GET16(data-10) != wanted || GET16(data-8) != C_IN || !--data_len) continue; switch (wanted) { case T_NSAP: data_len++; if (data_len != ATM_ESA_LEN) continue; memcpy(((struct sockaddr_atmsvc *) result)-> sas_addr.prv,data,ATM_ESA_LEN); return 0; case T_ATMA: switch (*data++) { case ATMA_AESA: if (data_len != ATM_ESA_LEN) continue; memcpy(((struct sockaddr_atmsvc *) result)-> sas_addr.prv,data,ATM_ESA_LEN); return 0; case ATMA_E164: if (data_len > ATM_E164_LEN) continue; if (!found) { found = data; found_len = data_len; } break; default: continue; } case T_PTR: if (dn_expand(answer,answer+answer_len,data,result, res_len) < 0) return FATAL; return 0; default: continue; } } if (!found) return TRY_OTHER; memcpy(((struct sockaddr_atmsvc *) result)->sas_addr.pub,found, found_len); ((struct sockaddr_atmsvc *) result)->sas_addr.pub[found_len] = 0; return 0; } int ans_byname(const char *text,struct sockaddr_atmsvc *addr,int length, int flags) { if (!(flags & T2A_SVC) || length != sizeof(*addr)) return TRY_OTHER; memset(addr,0,sizeof(*addr)); addr->sas_family = AF_ATMSVC; if (!ans(text,T_ATMA,addr,length)) return 0; return ans(text,T_NSAP,addr,length); } static int encode_nsap(char *buf,const unsigned char *addr) { static int fmt_dcc[] = { 2,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 4,2,0 }; static int fmt_e164[] = { 2,12,1,1,1,1,1,1,1,1,16,2,0 }; int *fmt; int pos,i,j; switch (*addr) { case ATM_AFI_DCC: case ATM_AFI_ICD: case ATM_AFI_LOCAL: case ATM_AFI_DCC_GROUP: case ATM_AFI_ICD_GROUP: case ATM_AFI_LOCAL_GROUP: fmt = fmt_dcc; break; case ATM_AFI_E164: case ATM_AFI_E164_GROUP: fmt = fmt_e164; break; default: return TRY_OTHER; } pos = 2*ATM_ESA_LEN; for (i = 0; fmt[i]; i++) { pos -= fmt[i]; for (j = 0; j < fmt[i]; j++) sprintf(buf++,"%x", (addr[(pos+j) >> 1] >> 4*(1-((pos+j) & 1))) & 0xf); *buf++ = '.'; } strcpy(buf,"AESA.ATMA.INT."); return 0; } static int encode_nsap_new(char *buf,const unsigned char *addr) { int i; int digit; for (i = 20; i; ) { i--; digit = addr[i] & 0x0F; *(buf++) = digit + (digit >= 10 ? '7' : '0'); *(buf++) = '.'; digit = ((unsigned char) (addr[i])) >> 4; *(buf++) = digit + (digit >= 10 ? '7' : '0'); *(buf++) = '.'; } strcpy (buf, "NSAP.INT."); return 0; } static int cc_len(int p0,int p1) { static char *cc_table = NULL; FILE *file; char buffer[MAX_LINE]; char *here; int cc; if (!cc_table) { if (!(cc_table = malloc(100))) { perror("malloc"); return E164_CC_DEFAULT_LEN; } memset(cc_table,E164_CC_DEFAULT_LEN,100); if (!(file = fopen(E164_CC_FILE,"r"))) perror(E164_CC_FILE); else { while (fgets(buffer,MAX_LINE,file)) { here = strchr(buffer,'#'); if (here) *here = 0; if (sscanf(buffer,"%d",&cc) == 1) { if (cc < 10) cc_table[cc] = 1; else if (cc < 100) cc_table[cc] = 2; else cc_table[cc/10] = 3; } } fclose(file); } } if (cc_table[p0] == 1) return 1; return cc_table[p0*10+p1]; } static int encode_e164(char *buf,const char *addr) { const char *prefix,*here; prefix = addr+cc_len(addr[0]-48,addr[1]-48); here = strchr(addr,0); while (here > prefix) { *buf++ = *--here; *buf++ = '.'; } while (here > addr) *buf++ = *addr++; strcpy(buf,".E164.ATMA.INT."); return 0; } int ans_byaddr(char *buffer,int length,const struct sockaddr_atmsvc *addr, int flags) { char tmp[MAX_NAME]; /* could be smaller ... */ int res; if (addr->sas_addr.prv) { res = encode_nsap(tmp,addr->sas_addr.prv); if (!res && !ans(tmp,T_PTR,buffer,length)) return 0; res = encode_nsap_new(tmp,addr->sas_addr.prv); if (res < 0) return res; return ans(tmp,T_PTR,buffer,length); } else { res = encode_e164(tmp,addr->sas_addr.pub); if (res < 0) return res; return ans(tmp,T_PTR,buffer,length); } } linux-atm-2.5.1/src/lib/atm2text.c0000644000200100001440000001257607360675443015562 0ustar chasusers/* atm2text.c - Converts binary encoding of ATM address to textual representation */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include "atm.h" #include "atmres.h" static int put_item(char **buffer,int *length,int value) { char *walk,*scan; char tmp; if (!*length) return FATAL; if (value <= 0) { if (!value) *(*buffer)++ = '0'; else if (value == ATM_VCI_ANY) *(*buffer)++ = '*'; else if (value == ATM_VCI_UNSPEC) *(*buffer)++ = '?'; else return FATAL; /* ATM_*_ANY and ATM_*_UNSPEC have all the same value, respectively */ (*length)--; return 0; } for (walk = *buffer; value; value /= 10) { if (!(*length)--) return FATAL; *walk++ = '0'+(value % 10); } for (scan = walk-1; scan > *buffer; (*buffer)++) { tmp = *scan; *scan-- = **buffer; **buffer = tmp; } *buffer = walk; return 0; } static int do_pvc(char *buffer,int length,const struct sockaddr_atmpvc *addr, int flags) { int orig_len; orig_len = length; if (put_item(&buffer,&length,addr->sap_addr.itf)) return FATAL; if (!length--) return FATAL; *buffer++ = '.'; if (put_item(&buffer,&length,addr->sap_addr.vpi)) return FATAL; if (!length--) return FATAL; *buffer++ = '.'; if (put_item(&buffer,&length,addr->sap_addr.vci)) return FATAL; if (!length) return FATAL; *buffer = 0; return orig_len-length; } static int do_svc(char *buffer,int length,const struct sockaddr_atmsvc *addr, int flags) { static int pure[] = { 20 }; static int bin[] = { 1,2,10,6,1 }; static int local[] = { 1,12,6,1 }; static int e164[] = { 4,6,1 }; int orig_len,len,i,left,value; int *fmt; orig_len = length; if (!*addr->sas_addr.pub && !*addr->sas_addr.prv) return FATAL; if (*addr->sas_addr.pub) { len = strlen(addr->sas_addr.pub); if (!*addr->sas_addr.prv && length >= len+2) { *buffer++ = '+'; length--; } if (length < len+1) return FATAL; strcpy(buffer,addr->sas_addr.pub); buffer += len; length -= len; if (*addr->sas_addr.prv) { if (!length--) return FATAL; *buffer++ = '+'; } } if (*addr->sas_addr.prv) { fmt = pure; i = 0; if (flags & A2T_PRETTY) switch (*addr->sas_addr.prv) { case ATM_AFI_DCC: case ATM_AFI_ICD: case ATM_AFI_DCC_GROUP: case ATM_AFI_ICD_GROUP: fmt = bin; break; case ATM_AFI_LOCAL: case ATM_AFI_LOCAL_GROUP: fmt = local; break; case ATM_AFI_E164: case ATM_AFI_E164_GROUP: for (i = 2; i < 17; i++) if (addr->sas_addr.prv[i >> 1] & (0xf0 >> 4*(i & 1))) break; while (i < 17) { value = (addr->sas_addr.prv[i >> 1] >> 4*(1-(i & 1))) & 0xf; if (value > 9) return FATAL; if (!length--) return FATAL; *buffer++ = '0'+value; i++; } if (!length--) return FATAL; *buffer++ = ':'; i = 9; fmt = e164; break; default: break; } for (left = *fmt++; i < ATM_ESA_LEN; i++) { if (!left--) { if (!length--) return FATAL; *buffer++ = '.'; left = *fmt++-1; } if (length < 2) return FATAL; sprintf(buffer,"%02X",addr->sas_addr.prv[i]); length -= 2; buffer += 2; } } if (!length) return FATAL; *buffer = 0; return orig_len-length; } static int search(FILE *file,char *buffer,int length, const struct sockaddr *addr,int flags) { struct sockaddr_atmsvc temp; char line[MAX_ATM_NAME_LEN+1]; const char *here; while (fgets(line,MAX_ATM_NAME_LEN,file)) { if (!(here = strtok(line,"\t\n "))) continue; if (text2atm(here,(struct sockaddr *) &temp,sizeof(temp),flags) < 0) continue; if (temp.sas_family != addr->sa_family) continue; if (temp.sas_family == AF_ATMPVC) { if (((const struct sockaddr_atmpvc *) addr)->sap_addr.itf != ((struct sockaddr_atmpvc *) &temp)->sap_addr.itf || ((const struct sockaddr_atmpvc *) addr)->sap_addr.vpi != ((struct sockaddr_atmpvc *) &temp)->sap_addr.vpi || ((const struct sockaddr_atmpvc *) addr)->sap_addr.vci != ((struct sockaddr_atmpvc *) &temp)->sap_addr.vci) continue; } else if (!atm_equal(addr,(struct sockaddr *) &temp,0,0)) continue; while ((here = strtok(NULL,"\t\n "))) if (strlen(here) < length) { strcpy(buffer,here); return 0; } return FATAL; } return TRY_OTHER; } static int try_name(char *buffer,int length,const struct sockaddr *addr) { FILE *file; int result; if (!(file = fopen(HOSTS_ATM,"r"))) return TRY_OTHER; result = search(file,buffer,length,addr,addr->sa_family == AF_ATMPVC ? T2A_PVC : T2A_SVC); (void) fclose(file); return result; } int atm2text(char *buffer,int length,const struct sockaddr *addr,int flags) { int result; if (addr->sa_family != AF_ATMPVC && addr->sa_family != AF_ATMSVC) return -1; if (!length) return -1; if (flags & A2T_NAME) { result = try_name(buffer,length,addr); if (result == TRY_OTHER && !(flags & A2T_LOCAL)) result = ans_byaddr(buffer,length, (const struct sockaddr_atmsvc *) addr,flags); if (result == FATAL) return FATAL; if (result != TRY_OTHER) return strlen(buffer); } if (addr->sa_family == AF_ATMPVC) return do_pvc(buffer,length,(const struct sockaddr_atmpvc *) addr, flags); else return do_svc(buffer,length,(const struct sockaddr_atmsvc *) addr, flags); return -1; } linux-atm-2.5.1/src/lib/atmequal.c0000644000200100001440000000522007360675443015607 0ustar chasusers/* atmequal.c - Compares ATM addresses for equality */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include "atm.h" static int atm_equal_pvc(const struct sockaddr_atmpvc *a, const struct sockaddr_atmpvc *b,int flags) { int wc = flags & AXE_WILDCARD; #define EQ(field,any) \ (a->sap_addr.field == b->sap_addr.field || \ (wc && (a->sap_addr.field == any || b->sap_addr.field == any))) return EQ(itf,ATM_ITF_ANY) && EQ(vpi,ATM_VPI_ANY) && EQ(vci,ATM_VCI_ANY); #undef EQ } static int atm_equal_svc(const struct sockaddr_atmsvc *a, const struct sockaddr_atmsvc *b,int len,int flags) { const unsigned char *a_prv,*b_prv; int len_a,len_b; if (!(flags & AXE_WILDCARD)) len = ATM_ESA_LEN*8; assert(len >= 0 && len <= ATM_ESA_LEN*8); if (*a->sas_addr.prv && *b->sas_addr.prv) { a_prv = a->sas_addr.prv; b_prv = b->sas_addr.prv; if ((flags & AXE_WILDCARD) && len >= 8 && *a_prv == ATM_AFI_E164 && *b_prv == ATM_AFI_E164) { if (len < 68) return 0; /* no comparison possible */ else { int a_pos,b_pos; unsigned char a_val,b_val; for (a_pos = 2; !a_prv[a_pos/2]; a_pos += 2); if (!(a_prv[a_pos/2] & 0xf0)) a_pos++; for (b_pos = 2; !b_prv[b_pos/2]; b_pos += 2); if (!(b_prv[b_pos/2] & 0xf0)) b_pos++; while (1) { a_val = (a_prv[a_pos/2] >> (((~a_pos) & 1)*4)) & 0xf; b_val = (b_prv[b_pos/2] >> (((~b_pos) & 1)*4)) & 0xf; if (a_val == 15 || b_val == 15) break; if (a_val != b_val) return 0; a_pos++; b_pos++; } a_prv += 9; b_prv += 9; if ((len -= 72) < 0) len = 0; } } if (memcmp(a_prv,b_prv,len/8)) return 0; if ((len & 7) && (a_prv[len/8+1]^b_prv[len/8+1]) & (0xff00 >> (len & 7))) return 0; return 1; } if ((*a->sas_addr.prv || *b->sas_addr.prv) && !(flags & AXE_PRVOPT)) return 0; if (!*a->sas_addr.pub || !*b->sas_addr.pub) return 0; len_a = strlen(a->sas_addr.pub); len_b = strlen(b->sas_addr.pub); if (len_a != len_b && !(flags & AXE_WILDCARD)) return 0; return !strncmp(a->sas_addr.pub,b->sas_addr.pub,len_a < len_b ? len_a : len_b); } int atm_equal(const struct sockaddr *a,const struct sockaddr *b,int len, int flags) { assert((a->sa_family == AF_ATMPVC && b->sa_family == AF_ATMPVC) || (a->sa_family == AF_ATMSVC && b->sa_family == AF_ATMSVC)); if (a->sa_family == AF_ATMPVC) return atm_equal_pvc((const struct sockaddr_atmpvc *) a, (const struct sockaddr_atmpvc *) b,flags); return atm_equal_svc((const struct sockaddr_atmsvc *) a, (const struct sockaddr_atmsvc *) b,len,flags); } linux-atm-2.5.1/src/lib/atmres.h0000644000200100001440000000132407360675443015277 0ustar chasusers/* atmres.h - Common definitions and prototypes for resolver functions */ /* Written 1996,1998 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef _ATMRES_H #define _ATMRES_H #include #include /* Some #defines that may be needed if ANS isn't installed on that system */ #ifndef T_ATMA #define T_ATMA 34 #endif #ifndef ATMA_AESA #define ATMA_AESA 0 #endif #ifndef ATMA_E164 #define ATMA_E164 1 #endif /* Return codes for text2atm and atm2text */ #define TRY_OTHER -2 #define FATAL -1 /* must be -1 */ int ans_byname(const char *text,struct sockaddr_atmsvc *addr,int length, int flags); int ans_byaddr(char *buffer,int length,const struct sockaddr_atmsvc *addr, int flags); #endif linux-atm-2.5.1/src/lib/common.c0000644000200100001440000000072707360675443015275 0ustar chasusers/* common.c - Common functions */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC */ #if HAVE_CONFIG_H #include #endif #include #include #include #include "atmd.h" void *alloc(size_t size) { void *n; n = malloc(size); if (n) return n; perror("malloc"); exit(1); } uint32_t read_netl(void *p) { unsigned char *_p = p; return (_p[0] << 24) | (_p[1] << 16) | (_p[2] << 8) | _p[3]; } linux-atm-2.5.1/src/lib/diag.c0000644000200100001440000001016610167330453014673 0ustar chasusers/* diag.c - Diagnostic messages */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include "atmd.h" #define MAX_DIAG_MSG 8200 #define DUMP_LINE_WIDTH 75 typedef struct _component { const char *name; int verbosity; struct _component *next; } COMPONENT; static int sev2prio[] = { DIAG_DEBUG,LOG_DEBUG, DIAG_INFO,LOG_INFO, DIAG_WARN,LOG_WARNING, DIAG_ERROR,LOG_ERR, DIAG_FATAL,LOG_ALERT, -1,LOG_NOTICE }; static const char *app_name = NULL; static COMPONENT *components = NULL; static int default_verbosity = DIAG_INFO; static FILE *log_to = NULL; static int log_to_initialized = 0; void set_application(const char *name) { app_name = name; } void set_verbosity(const char *component,int level) { COMPONENT *walk; if (!component) { default_verbosity = level; return; } for (walk = components; walk; walk = walk->next) if (!strcmp(walk->name,component)) break; if (!walk) { walk = alloc_t(COMPONENT); walk->name = component; walk->next = components; components = walk; } walk->verbosity = level; } int get_verbosity(const char *component) { COMPONENT *walk; if (!component) { return default_verbosity; } for (walk = components; walk; walk = walk->next) if (!strcmp(walk->name,component)) break; return walk ? walk->verbosity : default_verbosity; } void set_logfile(const char *name) { log_to_initialized = 1; if (log_to && log_to != stderr) { (void) fclose(log_to); log_to = stderr; } if (!name || !strcmp(name,"stderr")) { log_to = stderr; return; } if (!strcmp(name,"syslog")) { if (app_name) openlog(app_name,LOG_CONS,LOG_DAEMON); log_to = NULL; } else if (!(log_to = fopen(name,"w"))) { perror(name); log_to = stderr; } } FILE *get_logfile(void) { if (!log_to_initialized) { log_to = stderr; log_to_initialized = 1; } return log_to; } void diag_fatal_debug_hook(void); /* GCC insists on a prototype */ void diag_fatal_debug_hook(void) { /* * Set a breakpoint here to catch fatal errors before they mess up the * stack. */ } void vdiag(const char *component,int severity,const char *fmt,va_list ap) { COMPONENT *walk; FILE *to; char buffer[MAX_DIAG_MSG+1]; struct timeval tv; int i; #define DATESTR_LEN 32 char datestr[DATESTR_LEN]; struct tm tm; for (walk = components; walk; walk = walk->next) if (!strcmp(walk->name,component)) break; if (severity > (walk ? walk->verbosity : default_verbosity)) return; fflush(stdout); to = get_logfile(); if (!to) { for (i = 0; sev2prio[i] == severity || sev2prio[i] == -1; i += 2); vsnprintf(buffer,MAX_DIAG_MSG+1,fmt,ap); syslog(sev2prio[i+1],"%s: %s",component,buffer); } else { gettimeofday(&tv,NULL); localtime_r((time_t *) &tv.tv_sec, &tm); strftime(datestr, DATESTR_LEN, "%b %d %T", &tm); if (app_name) fprintf(to, "%s.%06lu %s:%s: ", datestr, (unsigned long) tv.tv_usec, app_name, component); else fprintf(to,"%s.%06lu %s: ", datestr, (unsigned long) tv.tv_usec, component); vfprintf(to,fmt,ap); fputc('\n',to); fflush(to); } if (severity == DIAG_FATAL) { diag_fatal_debug_hook(); fprintf(stderr,"Fatal error - Terminating\n"); exit(1); } } void diag(const char *component,int severity,const char *fmt,...) { va_list ap; va_start(ap,fmt); vdiag(component,severity,fmt,ap); va_end(ap); } void diag_dump(const char *component,int severity,const char *title, const unsigned char *data,int len) { char buffer[DUMP_LINE_WIDTH+1]; char *curr; int data_line,left; if (title) diag(component,severity,"%s (%d bytes)\n",title,len); data_line = DUMP_LINE_WIDTH-(app_name ? strlen(app_name)+1 : 0)- strlen(component)-3; while (len) { left = data_line; curr = buffer; while (len && left >= 3) { sprintf(curr," %02x",*data++); len--; curr += 3; left -= 3; } diag(component,severity,"%s ",buffer); } } linux-atm-2.5.1/src/lib/kptr.c0000644000200100001440000000200107360675443014750 0ustar chasusers/* kptr.c - Helper functions to use kernel pointer handles */ /* Written 2000 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include "atmd.h" int kptr_eq(const atm_kptr_t *a,const atm_kptr_t *b) { unsigned long *_a = (unsigned long *) a,*_b = (unsigned long *) b; assert(sizeof(atm_kptr_t) == 8); switch (sizeof(unsigned long)) { case 2: /* Wow, ATM on ELKS ? :-) */ if (_a[2] != _b[2]) return 0; if (_a[3] != _b[3]) return 0; case 4: if (_a[1] != _b[1]) return 0; case 8: return *_a == *_b; default: abort(); } } const char *kptr_print(const atm_kptr_t *p) { static char buf[KPRT_PRINT_BUFS][sizeof(atm_kptr_t)*2+1]; static int curr_buf = 0; char *result; int i; result = buf[curr_buf]; curr_buf = (curr_buf+1) & (KPRT_PRINT_BUFS-1); for (i = 0; i < sizeof(atm_kptr_t); i++) sprintf(result+2*i,"%02x",((unsigned char *) p)[i]); return result; } linux-atm-2.5.1/src/lib/misc.c0000644000200100001440000000214007360675443014727 0ustar chasusers/* misc.c - Miscellaneous library functions */ /* Written 1997-2000 by Werner Almesberger, EPFL-ICA/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include /* for htons */ #include #include int __atmlib_fetch(const char **pos,...) { const char *value; int ref_len,best_len,len; int i,best; va_list ap; va_start(ap,pos); ref_len = strlen(*pos); best_len = 0; best = -1; for (i = 0; (value = va_arg(ap,const char *)); i++) { len = strlen(value); if (*value != '!' && len <= ref_len && len > best_len && !strncasecmp(*pos,value,len)) { best = i; best_len = len; } } va_end(ap); if (best > -1) (*pos) += best_len; return best; } void atm_tcpip_port_mapping(char *vs_id,uint8_t protocol,uint16_t port) { memcpy(vs_id,ATM_FORUM_OUI "\x01",4); vs_id[4] = protocol; /* e.g. IP_TCP or IP_UDP; from netinet/protocols.h */ vs_id[5] = (htons(port) >> 8) & 255; vs_id[6] = htons(port) & 255; } linux-atm-2.5.1/src/lib/qos2text.c0000644000200100001440000000476607360675443015605 0ustar chasusers/* qos2text.c - Converts binary encoding of QOS parameters to textual representation */ /* Written 1996-2000 by Werner Almesberger, EPFL-LRC */ #if HAVE_CONFIG_H #include #endif #include #include #include "atm.h" #define FLD(F) \ if (curr->F && ((ref && (ref->F != curr->F || ref->traffic_class == \ ATM_NONE)) || (comp && comp->F == curr->F && comp->traffic_class != \ ATM_NONE))) { \ if (buffer != *pos && !strchr(":,",(*pos)[-1])) *(*pos)++ = ','; \ if (curr->F != ATM_MAX_PCR) *pos += sprintf(*pos,#F "=%d",curr->F); \ else { \ strcat(*pos,#F "=max"); \ *pos += strlen(#F)+4; \ } \ } static void params(char *buffer,char **pos,const struct atm_trafprm *ref, const struct atm_trafprm *curr,const struct atm_trafprm *comp) { FLD(max_pcr); FLD(pcr); FLD(min_pcr); FLD(max_sdu); } static void opt(const char *prefix,char *buffer,char **pos, const struct atm_trafprm *ref,const struct atm_trafprm *curr, const struct atm_trafprm *comp) { char *start; if (curr->traffic_class == ATM_NONE) { if (!comp) *pos += sprintf(*pos,"%snone",prefix); return; } start = *pos; params(buffer,pos,ref,curr,comp); if (start == *pos) return; *pos = start; strcpy(*pos,prefix); *pos += strlen(prefix); params(buffer,pos,ref,curr,comp); } int qos2text(char *buffer,int length,const struct atm_qos *qos,int flags) { char *pos,*start; if (length <= MAX_ATM_QOS_LEN) return -1; *(pos = buffer) = 0; switch (qos->txtp.traffic_class == ATM_NONE ? qos->rxtp.traffic_class : qos->txtp.traffic_class) { case ATM_UBR: strcpy(buffer,"ubr"); pos += 3; break; case ATM_CBR: strcpy(buffer,"cbr"); pos += 3; break; case ATM_ABR: strcpy(buffer,"abr"); pos += 3; break; default: return -1; } if (qos->aal != ATM_NO_AAL) { strcpy(pos,","); pos++; } switch (qos->aal) { case ATM_NO_AAL: break; case ATM_AAL0: strcpy(pos,"aal0"); pos += 4; break; case ATM_AAL5: strcpy(pos,"aal5"); pos += 4; break; default: return -1; } pos++; start = pos; if (qos->txtp.traffic_class != ATM_NONE && qos->rxtp.traffic_class != ATM_NONE) params(buffer,&pos,NULL,&qos->txtp,&qos->rxtp); opt(start == pos ? "tx:" : ",tx:",buffer,&pos,&qos->rxtp,&qos->txtp,NULL); opt(start == pos ? "rx:" : ",rx:",buffer,&pos,&qos->txtp,&qos->rxtp,NULL); if (pos != start) start[-1] = ':'; return 0; } linux-atm-2.5.1/src/lib/qosequal.c0000644000200100001440000000217207360675443015633 0ustar chasusers/* qosequal.c - Compares QOS specifications for equality */ /* Written 1996,1999 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include "atm.h" static int tp_equal(int traffic_class,struct atm_trafprm a,struct atm_trafprm b) { switch (traffic_class) { case ATM_NONE: return 1; case ATM_UBR: break; case ATM_CBR: if (a.max_cdv != b.max_cdv) return 0; break; default: return -1; } if (!a.max_pcr && !a.min_pcr) a.max_pcr = ATM_MAX_PCR; if (!b.max_pcr && !b.min_pcr) b.max_pcr = ATM_MAX_PCR; if (a.max_pcr != b.max_pcr || a.pcr != b.pcr || a.min_pcr != b.min_pcr) return 0; return a.max_sdu == b.max_sdu; } int qos_equal(const struct atm_qos *a,const struct atm_qos *b) { if (a->txtp.traffic_class != b->txtp.traffic_class) return 0; if (a->txtp.traffic_class == ATM_NONE) { if (a->rxtp.traffic_class != b->rxtp.traffic_class) return 0; return tp_equal(a->rxtp.traffic_class,a->rxtp,b->rxtp); } else { if (!tp_equal(a->txtp.traffic_class,a->txtp,b->txtp)) return 0; return tp_equal(a->txtp.traffic_class,a->rxtp,b->rxtp); } } linux-atm-2.5.1/src/lib/sap2text.c0000644000200100001440000001433707654217706015561 0ustar chasusers/* sap2text.c - Converts binary encoding of a SAP (Service Access Point; BHLI and BLLI) to textual representation */ /* Written 1997 by Werner Almesberger, EPFL-ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "atm.h" /* * = a-b bytes * * bhli: * iso=<1-8> * user=<1-8> * hlp=<4> * oui=<3>,id=<4> * blli: * l2=x25_ll | x25_ml | hdlc_arm | hdlc_nrm | hdlc_abm | q922 | iso7776 * l2=user,info=<1> * l2=iso1745 | q291 | lapb | iso8802 | x75 * * etc. */ static int put(char **pos,char **end,int *length,const char *fmt,...) { char scratch[40]; /* we don't put long strings anyway */ va_list ap; int len; va_start(ap,fmt); len = vsnprintf(scratch,40,fmt,ap); va_end(ap); if (!len) return 0; if (!*end) return -1; *length -= *end-*pos; *pos = *end; if (len >= *length) return -1; strcpy(*pos,scratch); *pos += len; *end = *pos; return 0; } static int dump(char **pos,char **end,int *length,const unsigned char *start, int size) { int i; if (!size) return -1; put(pos,end,length,"0x"); for (i = 0; i < size; i++) if (put(pos,end,length,"%02X",start[i]) < 0) return -1; return 0; } static void maybe(char **pos,char **end,int *length,const char *str) { int len; if (!*end) return; len = strlen(str)+*end-*pos; if (len >= *length) { /* okay, but fail on the next PUT */ *end = NULL; return; } strcpy(*end,str); *end = *pos+len; } #define PUT(fmt,arg...) if (put(pos,end,length,fmt,##arg) < 0) return -1 #define DUMP(start,size) if (dump(pos,end,length,start,size) < 0) return -1 #define MAYBE(str) maybe(pos,end,length,str) static int bhli2text(char **pos,char **end,int *length, const struct atm_bhli *bhli) { if (!bhli->hl_type) return 0; PUT("bhli:"); switch (bhli->hl_type) { case ATM_HL_ISO: PUT("iso="); DUMP(bhli->hl_info,bhli->hl_length); break; case ATM_HL_USER: PUT("user="); DUMP(bhli->hl_info,bhli->hl_length); break; #if defined(UNI30) || defined(ALLOW_UNI30) case ATM_HL_HLP: if (bhli->hl_length != 4) return -1; PUT("hlp="); DUMP(bhli->hl_info,bhli->hl_length); break; #endif case ATM_HL_VENDOR: if (bhli->hl_length != 7) return -1; PUT("oui="); DUMP(bhli->hl_info,3); PUT(",id="); DUMP(bhli->hl_info+3,4); break; default: return -1; } MAYBE(","); return 0; } static int l2_proto2text(char **pos,char **end,int *length, const struct atm_blli *blli) { if (!blli->l2_proto) return 0; PUT("l2="); switch (blli->l2_proto) { #define X(u,l) case ATM_L2_##u: PUT(#l); MAYBE(","); return 0 X(ISO1745,iso1745); X(Q291,q291); X(LAPB,lapb); X(ISO8802,iso8802); X(X75,x75); #undef X #define X(u,l) case ATM_L2_##u: PUT(#l); break X(X25_LL,x25_ll); X(X25_ML,x25_ml); X(HDLC_ARM,hdlc_arm); X(HDLC_NRM,hdlc_nrm); X(HDLC_ABM,hdlc_abm); X(Q922,q992); X(ISO7776,iso7776); #undef X case ATM_L2_USER: PUT("user,info=%d",blli->l2.user); MAYBE(","); return 0; default: return -1; } MAYBE(","); if (blli->l2.itu.mode) { PUT("mode="); switch (blli->l2.itu.mode) { case ATM_IMD_NORMAL: PUT("norm"); break; case ATM_IMD_EXTENDED: PUT("ext"); break; default: return -1; } MAYBE(","); } if (blli->l2.itu.window) { PUT("window=%d",blli->l2.itu.window); MAYBE(","); } return 0; } static int mpx_cap(char **pos,char **end,int *length,const char *label, int cap) { if (!cap) return 0; PUT("%s=",label); switch (cap) { case ATM_MC_TS: PUT("ts"); break; case ATM_MC_TS_FEC: PUT("ts_fec"); break; case ATM_MC_PS: PUT("ps"); break; case ATM_MC_PS_FEC: PUT("ps_fec"); break; case ATM_MC_H221: PUT("h221"); break; default: return -1; } MAYBE(","); return 0; } static int l3_proto2text(char **pos,char **end,int *length, const struct atm_blli *blli) { if (!blli->l3_proto) return 0; PUT("l3="); switch (blli->l3_proto) { #define X(u,l) case ATM_L3_##u: PUT(#l); break X(X25,x25); X(ISO8208,iso8208); X(X223,x223); #undef X case ATM_L3_TR9577: PUT("tr9577,ipi="); if (blli->l3.tr9577.ipi != NLPID_IEEE802_1_SNAP) { PUT("0x%x",blli->l3.tr9577.ipi); } else { PUT("snap,oui="); DUMP(blli->l3.tr9577.snap,3); PUT(",pid="); DUMP(blli->l3.tr9577.snap+3,2); } MAYBE(","); return 0; case ATM_L3_USER: PUT("user,info=%d",blli->l3.user); MAYBE(","); return 0; #define X(u,l) case ATM_L3_##u: PUT(#l); MAYBE(","); return 0 X(ISO8473,iso8473); X(T70,t70); X(H321,h321); #undef X case ATM_L3_H310: PUT("h310"); MAYBE(","); switch (blli->l3.h310.term_type) { case ATM_TT_NONE: return 0; case ATM_TT_RX: PUT("term=rx"); break; case ATM_TT_TX: PUT("term=tx"); break; case ATM_TT_RXTX: PUT("term=rxtx"); break; default: return -1; } MAYBE(","); mpx_cap(pos,end,length,"fw_mpx",blli->l3.h310.fw_mpx_cap); mpx_cap(pos,end,length,"bw_mpx",blli->l3.h310.bw_mpx_cap); return 0; default: return -1; } MAYBE(","); if (blli->l3.itu.mode) { PUT("mode="); switch (blli->l3.itu.mode) { case ATM_IMD_NORMAL: PUT("norm"); break; case ATM_IMD_EXTENDED: PUT("ext"); break; default: return -1; } MAYBE(","); } if (blli->l3.itu.def_size) { PUT("size=%d",blli->l3.itu.def_size); MAYBE(","); } if (blli->l3.itu.window) { PUT("window=%d",blli->l3.itu.window); MAYBE(","); } return 0; } static int blli2text(char **pos,char **end,int *length, const struct atm_blli *blli) { MAYBE("blli:"); if (l2_proto2text(pos,end,length,blli)) return -1; return l3_proto2text(pos,end,length,blli); } int sap2text(char *buffer,int length,const struct atm_sap *sap,int flags) { char *pos,*end; int i; pos = end = buffer; if (bhli2text(&pos,&end,&length,&sap->bhli) < 0) return -1; for (i = 0; i < ATM_MAX_BLLI; i++) { if (!blli_in_use(sap->blli[i])) break; if (blli2text(&pos,&end,&length,sap->blli+i) < 0) return -1; } *pos = 0; return pos-buffer; } linux-atm-2.5.1/src/lib/sapequal.c0000644000200100001440000000632310156360420015575 0ustar chasusers/* sapequal.c - Compares SAP specifications for compatibility */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include "atm.h" #include "atmsap.h" static int bhli_compat(const struct atm_bhli a,const struct atm_bhli b, int flags) { int length; if (!a.hl_type && (flags & SXE_COMPATIBLE)) return 1; if (a.hl_type != b.hl_type) return 0; switch (a.hl_type) { case ATM_HL_ISO: case ATM_HL_USER: length = a.hl_length; if (length != b.hl_length) return 0; break; case ATM_HL_HLP: length = 4; break; case ATM_HL_VENDOR: length = 7; break; default: length = 0; } return !length || !memcmp(a.hl_info,b.hl_info,length); } #define CHECK(FIELD,CONSTRAINT) \ if (res && !res->FIELD) res->FIELD = a.FIELD; \ if (a.FIELD && b.FIELD && a.FIELD != b.FIELD) { \ if (!(flags & SXE_NEGOTIATION)) return 0; \ if (!CONSTRAINT) return 0; \ if (res) res->FIELD = a.FIELD < b.FIELD ? a.FIELD : b.FIELD; \ } static int match_blli(const struct atm_blli a,const struct atm_blli b, int flags,struct atm_blli *res) { if (res) *res = b; if (a.l2_proto != b.l2_proto || a.l3_proto != b.l3_proto) return 0; switch (a.l2_proto) { case ATM_L2_X25_LL: case ATM_L2_X25_ML: case ATM_L2_HDLC_ARM: case ATM_L2_HDLC_NRM: case ATM_L2_HDLC_ABM: case ATM_L2_Q922: case ATM_L2_ISO7776: CHECK(l2.itu.mode,1); CHECK(l2.itu.window,a.l2.itu.window > b.l2.itu.window); break; } switch (a.l3_proto) { case ATM_L3_X25: case ATM_L3_ISO8208: case ATM_L3_X223: CHECK(l3.itu.mode,1); CHECK(l3.itu.def_size,a.l3.itu.def_size > b.l3.itu.def_size); CHECK(l3.itu.window,a.l3.itu.window > b.l3.itu.window); break; case ATM_L3_TR9577: if (a.l3.tr9577.ipi != b.l3.tr9577.ipi) return 0; if (a.l3.tr9577.ipi == NLPID_IEEE802_1_SNAP) if (memcmp(a.l3.tr9577.snap,b.l3.tr9577.snap,5)) return 0; break; case ATM_L3_USER: if (a.l3.user != b.l3.user) return 0; break; } return 1; } #undef CHECK static int blli_compat(const struct atm_blli *a,const struct atm_blli *b, int flags,struct atm_blli *res) { int i,j; if (!(flags & SXE_COMPATIBLE)) { for (i = 0; i < ATM_MAX_BLLI; i++) if (blli_in_use(a[i])) if (!blli_in_use(b[i])) return 0; else { if (!match_blli(a[i],b[i],0,NULL)) return 0; } else if (blli_in_use(b[i])) return 0; else break; if (res) *res = *a; return 1; } if (!blli_in_use(*a)) { if (res) *res = *b; return 1; } for (i = 0; i < ATM_MAX_BLLI && blli_in_use(a[i]); i++) for (j = 0; j < ATM_MAX_BLLI && blli_in_use(b[j]); j++) if (match_blli(a[i],b[j],flags,res)) return 1; return 0; } int sap_equal(const struct atm_sap *a,const struct atm_sap *b,int flags,...) { va_list ap; struct atm_sap *res; va_start(ap,flags); res = flags & SXE_RESULT ? va_arg(ap,struct atm_sap *) : NULL; va_end(ap); if (!bhli_compat(a->bhli,b->bhli,flags)) return 0; if (!blli_compat(a->blli,b->blli,flags,res ? res->blli : NULL)) return 0; if (res) { res->bhli = b->bhli; memset(res->blli+1,0,sizeof(struct atm_blli)*(ATM_MAX_BLLI-1)); } return 1; } linux-atm-2.5.1/src/lib/sdu2cell.c0000644000200100001440000000156607360675443015524 0ustar chasusers/* sdu2cr.c - Converts SDU sizes and SDU counts to cell counts */ /* Written 1996-1998 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include "atm.h" int sdu2cell(int s,int sizes,const int *sdu_size,int *num_sdu) { struct atm_qos qos; int trailer,total,cells; int size,i; size = sizeof(qos); if (getsockopt(s,SOL_AAL,SO_ATMQOS,&qos,&size) < 0) return -1; switch (qos.aal) { case ATM_AAL0: trailer = 0; break; case ATM_AAL5: trailer = ATM_AAL5_TRAILER; break; default: return -1; } total = 0; for (i = 0; i < sizes; i++) { cells = (trailer+*sdu_size+ATM_CELL_PAYLOAD-1)/ATM_CELL_PAYLOAD; if (INT_MAX/cells < *num_sdu) return -1; cells *= *num_sdu; if (INT_MAX-cells < total) return -1; total += cells; sdu_size++; num_sdu++; } return total; } linux-atm-2.5.1/src/lib/text2atm.c0000644000200100001440000001511307360675443015550 0ustar chasusers/* text2atm.c - Converts textual representation of ATM address to binary encoding */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include "atm.h" #include "atmsap.h" #include "atmres.h" static int try_pvc(const char *text,struct sockaddr_atmpvc *addr,int flags) { int part[3]; int i; part[0] = part[1] = part[2] = 0; i = 0; while (1) { if (!*text) return FATAL; /* empty or ends with a dot */ if (i == 3) return TRY_OTHER; /* too long */ if (isdigit(*text)) { if (*text == '0' && isdigit(text[1])) return TRY_OTHER; /* no leading zeroes */ do { if (part[i] > INT_MAX/10) return TRY_OTHER;/* number too big */ part[i] = part[i]*10+*text++-'0'; } while (isdigit(*text)); i++; if (!*text) break; if (*text++ != '.') return TRY_OTHER; /* non-PVC character */ continue; } if (*text == '*') { if (!(flags & T2A_WILDCARD)) return FATAL; /* not allowed */ part[i++] = ATM_ITF_ANY; /* all *_ANY have the same value */ } else { if (*text != '?') return TRY_OTHER; /* invalid character */ if (!(flags & T2A_UNSPEC)) return FATAL; /* not allowed */ part[i++] = ATM_VPI_UNSPEC; /* all *_UNSPEC have the same value */ } if (!*++text) break; if (*text++ != '.') return FATAL; /* dot required */ } if (i < 2) return TRY_OTHER; /* no dots */ if (i == 2) { part[2] = part[1]; part[1] = part[0]; part[0] = 0; /* default interface */ } if (part[0] > SHRT_MAX || part[2] > ATM_MAX_VCI) return TRY_OTHER; /* too big */ if (part[1] > (flags & T2A_NNI ? ATM_MAX_VPI_NNI : ATM_MAX_VPI)) return TRY_OTHER; /* too big */ if (part[0] == ATM_VPI_UNSPEC) return FATAL; /* bad */ addr->sap_family = AF_ATMPVC; addr->sap_addr.itf = part[0]; addr->sap_addr.vpi = part[1]; addr->sap_addr.vci = part[2]; return 0; } static int do_try_nsap(const char *text,struct sockaddr_atmsvc *addr,int flags) { const char *walk; int count,pos,dot; int offset,len; char value; count = dot = 0; for (walk = text; *walk; walk++) if (isdigit(*walk)) { if (count++ == 15) break; dot = 1; } else if (*text != '.') break; else if (!dot) return FATAL; /* two dots in a row */ else dot = 0; if (*walk != ':') { pos = 0; offset = 0; } else { if (!dot || *text == '0') return FATAL; addr->sas_addr.prv[0] = ATM_AFI_E164; addr->sas_addr.prv[1] = 0; memset(addr->sas_addr.prv+1,0,8); for (pos = 18-count-1; *text; text++) { if (*text == '.') continue; if (*text == ':') break; else { if (pos & 1) addr->sas_addr.prv[pos >> 1] |= *text-'0'; else addr->sas_addr.prv[pos >> 1] = (*text-'0') << 4; pos++; } } addr->sas_addr.prv[8] |= 0xf; text++; pos++; offset = 72; } for (dot = 0; *text; text++) if (isxdigit(*text)) { if (pos == ATM_ESA_LEN*2) return TRY_OTHER; /* too long */ value = isdigit(*text) ? *text-'0' : (islower(*text) ? toupper(*text) : *text)-'A'+10; if (pos & 1) addr->sas_addr.prv[pos >> 1] |= value; else addr->sas_addr.prv[pos >> 1] = value << 4; pos++; dot = 1; } else if (*text == '/' && (flags & T2A_WILDCARD)) break; else if (*text != '.') return TRY_OTHER; else { if (!dot) return FATAL; /* two dots in a row */ dot = 0; } if (!dot) return FATAL; if (pos > 1 && !*addr->sas_addr.prv) return TRY_OTHER; /* no leading zeroes */ if (!*text) return pos != ATM_ESA_LEN*2 ? TRY_OTHER : ATM_ESA_LEN*2; /* handle bad length */ len = 0; while (*++text) { if (!isdigit(*text)) return -1; /* non-digit in length */ if (len >= pos*4) return -1; /* too long */ len = len*10+*text-'0'; } if (len > 7 && addr->sas_addr.prv[0] != ATM_AFI_E164) offset = 72; if (len < offset) return FATAL; return len > pos*4 ? TRY_OTHER : len; } static int try_nsap(const char *text,struct sockaddr_atmsvc *addr,int flags) { int result; result = do_try_nsap(text,addr,flags); if (result < 0) return result; addr->sas_family = AF_ATMSVC; *addr->sas_addr.pub = 0; return result; } static int try_e164(const char *text,struct sockaddr_atmsvc *addr,int flags) { int i,dot,result; if (*text == ':' || *text == '+') text++; for (i = dot = 0; *text; text++) if (isdigit(*text)) { if (i == ATM_E164_LEN) return TRY_OTHER; /* too long */ addr->sas_addr.pub[i++] = *text; dot = 1; } else if (*text != '.') break; else { if (!dot) return TRY_OTHER; /* two dots in a row */ dot = 0; } if (!dot) return TRY_OTHER; addr->sas_addr.pub[i] = 0; *addr->sas_addr.prv = 0; result = 0; if (*text) { if (*text++ != '+') return TRY_OTHER; else { result = do_try_nsap(text,addr,flags); if (result < 0) return FATAL; } } addr->sas_family = AF_ATMSVC; return result; } static int search(FILE *file,const char *text,struct sockaddr *addr,int length, int flags) { char line[MAX_ATM_NAME_LEN+1]; const char *here; int result; while (fgets(line,MAX_ATM_NAME_LEN,file)) { if (!strtok(line,"\t\n ")) continue; while ((here = strtok(NULL,"\t\n "))) if (!strcasecmp(here,text)) { here = strtok(line,"\t\n "); result = text2atm(here,addr,length,flags); if (result >= 0) return result; } } return TRY_OTHER; } static int try_name(const char *text,struct sockaddr *addr,int length, int flags) { FILE *file; int result; if (!(file = fopen(HOSTS_ATM,"r"))) return TRY_OTHER; result = search(file,text,addr,length,flags); (void) fclose(file); return result; } int text2atm(const char *text,struct sockaddr *addr,int length,int flags) { int result; if (!*text) return -1; if (!(flags & (T2A_PVC | T2A_SVC))) flags |= T2A_PVC | T2A_SVC; if (length < sizeof(struct sockaddr_atmpvc)) return -1; if (flags & T2A_PVC) { result = try_pvc(text,(struct sockaddr_atmpvc *) addr,flags); if (result != TRY_OTHER) return result; } if ((flags & T2A_SVC) && length >= sizeof(struct sockaddr_atmsvc)) { result = try_nsap(text,(struct sockaddr_atmsvc *) addr,flags); if (result != TRY_OTHER) return result; result = try_e164(text,(struct sockaddr_atmsvc *) addr,flags); if (result != TRY_OTHER) return result; } if (!(flags & T2A_NAME)) return -1; result = try_name(text,addr,length,flags & ~T2A_NAME); if (result == TRY_OTHER && !(flags & T2A_LOCAL)) result = ans_byname(text,(struct sockaddr_atmsvc *) addr,length,flags); if (result != TRY_OTHER) return result; return -1; } linux-atm-2.5.1/src/lib/text2ip.c0000644000200100001440000000253207360675443015400 0ustar chasusers/* text2ip.c - Converts a text string to an IP address. */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include "atm.h" #include "atmd.h" static void complain(const char *component,const char *item,const char *msg) { if (!component) fprintf(stderr,"%s: %s\n",item,msg); else diag(component,DIAG_ERROR,"%s: %s",item,msg); } uint32_t text2ip(const char *text,const char *component,int flags) { struct hostent *hostent; uint32_t ip; if (strspn(text,"0123456789.") == strlen(text)) { ip = inet_addr(text); if (ip != INADDR_NONE) return ip; if (flags & T2I_ERROR) complain(component,text,"invalid address"); return INADDR_NONE; } if (!(flags & T2I_NAME)) { if (flags & T2I_ERROR) complain(component,text,"numeric IP address expected"); return INADDR_NONE; } hostent = gethostbyname(text); if (!hostent) { if (flags & T2I_ERROR) complain(component,text,"no such host"); return INADDR_NONE; } if (hostent->h_addrtype != AF_INET) { if (flags & T2I_ERROR) complain(component,text,"unknown address family"); return INADDR_NONE; } memcpy(&ip,hostent->h_addr,hostent->h_length); return ip; } linux-atm-2.5.1/src/lib/text2qos.c0000644000200100001440000000773007360675443015577 0ustar chasusers/* text2qos.c - Converts textual representation of QOS parameters to binary encoding */ /* Written 1996-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "atm.h" #define fetch __atmlib_fetch #define RATE_ERROR -2 int __t2q_get_rate(const char **text,int up) { const char mult[] = "kKmMgGg"; const char *multiplier; char *end; unsigned int rate,fract; int power; if (!strncmp(*text,"max",3)) { *text += 3; return ATM_MAX_PCR; } rate = strtoul(*text,&end,10); power = fract = 0; if (*end == '.') for (end++; *end && isdigit(*end); end++) { fract = fract*10+*end-48; if (--power == -9) break; } multiplier = NULL; if (*end && (multiplier = strchr(mult,*end))) { while (multiplier >= mult) { if (rate > UINT_MAX/1000) return RATE_ERROR; rate *= 1000; power += 3; multiplier -= 2; } end++; } while (power && fract) if (power < 0) { fract /= 10; power++; } else { fract *= 10; power--; } rate += fract; if (strlen(end) < 3) { if (multiplier) return RATE_ERROR; } else if (!strncmp(end,"cps",3)) end += 3; else if (!strncmp(end,"bps",3)) { rate = (rate+(up ? 8*ATM_CELL_PAYLOAD-1 : 0))/8/ ATM_CELL_PAYLOAD; end += 3; } else if (multiplier) return RATE_ERROR; if (rate > INT_MAX) return RATE_ERROR; *text = end; return rate; } static int params(const char **text,struct atm_trafprm *a, struct atm_trafprm *b) { int value; char *end; if (*(*text)++ != ':') return -1; while (1) { if (!**text) return -1; switch (fetch(text,"max_pcr=","pcr=","min_pcr=","max_sdu=","sdu=", NULL)) { case 0: if ((value = __t2q_get_rate(text,0)) == RATE_ERROR) return -1; if (a) a->max_pcr = value; if (b) b->max_pcr = value; break; case 1: if ((value = __t2q_get_rate(text,0)) == RATE_ERROR) return -1; if (a) a->pcr = value; if (b) b->pcr = value; break; case 2: if ((value = __t2q_get_rate(text,1)) == RATE_ERROR) return -1; if (value == ATM_MAX_PCR) return -1; if (a) a->min_pcr = value; if (b) b->min_pcr = value; break; case 3: case 4: value = strtol(*text,&end,10); if (value < 0) return -1; *text = end; if (a) a->max_sdu = value; if (b) b->max_sdu = value; break; default: return 0; } if (!**text) break; if (*(*text)++ != ',') return -1; } return 0; } int text2qos(const char *text,struct atm_qos *qos,int flags) { int traffic_class,aal; traffic_class = ATM_NONE; aal = ATM_NO_AAL; do { static const unsigned char aal_number[] = { ATM_AAL0, ATM_AAL5 }; int item; item = fetch(&text,"!none","ubr","cbr","vbr","abr","aal0","aal5",NULL); switch (item) { case 1: case 2: /* we don't support VBR yet */ case 4: traffic_class = item; break; case 5: case 6: aal = aal_number[item-5]; break; default: return -1; } } while (*text == ',' ? text++ : 0); if (!traffic_class) return -1; if (qos && !(flags & T2Q_DEFAULTS)) memset(qos,0,sizeof(*qos)); if (qos) qos->txtp.traffic_class = qos->rxtp.traffic_class = traffic_class; if (qos && aal) qos->aal = aal; if (!*text) return 0; if (params(&text,qos ? &qos->txtp : NULL,qos ? &qos->rxtp : NULL)) return -1; if (!*text) return 0; switch (fetch(&text,"tx","rx",NULL)) { case 0: if (!fetch(&text,":none",NULL)) { if (qos) qos->txtp.traffic_class = ATM_NONE; if (*text == ',') text++; break; } if (params(&text,qos ? &qos->txtp : NULL,NULL)) return -1; break; case 1: text -= 2; break; default: return -1; } if (!*text) return 0; if (fetch(&text,"rx",NULL)) return -1; if (!fetch(&text,":none",NULL) && qos) qos->rxtp.traffic_class = ATM_NONE; else if (params(&text,qos ? &qos->rxtp : NULL,NULL)) return -1; return *text ? -1 : 0; } linux-atm-2.5.1/src/lib/text2sap.c0000644000200100001440000001434307360675443015556 0ustar chasusers/* text2sap.c - Converts textual representation of a SAP (Service Access Point; BHLI and BLLI) to binary encoding */ /* Written 1997 by Werner Almesberger, EPFL-ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "atm.h" #define fetch __atmlib_fetch static int bytes(const char **text,unsigned char *buf,int *len,int min,int max) { int num,value; num = 0; if (**text == '0' && ((*text)[1] == 'x' || (*text)[1] == 'X')) *text += 2; while (sscanf(*text,"%2x",&value) == 1) { if (++num > max) return -1; *buf++ = value; *text += 2; } if (num < min) return -1; if (len) *len = num; return 0; } static int text2bhli(const char **text,struct atm_bhli *bhli) { int len; switch (fetch(text,"iso=","user=","hlp=","oui=",NULL)) { case 0: bhli->hl_type = ATM_HL_ISO; if (bytes(text,bhli->hl_info,&len,1,8) < 0) return -1; bhli->hl_length = len; break; case 1: bhli->hl_type = ATM_HL_USER; if (bytes(text,bhli->hl_info,&len,1,8) < 0) return -1; bhli->hl_length = len; break; #if defined(UNI30) || defined(ALLOW_UNI30) case 2: bhli->hl_type = ATM_HL_HLP; if (bytes(text,bhli->hl_info,NULL,4,4) < 0) return -1; bhli->hl_length = 4; break; #endif case 3: bhli->hl_type = ATM_HL_VENDOR; if (bytes(text,bhli->hl_info,NULL,3,3) < 0) return -1; if (fetch(text,",id=",NULL) < 0) return -1; if (bytes(text,bhli->hl_info+3,NULL,4,4) < 0) return -1; bhli->hl_length = 7; break; default: return -1; } return 0; } static int get_int(const char **text,int *value,int min,int max) { char *end; *value = strtoul(*text,&end,0); if (end == *text) return -1; if (*value < min || *value > max) return -1; *text = end; return 0; } static int text2l2_proto(const char **text,struct atm_blli *blli) { static int map[] = { /* No parameters */ ATM_L2_ISO1745, ATM_L2_Q291,ATM_L2_LAPB,ATM_L2_ISO8802,ATM_L2_X75, /* With ITU parameters */ ATM_L2_X25_LL, ATM_L2_X25_ML, ATM_L2_HDLC_ARM, ATM_L2_HDLC_NRM, ATM_L2_HDLC_ABM, ATM_L2_Q922, ATM_L2_ISO7776, /* Other parameter sets */ ATM_L2_USER }; int item,value; item = fetch(text,"iso1745","q291","lapb","iso8802","x75","x25_ll", "x25_ml","hdlc_arm","hdlc_nrm","hdlc_abm","q992","iso7776","user,info=", NULL); if (item < 0) return -1; blli->l2_proto = map[item]; if (blli->l2_proto < ATM_L2_X25_LL) return 0; if (blli->l2_proto == ATM_L2_USER) { if (get_int(text,&value,0,255) < 0) return -1; blli->l2.user = value; return 0; } if (!fetch(text,",mode=",NULL)) { switch (fetch(text,"norm","ext",NULL)) { case 0: blli->l2.itu.mode = ATM_IMD_NORMAL; break; case 1: blli->l2.itu.mode = ATM_IMD_EXTENDED; break; default: return -1; } } if (!fetch(text,",window=",NULL)) { if (get_int(text,&value,1,127) < 0) return -1; blli->l2.itu.window = value; } return 0; } static int text2l3_proto(const char **text,struct atm_blli *blli) { static int map[] = { /* No parameters */ ATM_L3_ISO8473,ATM_L3_T70,ATM_L3_H321, /* With ITU parameters */ ATM_L3_X25,ATM_L3_ISO8208,ATM_L3_X223, /* Other parameter sets */ ATM_L3_TR9577,ATM_L3_USER,ATM_L3_H310 }; int item,value; item = fetch(text,"iso8473","t70","h321","x25","iso8208","x223", "tr9577,ipi=","user,info=","h310",NULL); if (item < 0) return -1; blli->l3_proto = map[item]; if (blli->l3_proto < ATM_L3_X25) return 0; if (blli->l3_proto == ATM_L3_TR9577) { if (!fetch(text,"snap",NULL)) value = NLPID_IEEE802_1_SNAP; else if (get_int(text,&value,0,255) < 0) return -1; blli->l3.tr9577.ipi = value; if (value != NLPID_IEEE802_1_SNAP) return 0; if (fetch(text,",oui=",NULL) < 0) return -1; if (bytes(text,blli->l3.tr9577.snap,NULL,3,3) < 0) return -1; if (fetch(text,",pid=",NULL) < 0) return -1; if (bytes(text,blli->l3.tr9577.snap+3,NULL,2,2) < 0) return -1; return 0; } if (blli->l3_proto == ATM_L3_USER) { if (get_int(text,&value,0,255) < 0) return -1; blli->l3.user = value; return 0; } if (blli->l3_proto == ATM_L3_H310) { if (fetch(text,",term=",NULL)) return 0; item = fetch(text,"!none","rx","tx","rxtx",NULL); if (item == -1) return -1; blli->l3.h310.term_type = item; if (!fetch(text,",fw_mpx=",NULL)) { item = fetch(text,"!none","ts","ts_fec","ps","ps_fec","h221",NULL); if (item == -1) return -1; blli->l3.h310.fw_mpx_cap = item; } if (!fetch(text,",bw_mpx=",NULL)) { item = fetch(text,"!none","ts","ts_fec","ps","ps_fec","h221",NULL); if (item == -1) return -1; blli->l3.h310.bw_mpx_cap = item; } return 0; } if (!fetch(text,",mode=",NULL)) { switch (fetch(text,"norm","ext",NULL)) { case 0: blli->l3.itu.mode = ATM_IMD_NORMAL; break; case 1: blli->l3.itu.mode = ATM_IMD_EXTENDED; break; default: return -1; } } if (!fetch(text,",size=",NULL)) { if (get_int(text,&value,4,12) < 0) return -1; blli->l3.itu.def_size = value; } if (!fetch(text,",window=",NULL)) { if (get_int(text,&value,1,127) < 0) return -1; blli->l3.itu.window = value; } return 0; } static int text2blli(const char **text,struct atm_blli *blli) { switch (fetch(text,"l2=","l3=",NULL)) { case 0: if (text2l2_proto(text,blli) < 0) return -1; break; case 1: return text2l3_proto(text,blli); default: return -1; } if (!**text) return 0; if (fetch(text,",l3=",NULL) < 0) return 0; return text2l3_proto(text,blli); } int text2sap(const char *text,struct atm_sap *sap,int flags) { int bllis; memset(sap,0,sizeof(*sap)); if (!*text) return 0; switch (fetch(&text,"bhli:","blli:",NULL)) { case 0: if (text2bhli(&text,&sap->bhli) < 0) return -1; bllis = 0; break; case 1: if (text2blli(&text,sap->blli) < 0) return -1; bllis = 1; break; default: return -1; } while (1) { if (!*text) return 0; if (fetch(&text,",blli:",NULL) < 0) return -1; if (bllis == ATM_MAX_BLLI) return 0; /* ignore extra BLLIs */ if (text2blli(&text,sap->blli+bllis) < 0) return -1; bllis++; } } linux-atm-2.5.1/src/lib/timer.c0000644000200100001440000000445107360675443015123 0ustar chasusers/* timer.c - Timer support */ /* Written 1995-1997 by Werner Almesberger, EPFL-LRC */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include "atmd.h" static TIMER *timers = NULL; struct timeval now; static void dump_list(const char *label) { #ifdef DEBUG_TIMERS TIMER *walk; if (!debug) return; fprintf(stderr,"Timer list %s\n",label); for (walk = timers; walk; walk = walk->next) fprintf(stderr," 0x%p: Timer @0x%p, %ld.%06d (-> 0x%p)\n", walk,walk->callback,(unsigned long) walk->expiration.tv_sec, (int) walk->expiration.tv_usec,walk->next); #endif } TIMER *start_timer(long usec,void (*callback)(void *user),void *user) { TIMER *n,*walk,*last; n = alloc_t(TIMER); n->expiration.tv_usec = now.tv_usec+usec; n->expiration.tv_sec = now.tv_sec; n->callback = callback; n->user = user; while (n->expiration.tv_usec > 1000000) { n->expiration.tv_usec -= 1000000; n->expiration.tv_sec++; } last = NULL; for (walk = timers; walk; walk = walk->next) if (walk->expiration.tv_sec > n->expiration.tv_sec || (walk->expiration.tv_sec == n->expiration.tv_sec && walk->expiration.tv_usec > n->expiration.tv_usec)) break; else last = walk; if (walk) Q_INSERT_BEFORE(timers,n,walk); else Q_INSERT_AFTER(timers,n,last); dump_list("START_TIMER"); return n; } void stop_timer(TIMER *timer) { Q_REMOVE(timers,timer); free(timer); } void (*timer_handler(TIMER *timer))(void *user) { return timer ? timer->callback : NULL; } struct timeval *next_timer(void) { static struct timeval delta; if (!timers) return NULL; delta.tv_sec = timers->expiration.tv_sec-now.tv_sec; delta.tv_usec = timers->expiration.tv_usec-now.tv_usec; while (delta.tv_usec < 0) { delta.tv_usec += 1000000; delta.tv_sec--; } if (delta.tv_sec < 0) delta.tv_sec = delta.tv_usec = 0; return δ } void pop_timer(TIMER *timer) { dump_list("POP_TIMER"); Q_REMOVE(timers,timer); timer->callback(timer->user); free(timer); } void expire_timers(void) { while (timers && (timers->expiration.tv_sec < now.tv_sec || (timers->expiration.tv_sec == now.tv_sec && timers->expiration.tv_usec < now.tv_usec))) pop_timer(timers); } linux-atm-2.5.1/src/lib/unix.c0000644000200100001440000000442407360675443014766 0ustar chasusers/* unix.c - Unix domain socket communication */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include "atmd.h" static int mkaddr(const char *path,struct sockaddr_un *addr) { addr->sun_family = AF_UNIX; strcpy(addr->sun_path,path); return (char *) &addr->sun_path[strlen(path)]-(char *) addr; } int un_create(const char *path,mode_t mode) { struct sockaddr_un addr; mode_t old_umask; int size; int s; s = socket(PF_UNIX,SOCK_DGRAM,0); if (s < 0) return s; (void) unlink(path); size = mkaddr(path,&addr); old_umask = umask(~mode); if (bind(s,(struct sockaddr *) &addr,size) < 0) return -1; (void) umask(old_umask); return s; } int un_attach(const char *path) { struct sockaddr_un addr; int size; int s; s = socket(PF_UNIX,SOCK_DGRAM,0); if (s < 0) return s; size = mkaddr("",&addr); if (bind(s,(struct sockaddr *) &addr,size) < 0) return -1; size = mkaddr(path,&addr); if (connect(s,(struct sockaddr *) &addr,size) < 0) return -1; return s; } int un_recv_connect(int s,void *buf,int size) { struct sockaddr_un addr; int addr_size; int len; addr_size = sizeof(addr); len = recvfrom(s,buf,size,0,(struct sockaddr *) &addr,&addr_size); if (len < 0) return len; if (connect(s,(struct sockaddr *) &addr,addr_size) < 0) return -1; return len; } int un_recv(UN_CTX *ctx,int s,void *buf,int size) { ctx->s = s; ctx->size = sizeof(ctx->addr); return recvfrom(s,buf,size,0,(struct sockaddr *) &ctx->addr,&ctx->size); } int un_send(const UN_CTX *ctx,void *buf,int len) { int sent; sent = sendto(ctx->s,buf,len,0,(struct sockaddr *) &ctx->addr,ctx->size); if (sent < 0 || sent == len) return sent; errno = EMSGSIZE; /* ugly */ return -1; } int un_reply(int s,void *buf,int size, int (*handler)(void *buf,int len,void *user),void *user) { UN_CTX ctx; int len; len = un_recv(&ctx,s,buf,size); if (len < 0) return len; len = handler(buf,len,user); if (len <= 0) return len; return un_send(&ctx,buf,len); } linux-atm-2.5.1/src/lib/Makefile.in0000644000200100001440000004362611304770376015705 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/lib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am_libatm_la_OBJECTS = text2atm.lo atm2text.lo atmequal.lo sdu2cell.lo \ text2qos.lo qos2text.lo qosequal.lo sap2text.lo text2sap.lo \ sapequal.lo misc.lo ans.lo common.lo diag.lo kptr.lo \ text2ip.lo timer.lo unix.lo libatm_la_OBJECTS = $(am_libatm_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libatm_la_SOURCES) DIST_SOURCES = $(libatm_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ #lib_LTLIBRARIES = libatm.la libatmd.la lib_LTLIBRARIES = libatm.la # ATMLIBS_VERSION comes from configure.in in the toplevel directory AM_LDFLAGS = -version-info @LIBVER_CURRENT@:@LIBVER_REVISION@:@LIBVER_AGE@ libatm_la_SOURCES = text2atm.c atm2text.c atmequal.c sdu2cell.c text2qos.c \ qos2text.c qosequal.c sap2text.c text2sap.c sapequal.c \ misc.c atmres.h ans.c \ common.c diag.c kptr.c text2ip.c timer.c unix.c libatm_la_LIBADD = -lresolv libatm_la_DEPENDENCIES = $(top_builddir)/src/include/atm.h \ $(top_builddir)/src/include/atmsap.h \ $(top_builddir)/src/include/atmd.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/lib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libatm.la: $(libatm_la_OBJECTS) $(libatm_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libatm_la_OBJECTS) $(libatm_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ans.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atm2text.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmequal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diag.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kptr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qos2text.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qosequal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sap2text.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sapequal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sdu2cell.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text2atm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text2ip.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text2qos.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text2sap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/maint/0000755000200100001440000000000011304770376014167 5ustar chasuserslinux-atm-2.5.1/src/maint/CVS/0000755000200100001440000000000011304767137014623 5ustar chasuserslinux-atm-2.5.1/src/maint/CVS/Root0000644000200100001440000000007411304767137015472 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/maint/CVS/Repository0000644000200100001440000000002411304767137016721 0ustar chasuserslinux-atm/src/maint linux-atm-2.5.1/src/maint/CVS/Entries0000644000200100001440000000212511304767137016157 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:28 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile.am/1.2.2.2.2.1/Mon Aug 3 20:36:56 2009//TV2_5_1 /README.nstune/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmaddr.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmaddr.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmdiag.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmdiag.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmdump.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmdump.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmloop.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmloop.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmtcp.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmtcp.c/1.2.2.1/Tue Sep 27 23:16:25 2005//TV2_5_1 /enitune.c/1.2.2.1/Fri Dec 10 17:48:12 2004//TV2_5_1 /esi.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /esi.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /hediag.c/1.1.2.1.2.1/Thu Jan 10 18:13:10 2008//TV2_5_1 /nstune.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /saaldump.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /sonetdiag.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /zntune.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 D linux-atm-2.5.1/src/maint/CVS/Tag0000644000200100001440000000001011304767137015250 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/maint/.cvsignore0000644000200100001440000000015710666025264016171 0ustar chasusersMakefile Makefile.in .deps .libs atmaddr atmdiag atmdump atmloop atmtcp enitune esi saaldump sonetdiag zntune linux-atm-2.5.1/src/maint/Makefile-0.790000644000200100001440000000055407360675443016234 0ustar chasusersLDLIBS=-latmd INCLUDES=-I../qgen -I../saal BOOTPGMS=atmaddr esi SYSPGMS=atmloop atmtcp enitune zntune # nstune USRPGMS=atmdiag atmdump sonetdiag saaldump MAN8=atmaddr.8 atmdiag.8 atmdump.8 atmloop.8 atmtcp.8 esi.8 include ../Rules.make saaldump: saaldump.o $(CC) $(LDFLAGS) -o saaldump saaldump.o ../qgen/qd.dump.o \ -L../saal -lsaal -L../lib -latm -latmd linux-atm-2.5.1/src/maint/Makefile.am0000644000200100001440000000156111235645150016220 0ustar chasusersBOOTPGMS=atmaddr esi SYSPGMS=atmloop atmtcp enitune zntune hediag # nstune USRPGMS=atmdiag atmdump sonetdiag saaldump INCLUDES=-I$(srcdir)/../q2931 -I$(srcdir)/../saal -I. LDADD = $(top_builddir)/src/lib/libatm.la sbin_PROGRAMS = $(BOOTPGMS) $(SYSPGMS) bin_PROGRAMS = $(USRPGMS) atmaddr_SOURCES = atmaddr.c esi_SOURCES = esi.c atmloop_SOURCES = atmloop.c atmtcp_SOURCES = atmtcp.c enitune_SOURCES = enitune.c zntune_SOURCES = zntune.c #nstune_SOURCES = nstune.c atmdiag_SOURCES = atmdiag.c atmdump_SOURCES = atmdump.c sonetdiag_SOURCES = sonetdiag.c saaldump_SOURCES = saaldump.c saaldump_LDADD = $(top_builddir)/src/q2931/qd.dump.o $(top_builddir)/src/saal/libsaal.a $(LDADD) saaldump_DEPENDENCIES = $(saaldump_LDADD) man_MANS = atmaddr.8 atmdiag.8 atmdump.8 atmloop.8 atmtcp.8 esi.8 #EXTRA_DIST = $(man_MANS) README.nstune EXTRA_DIST = $(man_MANS) README.nstune nstune.c linux-atm-2.5.1/src/maint/README.nstune0000644000200100001440000000525207360675443016374 0ustar chasusers[ Note: this is the original README. Since the patch is already included in atm.patch, only the instructions at the end of this file apply. - WA ] README file for release 7 of the nicstar device driver by Rui Prior. * * Make sure you read carefully the Installation section before proceeding * * This is the 7th release of my nicstar device driver. The driver is meant to work with the atm patch 0.38 applied to the 2.1.105 kernel. It supports AAL0 and AAL5. Supported traffic classes are UBR and CBR. Please note that this is not meant to be a final release, but a preliminary version. The code isn't optimized, doesn't look very nice, and probably still has some bugs, but at least it doesn't seem to freeze or crash the kernel. Hope it is useful. NOTE: the code for extracting the MAC address from the EPROM was not written by me (I didn't want to reinvent the weel :-). It was taken from the frle-0.22 device driver for the 2.0 series of kernels. Please read the nicstarmac.copyright file for the copyright notice included in the frle-0.22 device driver. Contact: -------- To send some feedback or bug reports, my e-mail address is rprior@inescn.pt My group's web page is at http://aramis.inescn.pt Installation: ------------- To use the driver, first you have to apply the atm patch to the kernel sources. Read the USAGE file in the atm distribution to learn how to do it. Then create a directory, cd to that directory, and extract the files with tar xvfz nicstar.tgz Now you have to go to the linux kernel source directory (usually /usr/src/linux) and apply the nicstar patch. cd /usr/src/linux patch -s -p1 < (nicstar_dir)/ns.patch where (nicstar_dir) is the directory where you extracted the files. Configure and compile the kernel the usual way, and you should have it working. To compile the nstune utility, cd (nicstar_dir) make If you compiled the driver as a module you can insert it with insmod nicstar and when you don't need it anymore you can remove it with rmmod nicstar Tuning: ------- You can tune the buffer level watermarks by doing nstune itf {s|l|h|i} min init max where: - itf is the atm interface number (most users only have one card, so this is 0. - s for small buffers, l for large buffers, h for huge buffers or i for iovec buffers. - min is the lower watermark, max the higher, and init is the initial level, and the level which is ideally sustained. For example: nstune 0 s 10 30 50 If you want to set the actual buffer level, not the watermarks, use nstune itf {s|l|h|i} which will set the corresponding buffer number to the init watermark level. Please note that small and large buffer numbers can't be decreased by using nstune. linux-atm-2.5.1/src/maint/atmaddr.80000644000200100001440000000256407360675443015711 0ustar chasusers.TH ATMADDR 8 "April 26, 2000" "Linux" "Maintenance Commands" .SH NAME atmaddr \- list and maintain local ATM addresses .SH SYNOPSIS .ad l .B atmaddr .RB [ \-n ]\ [ \fIitf\fP ] .br .B atmaddr .B \-r .RB [ \fIitf\fP ] .br .B atmaddr .B \-a .RB [ \fIitf\fP ]\ \fIatm_addr\fP .br .B atmaddr .B \-d .RB [ \fIitf\fP ]\ \fIatm_addr\fP .br .B atmaddr .B \-V .ad b .SH DESCRIPTION .B atmaddr is used to list the local addresses configured for ATM interfaces and to manually change the list of addresses. If the interface number \fIitf\fP is omitted, interface 0 is used by default. The ATM address \fIatm_addr\fP can be any valid ATM SVC address, e.g. an E.164 address or an ATM Forum NSAP address. .P If invoked without options, \fBatmaddr\fP lists the addresses that are currently configured on the specified interface. .P Note that local ATM addresses are normally automatically maintained by the ILMI demon. .SH OPTIONS .IP \fB\-a\fP append the specified address at the end of the list. .IP \fB\-d\fP delete the specified address from the list. .IP \fB\-n\fP numeric address output only. No address to name translation is attempted. .IP \fB\-r\fP reset (clear) the local address list of the specified interface. .IP \fB\-V\fP print the version number of \fBatmaddr\fP on standard output and exit. .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" ilmid(8) .\"{{{}}} linux-atm-2.5.1/src/maint/atmaddr.c0000644000200100001440000000521007360675443015753 0ustar chasusers/* atmaddr.c - Get/set local ATM adresses */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #define MAX_ADDR 1024 /* that should do it for now ... */ static void usage(const char *name) { fprintf(stderr,"usage: %s [-n] [itf]\n",name); fprintf(stderr,"%6s %s -r [itf]\n","",name); fprintf(stderr,"%6s %s -a [itf] atm_addr\n","",name); fprintf(stderr,"%6s %s -d [itf] atm_addr\n","",name); fprintf(stderr,"%6s %s -V\n","",name); exit(1); } int main(int argc,char **argv) { struct atmif_sioc req; struct sockaddr_atmsvc addr[MAX_ADDR]; char buffer[MAX_ATM_ADDR_LEN+1]; const char *itf,*name; char *end; int pretty; int cmd,s,i; req.number = 0; cmd = 0; /* for gcc */ itf = NULL; pretty = A2T_PRETTY | A2T_NAME; name = *argv; if (argc == 2 && !strcmp(argv[1],"-V")) { printf("%s\n",VERSION); return 0; } if (argc > 1 && !strcmp(argv[1],"-n")) { pretty = A2T_PRETTY; argc--; argv++; } if (argc < 2) cmd = ATM_GETADDR; else if (*argv[1] != '-') { if (argc != 2) usage(name); cmd = ATM_GETADDR; itf = argv[1]; } else { if (!argv[1][1] || argv[1][2]) usage(name); switch (argv[1][1]) { case 'r': if (argc < 2 || argc > 3) usage(name); if (argc == 3) itf = argv[2]; cmd = ATM_RSTADDR; break; case 'a': case 'd': if (argc < 3 || argc > 4) usage(name); if (argc == 4) itf = argv[2]; cmd = argv[1][1] == 'a' ? ATM_ADDADDR : ATM_DELADDR; memset(&addr,0,sizeof(addr)); if (text2atm(argv[argc-1],(struct sockaddr *) addr, sizeof(*addr),T2A_SVC | T2A_NAME) < 0) usage(name); break; default: usage(name); } } if (itf) { req.number = strtoul(itf,&end,10); if (*end) usage(name); } if ((s = socket(PF_ATMSVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } req.arg = addr; req.length = cmd == ATM_GETADDR ? sizeof(addr) : sizeof(*addr); if (ioctl(s,cmd,&req) < 0) { perror("ioctl ATM_xxxADDR"); return 1; } if (cmd != ATM_GETADDR) return 0; if (req.length % sizeof(*addr)) { fprintf(stderr,"internal error: len %d %% %d\n",req.length, sizeof(*addr)); return 1; } for (i = 0; i < req.length/sizeof(*addr); i++) { if (atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) &addr[i], pretty) < 0) { fprintf(stderr,"bad address (internal error)\n"); return 1; } printf("%s\n",buffer); } return 0; } linux-atm-2.5.1/src/maint/atmdiag.80000644000200100001440000000171407360675443015677 0ustar chasusers.TH ATMDIAG 8 "April 26, 2000" "Linux" "Maintenance Commands" .SH NAME atmdiag \- show ATM device driver diagnostics .SH SYNOPSIS .ad l .B atmdiag .RB [ \-z ] .RB [ \fIinterface ...\fB ] .ad b .SH DESCRIPTION .B atmdiag shows statistic counters maintained by ATM device drivers. If one or more interface numbers are specified, the statistics of only these interfaces are shown. Otherwise, statistics of all interfaces are displayed. .PP The following counters are shown for each AAL: .RS .IP \fBTX_okay\fP number of successfully sent PDUs. .IP \fBTX_err\fP number of PDUs not sent because of errors. .IP \fBRX_okay\fP number of successfully received PDUs. .IP \fBRX_err\fP number of PDUs discarded because of errors. .IP \fBRX_drop\fP number of PDUs dropped because of lack of memory. .RE .SH OPTIONS .IP \fB\-z\fP zero all counters after showing them. .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" atmdump(8), sonetdiag(8) .\"{{{}}} linux-atm-2.5.1/src/maint/atmdiag.c0000644000200100001440000000404107360675443015746 0ustar chasusers/* atmdiag.c - ATM diagnostics */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #define BUF_LEN 1024 /* ugly */ static void usage(const char *name) { fprintf(stderr,"usage: %s [ -z ] [ itf ... ]\n",name); exit(1); } static void display(int s,int itf,int zero) { static int first = 1; struct atmif_sioc req; struct atm_dev_stats stats; req.number = itf; req.arg = &stats; req.length = sizeof(stats); if (ioctl(s,zero ? ATM_GETSTATZ : ATM_GETSTAT,&req) < 0) { perror(zero ? "ioctl ATM_GETSTATZ" : "ioctl ATM_GETSTAT"); exit(1); } if (first) { printf("Itf TX_okay TX_err RX_okay RX_err RX_drop\n" ); first = 0; } printf("%3d AAL0 %8d %8d %8d %8d %8d\n",itf,stats.aal0.tx, stats.aal0.tx_err,stats.aal0.rx,stats.aal0.rx_err,stats.aal0.rx_drop); printf("%3s AAL5 %8d %8d %8d %8d %8d\n","",stats.aal5.tx, stats.aal5.tx_err,stats.aal5.rx,stats.aal5.rx_err,stats.aal5.rx_drop); } int main(int argc,const char *const *argv) { int s,zero; zero = 0; if (argc > 1 && *argv[1] == '-') { if (strcmp(argv[1],"-z")) usage(argv[0]); else { zero = 1; argv++; argc--; } } if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } if (argc > 1) while (argc-- > 1) { char *end; int itf; itf = strtol(*++argv,&end,0); if (*end || itf < 0) { fprintf(stderr,"invalid interface number: %s\n",*argv); return 1; } display(s,itf,zero); } else { struct atm_iobuf req; int buf[BUF_LEN]; int i; req.length = BUF_LEN*sizeof(int); req.buffer = buf; if (ioctl(s,ATM_GETNAMES,&req) < 0) { perror("ioctl ATM_GETNAMES"); return 1; } for (i = 0; i < req.length/sizeof(int); i++) display(s,buf[i],zero); } return 0; } linux-atm-2.5.1/src/maint/atmdump.80000644000200100001440000000307407360675443015741 0ustar chasusers.TH ATMDUMP 8 "April 26, 2000" "Linux" "Maintenance Commands" .SH NAME atmdump \- capture or generate ATM cells .SH SYNOPSIS .B atmdump .RB [ \-i ] .RB [ .B \-t\ \fItype\fB .RB [ \-g\ \fIgfc\fB ] .RB [ \-c ] .RB ] .RB [\fIitf\fP.]\fIvpi\fP.\fIvci\fP .ad b .SH DESCRIPTION .B atmdump captures or generates single ATM cells ("AAL0"). When capturing cells, a time stamp, the cell header contents, and a hex dump of the cell payload are shown. When sending cells, the payload type, the generic flow control (GFC), and the cell loss priority (CLP) can be set. .P In both modes of operation, the interface number, the VPI, and the VCI have to be specified. .P When sending, \fBatmdump\fP expects the cell payload on standard input. If only less than 48 bytes can be read, the remaining space is padded with zero bytes. .SH OPTIONS .IP \fB\-i\fP displays timestamps as the interval since the last cell reception. By default, the absolute time is displayed. This options is ignored in transmit mode. .IP \fB\-t\ \fItype\fP selects transmit mode and specifies the payload type. A list of valid payload type numbers can be obtained by invoking .B atmdump without any arguments. .IP \fB\-g\ \fIgfc\fP specifies the value of the GFC field. \fIgfc\fP has to be in the range from 0 to 15, default is zero. .IP \fB\-c\fP sets the cell loss priority flag, indicating low priority. By default, CLP is not set. .SH RESTRICTIONS Some device drivers may not pass OAM cells transparently. .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" atmdiag(8), clip(8), sonetdiag(8) .\"{{{}}} linux-atm-2.5.1/src/maint/atmdump.c0000644000200100001440000001015407360675443016011 0ustar chasusers/* atmdump.c - ATM raw cell dumper */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include /* for htonl and ntohl */ #include static const char *pti[] = { "Data SDU 0","Data SDU 1","Data SDU 0, CE", "Data SDU 1, CE","Segment OAM F5","End-to-end OAM F5","Reserved (RM)", "Reserved" }; static int interval = 0; /* display absolute time by default */ #define GET(item) ((*cell & ATM_HDR_##item##_MASK) >> ATM_HDR_##item##_SHIFT) static void analyze(unsigned long *cell,struct timeval stamp) { static struct timeval last; static int first = 1; int i; if (first || !interval) { printf("%2d:%02d:%02d",(int) ((stamp.tv_sec/3600) % 24), (int) ((stamp.tv_sec/60) % 60),(int) (stamp.tv_sec % 60)); if (interval) { first = 0; last = stamp; } } else { struct timeval diff; diff.tv_sec = stamp.tv_sec-last.tv_sec; diff.tv_usec = stamp.tv_usec-last.tv_usec; while (diff.tv_usec < 0) { diff.tv_usec += 1000000; diff.tv_sec--; } last = stamp; printf("%8ld",(long) diff.tv_sec); } printf(".%06ld: VPI=%ld VCI=%ld, GFC=0x%lx, CLP=%ld, %s (PTI %ld)\n", (long) stamp.tv_usec,GET(VPI),GET(VCI),GET(GFC),*cell & ATM_HDR_CLP, pti[GET(PTI)],GET(PTI)); for (i = 0; i < ATM_CELL_PAYLOAD; i++) { if (!(i & 15)) printf(" "); printf("%02x ",((unsigned char *) cell)[i+4]); if ((i & 15) == 15) putchar('\n'); } } static void usage(const char *name) { int i; fprintf(stderr,"usage: %s [ -i ] [ -t type [ -g gfc ] [ -c ] ] " "[itf.]vpi.vci\n",name); for (i = 0; i < 8; i++) fprintf(stderr," %-6s %d %s\n",i ? "" : "type",i,pti[i]); fprintf(stderr," gfc 0-15, default 0\n"); exit(1); } int main(int argc,char **argv) { unsigned long buf[13]; /* ugly */ struct sockaddr_atmpvc addr; struct atm_qos qos; char *name,*end; int type,gfc,clp; int c,s,size; type = -1; gfc = clp = 0; /* for GCC */ name = argv[0]; while ((c = getopt(argc,argv,"t:g:c")) != EOF) switch (c) { case 'i': interval = 1; break; case 't': type = strtol(optarg,&end,0); if (*end || type < 0 || type > 7) usage(name); break; case 'g': gfc = strtol(optarg,&end,0); if (*end || gfc < 0 || gfc > 15) usage(name); break; case 'c': clp = 1; break; default: usage(name); } if (argc != optind+1) usage(name); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } memset(&addr,0,sizeof(addr)); if (text2atm(argv[optind],(struct sockaddr *) &addr,sizeof(addr),T2A_PVC) < 0) usage(name); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL0; if (type == -1) { qos.rxtp.traffic_class = ATM_UBR; qos.rxtp.max_sdu = 52; } else { qos.txtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = 52; } if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (bind(s,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("bind"); return 1; } if (type == -1) { while ((size = read(s,buf,52)) == 52) { struct timeval stamp; if (ioctl(s,SIOCGSTAMP,&stamp) < 0) { perror("ioctl SIOCGSTAMP"); return 1; } analyze(buf,stamp); fflush(stdout); } if (size < 0) perror("read"); else fprintf(stderr,"short read (%d bytes)\n",size); return 1; } if ((size = read(0,buf+1,ATM_CELL_PAYLOAD)) < 0) { perror("read stdin"); return 1; } if (size < ATM_CELL_PAYLOAD) memset((unsigned char *) (buf+1)+size,0,ATM_CELL_PAYLOAD-size); *buf = (gfc << ATM_HDR_GFC_SHIFT) | (addr.sap_addr.vpi << ATM_HDR_VPI_SHIFT) | (addr.sap_addr.vci << ATM_HDR_VCI_SHIFT) | (type << ATM_HDR_PTI_SHIFT) | clp; if ((size = write(s,buf,ATM_CELL_SIZE-1)) < 0) { perror("write to network"); return 1; } if (size < ATM_CELL_SIZE-1) { fprintf(stderr,"short write (%d bytes)\n",size); return 1; } return 0; } linux-atm-2.5.1/src/maint/atmloop.80000644000200100001440000000303707360675443015744 0ustar chasusers.TH ATMLOOP 8 "April 26, 2000" "Linux" "Maintenance Commands" .SH NAME atmloop \- get/set loopback mode of ATM interfaces .SH SYNOPSIS .ad l .B atmloop .B \-s .RB [ \-l\ \fIlevel\fP ] .RB [ \-r\ \fIlevel\fP ] .RB [ \fIitf\fP ] .br .B atmloop .RB [ \fIitf\fP ] .br .B atmloop .B \-q .RB [ \fIitf\fP ] .br .B atmloop .B \-V .ad b .SH DESCRIPTION .B atmloop sets or shows the current loopback settings of an ATM interface, and allows to query the loopback modes supported by the interface. .P Some ATM cards can be configured to echo data back to the driver (local loopback) or to the network (remote loopback). The echoing may be done at several different levels: .IP \fBaal\fP AAL PDUs .IP \fBatm\fP ATM cells .IP \fBdigital\fP bits sent to or received from the line interface .IP \fBanalog\fP the analog signal .P The levels supported by an interface can be queried with the \fB\-q\fP option. If invoked without options, \fBatmloop\fP displays the current loopback settings. .SH OPTIONS .IP \fB\-s\fP set loopback mode. Followed by either \fB\-l\fP or \fB\-r\fP, both options to set local and remote loopback at the same time (if supported by the driver), or none of them to turn off any loopback. .IP \fB\-l\ \fIlevel\fP enable local loopback. .IP \fB\-r\ \fIlevel\fP enable remote loopback. .IP \fB\-q\ \fIlevel\fP query loopback levels supported by the interface. .IP \fB\-V\fP print version number of \fBatmloop\fP on standard output and exit. .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" atmdiag(8), sonetdiag(8) .\"{{{}}} linux-atm-2.5.1/src/maint/atmloop.c0000644000200100001440000000611707360675443016021 0ustar chasusers/* atmloop.c - get/set loopback mode of ATM interfaces */ /* Written 2000 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include static void usage(const char *name) { fprintf(stderr,"usage: %s -s [ -l level ] [ -r level ] [ itf ]\n",name); fprintf(stderr,"%7s%s [ itf ]\n","",name); fprintf(stderr,"%7s%s -q [ itf ]\n","",name); fprintf(stderr,"%7s%s -V\n","",name); fprintf(stderr," levels: aal = AAL PDU, atm = ATM cell,\n"); fprintf(stderr,"%10sphy = line (digital), analog = line (analog)\n",""); exit(1); } static int text2level(const char *name,const char *s) { if (!strcmp(s,"aal")) return __ATM_LM_AAL; if (!strcmp(s,"atm")) return __ATM_LM_ATM; if (!strcmp(s,"phy")) return __ATM_LM_PHY; if (!strcmp(s,"analog")) return __ATM_LM_ANALOG; usage(name); return 0; /* uh ... */ } static const char *level2text(int level) { switch (level) { case __ATM_LM_AAL: return "aal"; case __ATM_LM_ATM: return "atm"; case __ATM_LM_PHY: return "phy"; case __ATM_LM_ANALOG: return "analog"; default: return "???"; } } static void print_levels(int levels,int show_none) { int mask; if (!levels) { if (show_none) printf(" (none)"); return; } for (mask = 1; levels; mask += mask) { if (!(mask & levels)) continue; printf(" %s",level2text(__ATM_LM_XTLOC(mask))); levels &= ~mask; } } int main(int argc,char **argv) { int local = ATM_LM_NONE,remote = ATM_LM_NONE,mode; int set = 0,query = 0; struct atmif_sioc req; int s,c; req.number = 0; while ((c = getopt(argc,argv,"l:qr:sV")) != EOF) switch (c) { case 'l': if (local) usage(*argv); local = text2level(*argv,optarg); break; case 'q': query = 1; break; case 'r': if (remote) usage(*argv); remote = text2level(*argv,optarg); break; case 's': set = 1; break; case 'V': printf("%s\n",VERSION); return 0; default: usage(*argv); } if (argc > optind+1) usage(*argv); if (argc == optind+1) { char *end; req.number = strtoul(argv[optind],&end,0); if (*end) usage(*argv); } mode = __ATM_LM_MKLOC(local) | __ATM_LM_MKRMT(remote); if ((mode && !set) || (set && query)) usage(*argv); s = socket(PF_ATMPVC,SOCK_DGRAM,0); if (s < 0) { perror("socket"); return 1; } if (set) { req.arg = (void *) mode; req.length = 0; if (ioctl(s,ATM_SETLOOP,&req) < 0) { perror("ioctl ATM_SETLOOP"); return 1; } return 0; } req.arg = &mode; req.length = sizeof(mode); if (ioctl(s,query ? ATM_QUERYLOOP : ATM_GETLOOP,&req) < 0) { perror(query ? "ioctl ATM_QUERYLOOP" : "ioctl ATM_GETLOOP"); return 1; } printf("local: "); print_levels(__ATM_LM_XTLOC(mode),query); printf("\nremote:"); print_levels(__ATM_LM_XTRMT(mode),query); printf("\n"); return 0; } linux-atm-2.5.1/src/maint/atmtcp.80000644000200100001440000001364407360675443015566 0ustar chasusers.TH ATMTCP 8 "April 26, 2000" "Linux" "Maintenance Commands" .SH NAME atmtcp \- set up ATM over TCP connections .SH SYNOPSIS .ad l .B atmtcp .RB [ \-d ] .RB [ \-v ] .I command .B ... .br .B atmtcp .B \-V .ad b .SH DESCRIPTION The main purpose of \fBatmtcp\fP is to establish TCP connections and to configure them as virtual ATM devices. Such pairs of "ATM over TCP" devices are connected as if they were real ATM adapters linked by a cable or fiber, i.e. SDUs sent on a given VPI/VCI are received at the other end on the same VPI/VCI. .PP Virtual interfaces and ATM over TCP connections are called \fIlinks\fP. Other link types supported by \fBatmtcp\fP are real interfaces, files for recording and playback of ATM traffic, and printing a hex dump of the PDU content on standard output. Any pair of such links can be connected with \fBatmtcp\fP. If additional links are attached to such a connection, they send to all other links, except to the first link and the respective sender, and they receive from all other links. .PP \fBatmtcp\fP can operate with two types of virtual interfaces: ephemeral or persistent. By default, \fBatmtcp\fP interfaces are ephemeral. When the \fBatmtcp\fP process that created an interface terminates, the virtual ATM device is removed as soon all VCs are closed. However, if the interface was previously created as a persistent interface, only the communication stops, but the interface and all VCs on it remain intact. Attempts to send data on an \fBatmtcp\fP interface in this state fail silently, i.e. the interface behaves just like a real ATM interface without a wire. A new \fBatmtcp\fP process can then attach to the interface and resume operation. Persistent interfaces need to be removed explicitly. .PP If \fBatmtcp\fP has any readable links after processing the command line, it enters a loop to perform the data forwarding. If no readable links have been specified, \fBatmtcp\fP terminates after processing the command line. If any setup operation fails, \fBatmtcp\fP terminates at this point and does not attempt to cancel previous operations (e.g. creation of permanent interfaces). .SH OPTIONS .IP \fB\-d\fP print detailed progress information on standard error. .IP \fB\-v\fP print some progress information on standard error. .IP \fB\-V\fP print version number of \fBatmtcp\fP on standard output and exit. .SH COMMANDS .IP \fBcreate\fP\ [\fIitf\fP] create a persistent interface. If no interface number is specified, \fBatmtcp\fP uses the default value 0. .IP \fBremove\fP\ [\fIitf\fP] remove a persistent interface. If the interface is still in use, it is marked as ephemeral and will be removed as soon as all VCs are closed. If no interface number is specified, \fBatmtcp\fP uses the default value 0. .IP \fBvirtual\fP\ [\fIitf\fP] link to the corresponding virtual (ATM over TCP) interface. If no interface number is specified, the kernel assigns the first available number. .IP \fBreal\fP\ [\fIitf\fP] link to the corresponding ATM interface. If no interface number is specified, \fBatmtcp\fP uses the default value 0. If a link requests that a VC be opened, \fBatmtcp\fP will attempt to open a VC with the specified QoS parameters on that interface. If the operation succeeds, data can be sent or received on that VC. If the operation fails, an error code is returned to the requester. Note that only data arriving on open VCs can be received and that a \fIreal\fP ATM interface never initiates a connection. \fBatmtcp\fP can share ATM interfaces with other applications. .IP \fBconnect\fP\ \fIhost\fP\ [\fIport\fP] connect to an instance of \fBatmtcp\fP running on the specified host. If the port argument is omitted, \fBatmtcp\fP uses the default port 2812. .IP \fBswitch\fP\ \fIhost\fP\ \fIline\fP\ [\fIport\fP] like \fBconnect\fP, but connects to an ATM over TCP "switch" and selects the specified virtual line. .IP \fBlisten\fP\ [\fIport\fP] listen for an incoming ATM over TCP connection. If the port argument is omitted, \fBatmtcp\fP uses the default port 2812. \fBatmtcp\fP waits until the connection is established. Only one connection is accepted per \fBlisten\fP command. .IP \fBlisten-bg\fP\ [\fIport\fP] like \fBlisten\fP, but run in background after beginning to listen. .IP \fBread\fP\ \fIfile\fP\ [\fIstream\fP] play back all streams from the specified file. If a stream number is specified, only that stream is played back. .IP \fBwrite\fP\ \fIfile\fP record the traffic of all links in the specified file. The PDUs from each link are stored in a stream with the same number as the link. .IP \fBprint\fP print a hex dump of the content of all received PDUs on standard output. .IP \fBbg\fP continue to run in background (i.e. in a forked child process). .IP \fBwait\fP\ [\fIseconds\fP] wait for the specified number of seconds. If no time is specified, \fBatmtcp\fP waits for a newline on standard input. .SH RESTRICTIONS Due to recent protocol changes, \fBatmtcp\fP is currently not compatible with the ATM over TCP "switch". .PP Only AAL SDUs are exchanged, no segmentation or reassembly is performed. That implies that using different AALs (e.g. AAL5 and AAL0) on either side will reveal limitations of this emulation. .PP The \fBatmtcp\fP process needs to run during the the whole lifetime of the connection. .SH EXAMPLES Create a pair of virtual ATM over TCP interfaces on the local host and connect them: .nf .sp # session A atmtcp virtual listen # session B atmtcp virtual connect localhost .sp .fi Create virtual interface 1, connect it to real ATM interface 0, then start \fBatmsigd\fP on the virtual interface, and log all the traffic in a file: .nf .sp atmtcp virtual 1 real 0 write /tmp/log atmsigd 1.0.5 .sp .fi Take the previously created file and examine the traffic sent from \fBatmsigd\fP using \fBsaaldump\fP: .nf .sp # session A atmtcp virtual 1 read /tmp/log 0 wait # session B saaldump 1.0.5 # press [Enter] in session A .sp .fi .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" atmdiag(8) .\"{{{}}} linux-atm-2.5.1/src/maint/atmtcp.c0000644000200100001440000005512110316351311015611 0ustar chasusers/* atmtcp.c - control ATM on TCP emulation */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define DEFAULT_PORT 2812 /* IANA-assigned; old ATMTCP used 8401 & 8402 */ #define MAX_PACKET (ATM_MAX_AAL5_PDU+sizeof(struct atmtcp_control)+ \ sizeof(int)) typedef struct _in { int fd; void (*recv)(struct _in *in); int link; unsigned char buf[MAX_PACKET]; int bytes; void *user; struct _in *next; } IN; typedef struct _out { const struct _out_ops *ops; int link; void *user; struct _out *next; } OUT; typedef struct _out_ops { int (*open)(struct _out *out,int in_link,struct atmtcp_control *msg); void (*send)(struct _out *out,int in_link,const struct atmtcp_hdr *hdr, int size); int (*close)(struct _out *out,int in_link,struct atmtcp_control *msg); } OUT_OPS; static OUT *outputs = NULL; static IN *inputs = NULL; static fd_set in_set; static int fds = 0; int debug = 0; static int links = 0; /* misc. */ /* * Policy: * - first link sends to everybody except itself * - second link sends to everybody except itself * - all other links send to everybody except the first link the sender itself */ static int right_link(const OUT *out,int in_link) { if (out->link == in_link) return 0; return out != outputs || in_link == 1; } static void emit(int in_link,const struct atmtcp_hdr *hdr,int size) { OUT *out; if (debug) fprintf(stderr,"Emit: %d.%d, %d bytes\n",ntohs(hdr->vpi), ntohs(hdr->vci),(int) ntohl(hdr->length)); for (out = outputs; out; out = out->next) if (out->ops->send) out->ops->send(out,in_link,hdr,size); } static void control(int in_link,struct atmtcp_control *msg) { OUT *out; int changed = 0; if (debug) fprintf(stderr,"Control: (%d.%d) %s %d.%d, vcc %s\n", ntohs(msg->hdr.vpi),ntohs(msg->hdr.vci), msg->type == ATMTCP_CTRL_OPEN ? "OPEN" : msg->type == ATMTCP_CTRL_CLOSE ? "CLOSE" : "???", msg->addr.sap_addr.vpi,msg->addr.sap_addr.vci,kptr_print(&msg->vcc)); for (out = outputs; out; out = out->next) switch (msg->type) { case ATMTCP_CTRL_OPEN: if (out->ops->open) changed += out->ops->open(out,in_link,msg); break; case ATMTCP_CTRL_CLOSE: if (out->ops->close) changed += out->ops->close(out,in_link,msg); break; default: fprintf(stderr,"interval error\n"); exit(1); } if (changed > 1) fprintf(stderr,"WARNING: multiple changes on control()\n"); } /* ----- Registries -------------------------------------------------------- */ static IN *register_in(int fd,void (*receive)(IN *in),void *user) { IN *in = alloc_t(IN); IN **walk; in->fd = fd; in->recv = receive; in->link = links; in->bytes = 0; in->user = user; in->next = NULL; for (walk = &inputs; *walk; walk = &(*walk)->next); *walk = in; if (fd >= fds) fds = fd+1; FD_SET(fd,&in_set); return in; } static void unregister_in(IN *in) { IN **walk; for (walk = &inputs; *walk != in; walk = &(*walk)->next); FD_CLR(in->fd,&in_set); if (fds > in->fd+1) return; fds = 0; for (walk = &inputs; *walk; walk = &(*walk)->next) if ((*walk)->fd >= fds) fds = (*walk)->fd+1; } static void register_out(const OUT_OPS *ops,void *user) { OUT *out = alloc_t(OUT); OUT **walk; out->ops = ops; out->link = links; out->user = user; out->next = NULL; for (walk = &outputs; *walk; walk = &(*walk)->next); *walk = out; } /* ----- Virtual (ATMTCP) interface ---------------------------------------- */ static void virtual_do_send(int fd,const void *data,int size) { int wrote; wrote = write(fd,data,size); if (wrote < 0) perror("write to kernel"); else if (wrote != size) { fprintf(stderr,"bad write (%d != %d)\n",wrote,size); exit(1); } } static void virtual_in(IN *in) { const struct atmtcp_hdr *hdr = (struct atmtcp_hdr *) in->buf; int got; got = read(in->fd,in->buf,MAX_PACKET); if (got < 0) { perror("virtual interface"); exit(1); } if (!got) exit(0); /* we don't use that yet */ if (got < sizeof(struct atmtcp_hdr)) { fprintf(stderr,"kernel message too small (%d)\n",got); exit(1); } if (ntohl(hdr->length) == ATMTCP_HDR_MAGIC) { if (got < sizeof(struct atmtcp_control)) { fprintf(stderr,"invalid control message\n"); exit(1); } control(in->link,(struct atmtcp_control *) in->buf); virtual_do_send(in->fd,hdr,sizeof(struct atmtcp_control)); return; } if (got != sizeof(struct atmtcp_hdr)+ntohl(hdr->length)) { fprintf(stderr,"invalid kernel message\n"); exit(1); } emit(in->link,hdr,got); } static void virtual_send(OUT *out,int in_link,const struct atmtcp_hdr *hdr, int size) { if (!right_link(out,in_link)) return; virtual_do_send(*(int *) out->user,hdr,size); } static OUT_OPS virtual_ops = { NULL, /* open */ virtual_send, /* send */ NULL /* close */ }; /* ----- Real ATM interface ------------------------------------------------ */ typedef struct _vcc { struct sockaddr_atmpvc addr; int fd; /* for output */ IN *in; /* NULL is output only */ struct _vcc *next; } VCC; typedef struct { int itf; VCC *vccs; } REAL_DATA; static VCC **real_lookup(REAL_DATA *data,const struct sockaddr_atmpvc *addr) { VCC **walk; for (walk = &data->vccs; *walk; walk = &(*walk)->next) if ((*walk)->addr.sap_addr.vpi == addr->sap_addr.vpi && (*walk)->addr.sap_addr.vci == addr->sap_addr.vci) break; return walk; } static void real_in(IN *in) { VCC *vcc = (VCC *) in->user; struct atmtcp_hdr *hdr = (struct atmtcp_hdr *) in->buf; int got; got = read(in->fd,hdr+1,MAX_PACKET-sizeof(*hdr)); if (got < 0) { perror("real interface"); exit(1); } hdr->length = htonl(got); hdr->vpi = htons(vcc->addr.sap_addr.vpi); hdr->vci = htons(vcc->addr.sap_addr.vci); emit(in->link,hdr,got+sizeof(*hdr)); } static int real_open(OUT *out,int in_link,struct atmtcp_control *msg) { REAL_DATA *data = (REAL_DATA *) out->user; VCC **vcc; int s; if (!right_link(out,in_link)) return 0; vcc = real_lookup(data,&msg->addr); if (*vcc) { msg->result = -EADDRINUSE; return 1; } if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { msg->result = -errno; if (debug) perror("socket"); return 1; } if (setsockopt(s,SOL_ATM,SO_ATMQOS,&msg->qos,sizeof(msg->qos)) < 0) { msg->result = -errno; if (debug) perror("setsockopt SO_ATMQOS"); return 1; } msg->addr.sap_addr.itf = data->itf; if (connect(s,(struct sockaddr *) &msg->addr, sizeof(struct sockaddr_atmpvc)) < 0) { msg->result = -errno; if (debug) perror("connect"); return 1; } (*vcc) = alloc_t(VCC); (*vcc)->addr = msg->addr; (*vcc)->next = NULL; (*vcc)->fd = s; (*vcc)->in = msg->qos.rxtp.traffic_class == ATM_NONE ? NULL : register_in(s,real_in,*vcc); return 1; } static void real_send(OUT *out,int in_link,const struct atmtcp_hdr *hdr, int size) { REAL_DATA *data = (REAL_DATA *) out->user; struct sockaddr_atmpvc addr; VCC **vcc; int wrote; if (!right_link(out,in_link)) return; addr.sap_addr.vpi = ntohs(hdr->vpi); addr.sap_addr.vci = ntohs(hdr->vci); vcc = real_lookup(data,&addr); if (!*vcc) { if (debug) fprintf(stderr,"VCC %d.%d not found\n",addr.sap_addr.vpi, addr.sap_addr.vci); return; } wrote = write((*vcc)->fd,hdr+1,ntohl(hdr->length)); if (wrote < 0) { perror("real write"); exit(1); } if (!wrote) exit(0); /* EOF */ if (wrote != ntohl(hdr->length)) { fprintf(stderr,"bad write (%d != %d)\n",wrote,(int) ntohl(hdr->length)); exit(1); } } static int real_close(OUT *out,int in_link,struct atmtcp_control *msg) { REAL_DATA *data = (REAL_DATA *) out->user; VCC **vcc,*this; int fd; if (!right_link(out,in_link)) return 0; vcc = real_lookup(data,&msg->addr); if (!*vcc) { msg->result = -ENOENT; return 1; } this = *vcc; *vcc = this->next; if (this->in) unregister_in(this->in); fd = this->fd; free(this); if (close(fd) >= 0) return 0; msg->result = -errno; return 1; } static OUT_OPS real_ops = { real_open, /* open */ real_send, /* send */ real_close /* close */ }; /* ----- ATMTCP connection ------------------------------------------------- */ static void tcp_do_send(int fd,const void *data,int size) { int wrote; wrote = write(fd,data,size); if (wrote < 0) { perror("write to TCP"); exit(1); } if (!wrote) exit(0); /* EOF */ if (wrote != size) { fprintf(stderr,"bad write (%d != %d)\n",wrote,size); exit(1); } } static void tcp_in(IN *in) { struct atmtcp_hdr *hdr = (struct atmtcp_hdr *) in->buf; char *msg = (char *) (hdr+1); int vpi,vci; char orig_addr[MAX_ATM_ADDR_LEN]; char qos[MAX_ATM_QOS_LEN]; struct atmtcp_control ctl; int size,got; size = sizeof(*hdr)-in->bytes; if (size <= 0) size += ntohl(hdr->length); got = read(in->fd,in->buf+in->bytes,size); if (got < 0) { perror("read from file"); exit(1); } if (!got) { fprintf(stderr,"TCP disconnected\n"); exit(0); } in->bytes += got; if (in->bytes < sizeof(*hdr)) return; if (ntohl(hdr->length) > ATM_MAX_AAL5_PDU) { fprintf(stderr,"giant PDU (length = %d) received\n", (unsigned int) ntohl(hdr->length)); exit(1); } if (in->bytes < sizeof(*hdr)+ntohl(hdr->length)) return; if (debug) fprintf(stderr,"TCP %d.%d, %d bytes\n",ntohs(hdr->vpi), ntohs(hdr->vci),(unsigned int) ntohl(hdr->length)); in->bytes = 0; if (hdr->vpi || hdr->vci) { emit(in->link,hdr,sizeof(*hdr)+ntohl(hdr->length)); return; } msg[ntohl(hdr->length)] = 0; memset(&ctl,0,sizeof(ctl)); if (sscanf(msg,"O %d.%d %s %s",&vpi,&vci,orig_addr,qos) == 4) ctl.type = ATMTCP_CTRL_OPEN; else if (sscanf(msg,"C %d.%d",&vpi,&vci) == 2) ctl.type = ATMTCP_CTRL_CLOSE; else { fprintf(stderr,"unrecognized control message \"%s\"\n",msg); return; } if (debug) fprintf(stderr,"received control \"%s\"\n",msg); ctl.hdr.vpi = htons(vpi); ctl.hdr.vci = htons(vci); ctl.hdr.length = htonl(ATMTCP_HDR_MAGIC); ctl.addr.sap_family = AF_ATMPVC; ctl.addr.sap_addr.itf = 0; ctl.addr.sap_addr.vpi = vpi; ctl.addr.sap_addr.vci = vci; if (ctl.type == ATMTCP_CTRL_OPEN) { if (text2atm(orig_addr,(struct sockaddr *) &ctl.addr,sizeof(ctl.addr), T2A_PVC) < 0) { fprintf(stderr,"invalid address \"%s\"\n",orig_addr); return; } if (text2qos(qos,&ctl.qos,0) < 0) { fprintf(stderr,"invalid QOS \"%s\"\n",qos); return; } } control(in->link,&ctl); } static void tcp_send(OUT *out,int in_link,const struct atmtcp_hdr *hdr,int size) { if (!right_link(out,in_link)) return; tcp_do_send(*(int *) out->user,hdr,size); } static int tcp_control(OUT *out,int in_link,struct atmtcp_control *msg) { char buf[MAX_ATM_NAME_LEN*2+MAX_ATM_NAME_LEN+5]; struct atmtcp_hdr *hdr = (struct atmtcp_hdr *) buf; char *start = (char *) (hdr+1); char *pos = start; if (!right_link(out,in_link)) return 0; if (msg->type != ATMTCP_CTRL_OPEN && msg->type != ATMTCP_CTRL_CLOSE) { fprintf(stderr,"unrecognized control message %d\n",msg->type); return 0; } pos += sprintf(pos,"%c %d.%d",msg->type == ATMTCP_CTRL_OPEN ? 'O' : 'C', msg->addr.sap_addr.vpi,msg->addr.sap_addr.vci); if (msg->type == ATMTCP_CTRL_OPEN) { *pos++ = ' '; if (atm2text(pos,sizeof(buf)-(pos-buf),(struct sockaddr *) &msg->addr, 0) < 0) { fprintf(stderr,"invalid ATM address\n"); return 0; } pos = strchr(pos,0); *pos++ = ' '; if (qos2text(pos,sizeof(buf)-(pos-buf),&msg->qos,0) < 0) { fprintf(stderr,"invalid QOS\n"); return 0; } pos = strchr(pos,0); } hdr->vpi = hdr->vci = htons(0); hdr->length = htonl(pos-start); if (debug) fprintf(stderr,"sending control \"%s\"\n",start); tcp_do_send(*(int *) out->user,buf,pos-buf); return 0; } static OUT_OPS tcp_ops = { tcp_control, /* open */ tcp_send, /* send */ tcp_control /* close */ }; /* ----- File -------------------------------------------------------------- */ static void file_in(IN *in) { int *stream = (int *) in->buf; struct atmtcp_hdr *hdr = (struct atmtcp_hdr *) (stream+1); int size,got; size = sizeof(int)+sizeof(*hdr)-in->bytes; if (size <= 0) size += ntohl(hdr->length) == ATMTCP_HDR_MAGIC ? sizeof(struct atmtcp_control)-sizeof(*hdr) : ntohl(hdr->length); got = read(in->fd,in->buf+in->bytes,size); if (got < 0) { perror("read from file"); exit(1); } if (!got) { fprintf(stderr,"EOF\n"); exit(0); } in->bytes += got; if (in->bytes < sizeof(int)+sizeof(*hdr)) return; if (ntohl(hdr->length) == ATMTCP_HDR_MAGIC) { if (in->bytes < sizeof(int)+sizeof(struct atmtcp_control)) return; } else { if (ntohl(hdr->length) > ATM_MAX_AAL5_PDU) { fprintf(stderr,"giant PDU (length = %d) received\n", (unsigned int) ntohl(hdr->length)); exit(1); } if (in->bytes < sizeof(int)+sizeof(*hdr)+ntohl(hdr->length)) return; if (debug) fprintf(stderr,"File %d.%d, %d bytes\n",ntohs(hdr->vpi), ntohs(hdr->vci),(unsigned int) ntohl(hdr->length)); } in->bytes = 0; if (*(int *) in->user != -1 && ntohl(*stream) != *(int *) in->user) return; if (ntohl(hdr->length) == ATMTCP_HDR_MAGIC) control(in->link,(struct atmtcp_control *) hdr); else emit(in->link,hdr,sizeof(*hdr)+ntohl(hdr->length)); } static void file_write(int fd,int stream,int is_control,const void *data, int size) { int wrote; stream = htonl(stream); wrote = write(fd,&stream,sizeof(stream)); if (wrote < 0) { perror("file write"); exit(1); } if (wrote != sizeof(stream)) { fprintf(stderr,"short write (%d < %d)\n",wrote,sizeof(stream)); exit(1); } wrote = write(fd,data,size); if (wrote < 0) { perror("file write"); exit(1); } if (wrote != size) { fprintf(stderr,"short write (%d < %d)\n",wrote,size); exit(1); } } static void file_send(OUT *out,int in_link,const struct atmtcp_hdr *hdr, int size) { file_write(*(int *) out->user,in_link,0,hdr,size); } static int file_control(OUT *out,int in_link,struct atmtcp_control *msg) { file_write(*(int *) out->user,in_link,1,msg,sizeof(*msg)); return 0; } static OUT_OPS file_ops = { file_control, /* open */ file_send, /* send */ file_control /* close */ }; /* ----- Print ------------------------------------------------------------- */ static void print_send(OUT *out,int in_link,const struct atmtcp_hdr *hdr, int size) { int length = ntohl(hdr->length); int i; printf("Link %d (from link %d), VPI %d, VCI %d, %d byte%s:",out->link, in_link,ntohs(hdr->vpi),ntohs(hdr->vci),length,length == 1 ? "" : "s"); for (i = 0; i < length; i++) { if (!(i & 15)) printf("\n "); printf(" %02x",((unsigned char *) (hdr+1))[i]); } putchar('\n'); fflush(stdout); } static OUT_OPS print_ops = { NULL, /* open */ print_send, /* send */ NULL /* close */ }; /* ----- Initialization ---------------------------------------------------- */ static void background(void) { static int backgrounding = 0; pid_t pid; if (backgrounding++) { fprintf(stderr,"\"bg\" only allowed once\n"); exit(1); } pid = fork(); if (pid < 0) { perror("fork"); exit(1); } if (pid) exit(0); } static void usage(const char *name) { fprintf(stderr,"usage: %s [ -d ] [ -v ] ...\n",name); fprintf(stderr,"%6s %s -V\n\n","",name); fprintf(stderr," -d debug\n"); fprintf(stderr," -v verbose\n"); fprintf(stderr," -V version\n\n"); fprintf(stderr,": create [ ] (persistent; default itf: 0)\n"); fprintf(stderr," remove [ ] (persistent; default itf: 0)\n"); fprintf(stderr," virtual [ ] (default itf: assigned by " "kernel)\n"); fprintf(stderr," real [ ] (default itf: 0)\n"); fprintf(stderr," connect [ ]\n"); fprintf(stderr," switch [ ] (to ATMTCP " "virtual switch)\n"); fprintf(stderr," listen [ ]\n"); fprintf(stderr," read [ ]\n"); fprintf(stderr," write \n"); fprintf(stderr," print\n"); fprintf(stderr," bg (background)\n"); fprintf(stderr," wait [ ] (default: wait for [Enter])\n\n"); fprintf(stderr,"create, remove, bg, and wait don't create new links.\n"); exit(1); } #define NEXT (++optind < argc) #define HAS_MORE (optind < argc-1) #define NEED_NEXT { if (!NEXT) usage(*argv); } #define ARG argv[optind] #define NEXT_ARG argv[optind+1] int main(int argc,char **argv) { struct sockaddr_in addr; char *end; int verbose = 0; int do_create,do_background = 0,to_switch = 0; int c; FD_ZERO(&in_set); while ((c = getopt(argc,argv,"dvV")) != EOF) switch (c) { case 'd': debug = 1; break; case 'v': verbose = 1; break; case 'V': printf("%s\n",VERSION); return 0; default: usage(*argv); } optind--; if (!HAS_MORE) usage(*argv); while (NEXT) { if ((do_create = !strcmp(ARG,"create")) || !strcmp(ARG,"remove")) { int s; int itf = 0; if ((s = socket(PF_ATMSVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } if (HAS_MORE) { itf = strtoul(NEXT_ARG,&end,10); if (*end) itf = 0; else (void) NEXT; } if (ioctl(s,do_create ? ATMTCP_CREATE : ATMTCP_REMOVE,itf) < 0) { perror(do_create ? "ioctl ATMTCP_CREATE" : "ioctl ATMTCP_REMOVE"); return 1; } (void) close(s); if (verbose) fprintf(stderr,"Persistent ATMTCP interface %d %s\n",itf, do_create ? "created" : "removed"); } else if (!strcmp(ARG,"virtual")) { int *fd = alloc_t(int); int itf = -1; if (HAS_MORE) { itf = strtoul(NEXT_ARG,&end,10); if (*end) itf = -1; else (void) NEXT; } if ((*fd = socket(PF_ATMSVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } if ((itf = ioctl(*fd,SIOCSIFATMTCP,itf)) < 0) { perror("ioctl SIOCSIFATMTCP"); return 1; } (void) register_in(*fd,&virtual_in,NULL); register_out(&virtual_ops,fd); fprintf(stderr,"Link %d: virtual interface %d\n",links++,itf); } else if (!strcmp(ARG,"real")) { REAL_DATA *data = alloc_t(REAL_DATA); int itf = 0; if (HAS_MORE) { itf = strtoul(NEXT_ARG,&end,10); if (*end) itf = 0; else (void) NEXT; } data->itf = itf; data->vccs = NULL; register_out(&real_ops,data); fprintf(stderr,"Link %d: real interface %d\n",links++,itf); } else if (!strcmp(ARG,"connect") || (to_switch = !strcmp(ARG,"switch"))) { int *fd = alloc_t(int); const char *host,*line = NULL; int port; NEED_NEXT; host = ARG; if ((*fd = socket(PF_INET,SOCK_STREAM,0)) < 0) { perror("socket"); return 1; } addr.sin_family = AF_INET; addr.sin_addr.s_addr = text2ip(ARG,NULL,T2I_NAME | T2I_ERROR); if (addr.sin_addr.s_addr == INADDR_NONE) return 1; if (to_switch) { NEED_NEXT; line = ARG; } if (!HAS_MORE) port = DEFAULT_PORT; else { port = strtoul(NEXT_ARG,&end,10); if (*end) port = DEFAULT_PORT; else (void) NEXT; } addr.sin_port = htons(port); if (connect(*fd,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("connect"); return 1; } (void) register_in(*fd,&tcp_in,NULL); register_out(&tcp_ops,fd); fprintf(stderr,"Link %d: ATMTCP connection to %s\n",links++,host); if (to_switch) tcp_do_send(*fd,line,strlen(line)+1); } else if (!strcmp(ARG,"listen") || (do_background = !strcmp(ARG,"listen-bg"))) { int fd,port,addr_len; int *fd2 = alloc_t(int); if ((fd = socket(PF_INET,SOCK_STREAM,0)) < 0) { perror("socket"); return 1; } addr.sin_family = AF_INET; addr.sin_addr.s_addr = htonl(INADDR_ANY); if (!HAS_MORE) port = DEFAULT_PORT; else { port = strtoul(NEXT_ARG,&end,10); if (*end) port = DEFAULT_PORT; else (void) NEXT; } addr.sin_port = htons(port); if (bind(fd,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("bind"); return 1; } if (listen(fd,5) < 0) { perror("listen"); return 1; } if (verbose) fprintf(stderr,"Listening on TCP port %d\n",port); if (do_background) background(); addr_len = sizeof(addr); if ((*fd2 = accept(fd,(struct sockaddr *) &addr,&addr_len)) < 0) { perror("accept"); return 1; } (void) close(fd); (void) register_in(*fd2,&tcp_in,NULL); register_out(&tcp_ops,fd2); fprintf(stderr,"Link %d: incoming ATMTCP connection from %s\n", links++,addr.sin_family == AF_INET ? inet_ntoa(addr.sin_addr) : "non-IPv4 host"); } else if (!strcmp(ARG,"read")) { int *stream = alloc_t(int); const char *name; int fd; NEED_NEXT; name = ARG; if ((fd = open(ARG,O_RDONLY)) < 0) { perror(ARG); return 1; } if (!HAS_MORE) *stream = -1; else { *stream = strtoul(NEXT_ARG,&end,10); if (*end) *stream = -1; else (void) NEXT; } (void) register_in(fd,&file_in,stream); fprintf(stderr,"Link %d: read-only file \"%s\"\n",links++,name); } else if (!strcmp(ARG,"write")) { int *fd = alloc_t(int); NEED_NEXT; if ((*fd = open(ARG,O_CREAT | O_WRONLY | O_TRUNC,0666)) < 0) { perror(ARG); return 1; } register_out(&file_ops,fd); fprintf(stderr,"Link %d: write-only file \"%s\"\n",links++,ARG); } else if (!strcmp(ARG,"print")) { register_out(&print_ops,0); fprintf(stderr,"Link %d: printing on standard output\n",links++); } else if (!strcmp(ARG,"bg")) background(); else if (!strcmp(ARG,"wait")) { int secs = -1; if (HAS_MORE) { secs = strtoul(NEXT_ARG,&end,10); if (*end) secs = -1; else (void) NEXT; } if (secs != -1) { sleep(secs); continue; } fprintf(stderr,"Press to continue\n"); do c = getchar(); while (c != EOF && c != '\n'); } else usage(*argv); } if (!fds) return 0; while (1) { IN *in; fd_set set; int ret; set = in_set; ret = select(fds,&set,NULL,NULL,NULL); if (ret < 0) { if (errno != EINTR) perror("select"); continue; } for (in = inputs; in; in = in->next) if (FD_ISSET(in->fd,&set)) in->recv(in); } } linux-atm-2.5.1/src/maint/enitune.c0000644000200100001440000000250010156360534015772 0ustar chasusers/* enitune.c - ENI buffer size tuning */ /* Written 2000 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include static void usage(const char *name) { fprintf(stderr,"usage: %s [ -t tx_mult ] [ -r rx_mult ] itf\n",name); fprintf(stderr," multipliers are in percent and must be > 100\n"); exit(1); } int main(int argc,char **argv) { char *name,*end; struct atmif_sioc sioc; struct eni_multipliers mult; int c,s; name = argv[0]; mult.tx = mult.rx = 0; while ((c = getopt(argc,argv,"t:r:")) != EOF) switch (c) { case 't': mult.tx = strtol(optarg,&end,0); if (*end || mult.tx <= 100) usage(name); break; case 'r': mult.rx = strtol(optarg,&end,0); if (*end || mult.rx <= 100) usage(name); break; } if (argc != optind+1) usage(name); sioc.number = strtol(argv[optind],&end,0); if (*end || sioc.number < 0) usage(name); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } sioc.arg = &mult; sioc.length = sizeof(mult); if (ioctl(s,ENI_SETMULT,&sioc) < 0) { perror("ioctl ENI_SETMULT"); return 1; } return 0; } linux-atm-2.5.1/src/maint/esi.80000644000200100001440000000223607360675443015051 0ustar chasusers.TH ESI 8 "April 26, 2000" "Linux" "Maintenance Commands" .SH NAME esi \- get or set the end system identifier (ESI) .SH SYNOPSIS .ad l .B esi .RB [ \fIitf\fP ] .br .B esi .RB [ \-f ]\ \fIesi\fP\ [ \fIitf\fP ] .br .B esi .B \-V .ad b .SH DESCRIPTION .B esi is used to show or set the end system identifier (ESI, a unique six-byte number corresponding to the MAC address of LAN technologies like Ethernet) of an ATM interface. If the interface number \fIitf\fP is omitted, interface 0 is used by default. The \fIesi\fP argument is a string of twelve hex digits. .P Only the ESI stored in the kernel is accessed; \fBesi\fP does not change the ESI stored on the NIC. If a non-zero ESI is already set on an interface, the \fB\-f\fP option has to be used to overwrite it. .P Note that ESI changes are not automatically propagated throughout the system, e.g. to \fBilmid\fP. \fBesi\fP should therefore be used early during system initialization. .SH OPTIONS .IP \fB\-f\fP force overwriting an existing ESI. .IP \fB\-V\fP print version number of \fBesi\fP on standard output and exit. .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" ilmid(8) .\"{{{}}} linux-atm-2.5.1/src/maint/esi.c0000644000200100001440000000405107360675443015121 0ustar chasusers/* esi.c - Get or set End System Identifier (ESI) */ /* Written 1997-2000 by Werner Almesberger, EPFL LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #if LINUX_VERSION_CODE < 0x20100 #include int main(int argc,const char **argv) { fprintf(stderr,"%s: not supported in this version\n",*argv); return 1; } #else #include #include #include #include #include #include #include static void usage(const char *name) { fprintf(stderr,"usage: %s [ [ -f ] esi ] [ itf ]\n",name); fprintf(stderr,"%6s %s -V\n","",name); exit(1); } int main(int argc,char **argv) { struct atmif_sioc req; const char *esi; unsigned char esi_buf[ESI_LEN]; char *end; int op,c,s; op = ATM_SETESI; memset(&req,0,sizeof(req)); esi = NULL; while ((c = getopt(argc,argv,"fV")) != EOF) switch (c) { case 'f': op = ATM_SETESIF; break; case 'V': printf("%s\n",VERSION); return 0; default: usage(*argv); } if (argc > optind+2) usage(*argv); if (argc == optind+2) { req.number = strtoul(argv[optind+1],&end,0); if (*end) usage(*argv); esi = argv[optind]; } if (argc == optind+1) { if (strlen(argv[optind]) == ESI_LEN*2) esi = argv[optind]; else { req.number = strtoul(argv[optind],&end,0); if (*end) usage(*argv); } } if (op == ATM_SETESIF && !esi) usage(*argv); if (esi) { int i,byte; for (i = 0; i < ESI_LEN; i++) { if (sscanf(esi,"%2x",&byte) != 1) usage(*argv); esi_buf[i] = byte; esi += 2; } } req.arg = esi_buf; req.length = ESI_LEN; if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } if (ioctl(s,esi ? op : ATM_GETESI,&req) < 0) { perror(esi ? op == ATM_SETESI ? "ioctl ATM_SETESI" : "ioctl ATM_SETESIF" : "ioctl ATM_GETESI"); return 1; } if (!esi) { int i; for (i = 0; i < ESI_LEN; i++) printf("%02X",esi_buf[i]); putchar('\n'); } return 0; } #endif linux-atm-2.5.1/src/maint/hediag.c0000644000200100001440000000762110741460066015556 0ustar chasusers#include #include #include #include #include #include #include #include #include #include struct reg_table { unsigned addr; char *name; }; struct reg_table pci_regs[] = { { 0x80000, "reset_cntl" }, { 0x80004, "host_cntl" }, { 0x80008, "lb_swap" }, { 0x8000c, "lb_mem_addr" }, { 0x80010, "lb_mem_data" }, { 0x80014, "lb_mem_access" }, { 0x80018, "sdram_ctl" }, { 0x8001c, "int_fifo" }, { 0x80020, "abort_addr" }, { 0x80080, "irq0_base" }, { 0x80084, "irq0_head" }, { 0x80088, "irq0_cntl" }, { 0x8008c, "irq0_data" }, /* fill in 1-4 later */ { 0x800c0, "grp_10_map" }, { 0x800c4, "grp_32_map" }, { 0x800c8, "grp_54_map" }, { 0x800cc, "grp_76_map" }, { 0x80400, "g0_rbps_s" }, { 0x80404, "g0_rbps_t" }, { 0x80408, "g0_rbps_qi" }, { 0x8040c, "g0_rbps_bs" }, { 0x80410, "g0_rbpl_s" }, { 0x80414, "g0_rbpl_t" }, { 0x80418, "g0_rbpl_qi" }, { 0x8041c, "g0_rbpl_bs" }, /* fill in 1-7 later */ { 0x80580, "g0_inmq_s" }, { 0x80584, "g0_inmq_l" }, { 0x80588, "g1_inmq_s" }, { 0x8058c, "g1_inmq_l" }, { 0x80590, "g2_inmq_s" }, { 0x80594, "g2_inmq_l" }, { 0x80598, "g3_inmq_s" }, { 0x8059c, "g3_inmq_l" }, { 0x805a0, "g4_inmq_s" }, { 0x805a4, "g4_inmq_l" }, { 0x805a8, "g5_inmq_s" }, { 0x805ac, "g5_inmq_l" }, { 0x805b0, "g6_inmq_s" }, { 0x805b4, "g6_inmq_l" }, { 0x805b8, "g7_inmq_s" }, { 0x805bc, "g7_inmq_l" }, { 0x80680, "tpdrq_b_h" }, { 0x80684, "tpdrq_t" }, { 0x80688, "tpdrq_s" }, { 0x8068c, "ubuff_ba" }, { 0x806c0, "rlbf0_h" }, { 0x806c4, "rlbf0_t" }, { 0x806c8, "rlbf1_h" }, { 0x806cc, "rlbf1_t" }, { 0x806d0, "rlbc_h" }, { 0x806d4, "rlbc_t" }, { 0x806d8, "rlbc_h2" }, { 0x806e0, "tlbf_h" }, { 0x806e4, "tlbf_t" }, { 0x806e8, "rlbf0_c" }, { 0x806ec, "rlbf1_c" }, { 0x806f0, "rxthrsh" }, { 0x806f4, "lithrsh" }, { 0x80700, "lbarb" }, { 0x80704, "sdramcon" }, { 0x80708, "lbstat" }, { 0x8070c, "rcc_stat" }, { 0x80740, "tcmconfig" }, { 0x80744, "tsrb_ba" }, { 0x80748, "tsrc_ba" }, { 0x8074c, "tmabr_ba" }, { 0x80750, "tpd_ba" }, { 0x80758, "tsrd_ba" }, { 0x80760, "tx_config" }, { 0x80764, "txaal5_proto" }, { 0x80780, "rcmconfig" }, { 0x80784, "rsrb_ba" }, { 0x80788, "rcmlbm_ba" }, { 0x8078c, "rcmabr_ba" }, { 0x807c0, "rc_config" }, { 0x807c4, "mcc" }, { 0x807c8, "oec" }, { 0x807cc, "dcc" }, { 0x807d0, "cec" }, { 0x807f4, "lb_config" }, { 0x807f0, "hsp_ba" }, { 0x807f8, "con_dat" }, { 0x807fc, "con_ctl" }, { 0x00000, NULL } }; char * reg_name(unsigned addr) { struct reg_table *regp = pci_regs; while ( regp->name != NULL ) { if (regp->addr == addr) return regp->name; regp++; } return NULL; } int main(int argc,char **argv) { int s; struct atmif_sioc sioc; struct he_ioctl_reg req; if (argc < 3) { fprintf(stderr,"usage: hediag itf [cmd]\n"); fprintf(stderr,"\t\treadpci address\n"); fprintf(stderr,"\t\treadrcm address\n"); fprintf(stderr,"\t\treadtcm address\n"); fprintf(stderr,"\t\treadmbox address\n"); exit(1); } if (strcmp(argv[2], "readpci") == 0) { req.addr = strtol(argv[3], NULL, 0); req.type = HE_REGTYPE_PCI; } else if (strcmp(argv[2], "readrcm") == 0) { req.addr = strtol(argv[3], NULL, 0); req.type = HE_REGTYPE_RCM; } else if (strcmp(argv[2], "readtcm") == 0) { req.addr = strtol(argv[3], NULL, 0); req.type = HE_REGTYPE_TCM; } else if (strcmp(argv[2], "readmbox") == 0) { req.addr = strtol(argv[3], NULL, 0); req.type = HE_REGTYPE_MBOX; } if ((s = socket(PF_ATMPVC, SOCK_DGRAM, ATM_AAL5)) < 0) { perror("socket"); exit(1); } sioc.number = atoi(argv[1]); sioc.arg = &req; sioc.length = sizeof(req); if (ioctl(s, HE_GET_REG, &sioc) < 0) { perror("ioctl HE_GET_REG"); exit(1); } if (reg_name(req.addr)) printf("%s = 0x%x\n", reg_name(req.addr), req.val); else printf("0x%x = 0x%x\n", req.addr, req.val); exit(0); } linux-atm-2.5.1/src/maint/nstune.c0000644000200100001440000000605107360675443015657 0ustar chasusers/****************************************************************************** * * nstune.c * * User level utility to tune the NICStAR device driver. * * Author: Rui Prior * * (C) INESC 1998 * ******************************************************************************/ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include static void usage(const char *name) { fprintf(stderr, "Set buffer level marks: \n"); fprintf(stderr, "%s itf {s|l|h|i} min init max \n", name); fprintf(stderr, "Set buffer level to init mark: \n"); fprintf(stderr, "%s itf {s|l|h|i} \n", name); fprintf(stderr, "\n"); exit(1); } int main(int argc, char **argv) { char *name, *end; int itf, min, init, max; int s; pool_levels pl; int btype; struct atmif_sioc sioc; name = argv[0]; if (argc != 6 && argc != 3) usage(name); itf = strtol(argv[1], &end, 0); if (end == argv[1] || itf < 0) usage(name); if (argc == 6) { min = strtol(argv[3], &end, 0); if (end == argv[3] || min <= 0) usage(name); init = strtol(argv[4], &end, 0); if (end == argv[4] || init <= 0) usage(name); max = strtol(argv[5], &end, 0); if (end == argv[5] || max <= 0) usage(name); if (min >= init || init >= max) usage(name); switch(*argv[2]) { case 's': pl.buftype = NS_BUFTYPE_SMALL; break; case 'l': pl.buftype = NS_BUFTYPE_LARGE; break; case 'h': pl.buftype = NS_BUFTYPE_HUGE; break; case 'i': pl.buftype = NS_BUFTYPE_IOVEC; break; default: usage(name); } sioc.number = itf; sioc.arg = &pl; sioc.length = sizeof(pl); pl.level.min = min; pl.level.init = init; pl.level.max = max; s = socket(PF_ATMPVC, SOCK_DGRAM, 0); if (s < 0) { perror("socket"); return 2; } if (ioctl(s, NS_SETBUFLEV, &sioc) < 0) { perror("ioctl NS_SETBUFLEV"); return 3; } } else /* argc == 2 */ { switch(*argv[2]) { case 's': btype = NS_BUFTYPE_SMALL; break; case 'l': btype = NS_BUFTYPE_LARGE; break; case 'h': btype = NS_BUFTYPE_HUGE; break; case 'i': btype = NS_BUFTYPE_IOVEC; break; default: usage(name); } sioc.number = itf; sioc.arg = (void *) btype; sioc.length = sizeof(void *); s = socket(PF_ATMPVC, SOCK_DGRAM, 0); if (s < 0) { perror("socket"); return 2; } if (ioctl(s, NS_ADJBUFLEV, &sioc) < 0) { perror("ioctl NS_ADJBUFLEV"); return 3; } } return 0; } linux-atm-2.5.1/src/maint/saaldump.c0000644000200100001440000000717407360675443016160 0ustar chasusers/* saaldump.c - ATM signaling message dumper */ /* Written 1997-1999 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include "pdu.h" #define DUMP_MODE #include "qlib.h" #define MAX_ITEM 2048 /* longest string emitted by q.dump */ static int interval = 0; /* display absolute time by default */ static int quiet = 0; /* decode Q.2931 messages by default */ static int new_line = 1; static void sscop_pdu_diag(int severity,const char *fmt,...) { va_list ap; va_start(ap,fmt); printf(" %s",severity == SP_ERROR ? "ERROR: " : ""); vprintf(fmt,ap); putchar('\n'); va_end(ap); } void qd_dump(const char *msg,...) { char buf[MAX_ITEM]; va_list ap; int len; if (new_line) printf(" "); va_start(ap,msg); len = vsprintf(buf,msg,ap); va_end(ap); if (len > MAX_ITEM) { fprintf(stderr,"FATAL ERROR: buffer too small (%d < %d)\n",MAX_ITEM, len); exit(1); } printf("%s",buf); new_line = len ? buf[len-1] == '\n' : 0; } void qd_report(int severity,const char *msg,...) { va_list ap; if (severity > Q_ERROR) return; printf("%s ERROR: ",new_line ? "" : "\n"); va_start(ap,msg); vprintf(msg,ap); va_end(ap); putchar('\n'); new_line = 1; } static void analyze(unsigned char *pdu,int size,struct timeval stamp) { static struct timeval last; static int first = 1; PDU_VARS; if (first || !interval) { printf("%2d:%02d:%02d ",(int) ((stamp.tv_sec/3600) % 24), (int) ((stamp.tv_sec/60) % 60),(int) (stamp.tv_sec % 60)); if (interval) { first = 0; last = stamp; } } else { struct timeval diff; diff.tv_sec = stamp.tv_sec-last.tv_sec; diff.tv_usec = stamp.tv_usec-last.tv_usec; while (diff.tv_usec < 0) { diff.tv_usec += 1000000; diff.tv_sec--; } last = stamp; printf("%05u.%02u",(unsigned) diff.tv_sec, (unsigned) diff.tv_usec/10000); } if (!DECOMPOSE_PDU(NULL,pdu,size)) { PRINT_PDU("",pdu); if (type == SSCOP_SD && !quiet) { Q_DSC dsc; qd_open(&dsc,pdu,length); qd_close(&dsc); } } } static void usage(const char *name) { fprintf(stderr,"usage: %s [-i] [-q] [itf.]vpi.vci\n",name); exit(1); } int main(int argc,char **argv) { char buf[ATM_MAX_AAL5_PDU]; struct sockaddr_atmpvc addr; struct atm_qos qos; char *name; int c,s,size; name = argv[0]; while ((c = getopt(argc,argv,"iq")) != EOF) switch (c) { case 'i': interval = 1; break; case 'q': quiet = 1; break; default: usage(name); } if (argc != optind+1) usage(name); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } memset(&addr,0,sizeof(addr)); if (text2atm(argv[optind],(struct sockaddr *) &addr,sizeof(addr),T2A_PVC) < 0) usage(name); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.rxtp.traffic_class = ATM_UBR; qos.rxtp.max_sdu = ATM_MAX_AAL5_PDU; if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (bind(s,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("bind"); return 1; } pdu_diag = sscop_pdu_diag; qd_start(); while ((size = read(s,buf,ATM_MAX_AAL5_PDU)) > 0) { struct timeval stamp; if (ioctl(s,SIOCGSTAMP,&stamp) < 0) { perror("ioctl SIOCGSTAMP"); return 1; } analyze(buf,size,stamp); fflush(stdout); } perror("read"); return 1; } linux-atm-2.5.1/src/maint/sonetdiag.c0000644000200100001440000000705207360675443016322 0ustar chasusers/* sonetdiag.c - SONET diagnostics */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include struct opts { const char *name; int value; } options[] = { { "sbip", SONET_INS_SBIP }, { "lbip", SONET_INS_LBIP }, { "pbip", SONET_INS_PBIP }, { "frame",SONET_INS_FRAME }, { "los", SONET_INS_LOS }, { "lais", SONET_INS_LAIS }, { "pais", SONET_INS_PAIS }, { "hcs", SONET_INS_HCS }, { NULL, 0 } }; static void usage(const char *name) { fprintf(stderr,"usage: %s [ -z ] [ itf ] [ [-]error ...]\n",name); fprintf(stderr," errors: sbip lbip pbip frame\n"); fprintf(stderr," los lais pais hcs\n"); exit(1); } int main(int argc,char **argv) { struct atmif_sioc req; struct sonet_stats stats; struct opts *walk; const char *name; char *opt,*end; int zero,s,set,clear,error,minus; zero = 0; name = argv[0]; if (argc > 1 && argv[1][0] == '-') { if (strcmp(argv[1],"-z")) usage(name); zero = 1; argc--; argv++; } if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } if (argc == 1) req.number = 0; else { req.number = strtol(argv[1],&end,10); if (*end) req.number = 0; else { if (req.number < 0) usage(name); argc--; argv++; } } argc--; argv++; set = clear = error = 0; while (argc--) { minus = *(opt = *argv++) == '-'; if (minus) opt++; for (walk = options; walk->name; walk++) if (!strcmp(walk->name,opt)) break; if (walk->name) if (minus) clear |= walk->value; else set |= walk->value; else { fprintf(stderr,"unrecognized option: %s\n",opt); error = 1; } } if (error) return 1; if (!set && !clear) { req.arg = &stats; req.length = sizeof(stats); if (ioctl(s,zero ? SONET_GETSTATZ : SONET_GETSTAT,&req) < 0) { perror(zero ? "ioctl SONET_GETSTATZ" : "ioctl SONET_GETSTAT"); return 1; } req.arg = &set; req.length = sizeof(set); if (ioctl(s,SONET_GETDIAG,&req) < 0) if (errno != EINVAL) perror("ioctl SONET_GETDIAG"); if (stats.section_bip != -1) printf("Section BIP errors: %10d\n",stats.section_bip); if (stats.line_bip != -1) printf("Line BIP errors: %10d\n",stats.line_bip); if (stats.path_bip != -1) printf("Path BIP errors: %10d\n",stats.path_bip); if (stats.line_febe != -1) printf("Line FEBE: %10d\n",stats.line_febe); if (stats.path_febe != -1) printf("Path FEBE: %10d\n",stats.path_febe); if (stats.corr_hcs != -1) printf("Correctable HCS: %10d\n",stats.corr_hcs); if (stats.uncorr_hcs != -1) printf("Uncorrectable HCS: %10d\n",stats.uncorr_hcs); if (stats.tx_cells != -1) printf("TX cells: %10d\n",stats.tx_cells); if (stats.rx_cells != -1) printf("RX cells: %10d\n",stats.rx_cells); if (set) { int i; printf("\nDiagnostics:"); for (i = 0; options[i].name; i++) if (set & options[i].value) printf(" %s",options[i].name); putchar('\n'); } } else { if (set) { req.arg = &set; req.length = sizeof(set); if (ioctl(s,SONET_SETDIAG,&req) < 0) perror("ioctl SONET_SETDIAG"); } if (clear) { req.arg = &clear; req.length = sizeof(clear); if (ioctl(s,SONET_CLRDIAG,&req) < 0) perror("ioctl SONET_SETDIAG"); } } return 0; } linux-atm-2.5.1/src/maint/zntune.c0000644000200100001440000000545507360675443015675 0ustar chasusers/* zntune.c - ZN122x free buffer pool tuning */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include /* for struct timeval, although it's not used */ #include static void usage(const char *name) { fprintf(stderr,"%s: [-z] itf [pool]\n",name); fprintf(stderr,"%s: [-l low_water] [-h high_water] [-t threshold] itf " "[pool]\n",name); exit(1); } int main(int argc,char **argv) { char *name,*end; int low_water,high_water,next_thres,zero; int itf,pool,first,i; int c,s; low_water = high_water = next_thres = zero = 0; name = argv[0]; while ((c = getopt(argc,argv,"l:h:t:z")) != EOF) switch (c) { case 'l': low_water = strtol(optarg,&end,0); if (*end || low_water < 0) usage(name); break; case 'h': high_water = strtol(optarg,&end,0); if (*end || high_water < 0) usage(name); break; case 't': next_thres = strtol(optarg,&end,0); if (*end || next_thres < 0) usage(name); break; case 'z': zero = 1; default: usage(name); } if (zero && (low_water || high_water)) usage(name); if (argc < optind+1 || argc > optind+2) usage(name); itf = strtol(argv[optind],&end,0); if (*end || itf < 0) usage(name); if (argc < optind+2) pool = -1; else { pool = strtol(argv[optind+1],&end,0); if (*end || pool < 0 || pool > 31) usage(name); } s = socket(PF_ATMPVC,SOCK_DGRAM,0); if (s < 0) { perror("socket"); return 1; } first = 1; for (i = pool == -1 ? 0 : pool; i <= (pool == -1 ? ZATM_LAST_POOL : pool); i++) { struct atmif_sioc sioc; struct zatm_pool_req req; sioc.number = itf; sioc.arg = &req; sioc.length = sizeof(req); req.pool_num = i; if (low_water || high_water) { req.info.low_water = low_water; req.info.high_water = high_water; req.info.next_thres = next_thres; if (ioctl(s,ZATM_SETPOOL,&sioc) < 0) { perror("ioctl ZATM_SETPOOL"); return 1; } } else { int size; if (ioctl(s,zero ? ZATM_GETPOOLZ : ZATM_GETPOOL,&sioc) < 0) { perror(zero ? "ioctl ZATM_GETPOOLZ" : "ioctl ZATM_GETPOOL"); return 1; } if (first) printf("Pool Size Ref Low High Alarm Under Offs NxOf Count " "Thres\n"); printf(" %2d ",i); size = 64 << (i < 2 ? 0 : i-2); if (size < 1024) printf("%4d",size); else printf("%3dk",size >> 10); printf(" %3d %3d %4d%8d%6d %4d %4d%6d%6d\n", req.info.ref_count,req.info.low_water,req.info.high_water, req.info.rqa_count,req.info.rqu_count,req.info.offset, req.info.next_off,req.info.next_cnt,req.info.next_thres); } first = 0; } return 0; } linux-atm-2.5.1/src/maint/Makefile.in0000644000200100001440000006400211304770376016236 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ sbin_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) bin_PROGRAMS = $(am__EXEEXT_1) subdir = src/maint DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = atmdiag$(EXEEXT) atmdump$(EXEEXT) sonetdiag$(EXEEXT) \ saaldump$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" \ "$(DESTDIR)$(man8dir)" am__EXEEXT_2 = atmaddr$(EXEEXT) esi$(EXEEXT) am__EXEEXT_3 = atmloop$(EXEEXT) atmtcp$(EXEEXT) enitune$(EXEEXT) \ zntune$(EXEEXT) hediag$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS) am_atmaddr_OBJECTS = atmaddr.$(OBJEXT) atmaddr_OBJECTS = $(am_atmaddr_OBJECTS) atmaddr_LDADD = $(LDADD) atmaddr_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_atmdiag_OBJECTS = atmdiag.$(OBJEXT) atmdiag_OBJECTS = $(am_atmdiag_OBJECTS) atmdiag_LDADD = $(LDADD) atmdiag_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_atmdump_OBJECTS = atmdump.$(OBJEXT) atmdump_OBJECTS = $(am_atmdump_OBJECTS) atmdump_LDADD = $(LDADD) atmdump_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_atmloop_OBJECTS = atmloop.$(OBJEXT) atmloop_OBJECTS = $(am_atmloop_OBJECTS) atmloop_LDADD = $(LDADD) atmloop_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_atmtcp_OBJECTS = atmtcp.$(OBJEXT) atmtcp_OBJECTS = $(am_atmtcp_OBJECTS) atmtcp_LDADD = $(LDADD) atmtcp_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_enitune_OBJECTS = enitune.$(OBJEXT) enitune_OBJECTS = $(am_enitune_OBJECTS) enitune_LDADD = $(LDADD) enitune_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_esi_OBJECTS = esi.$(OBJEXT) esi_OBJECTS = $(am_esi_OBJECTS) esi_LDADD = $(LDADD) esi_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la hediag_SOURCES = hediag.c hediag_OBJECTS = hediag.$(OBJEXT) hediag_LDADD = $(LDADD) hediag_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_saaldump_OBJECTS = saaldump.$(OBJEXT) saaldump_OBJECTS = $(am_saaldump_OBJECTS) am_sonetdiag_OBJECTS = sonetdiag.$(OBJEXT) sonetdiag_OBJECTS = $(am_sonetdiag_OBJECTS) sonetdiag_LDADD = $(LDADD) sonetdiag_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_zntune_OBJECTS = zntune.$(OBJEXT) zntune_OBJECTS = $(am_zntune_OBJECTS) zntune_LDADD = $(LDADD) zntune_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(atmaddr_SOURCES) $(atmdiag_SOURCES) $(atmdump_SOURCES) \ $(atmloop_SOURCES) $(atmtcp_SOURCES) $(enitune_SOURCES) \ $(esi_SOURCES) hediag.c $(saaldump_SOURCES) \ $(sonetdiag_SOURCES) $(zntune_SOURCES) DIST_SOURCES = $(atmaddr_SOURCES) $(atmdiag_SOURCES) \ $(atmdump_SOURCES) $(atmloop_SOURCES) $(atmtcp_SOURCES) \ $(enitune_SOURCES) $(esi_SOURCES) hediag.c $(saaldump_SOURCES) \ $(sonetdiag_SOURCES) $(zntune_SOURCES) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ BOOTPGMS = atmaddr esi SYSPGMS = atmloop atmtcp enitune zntune hediag # nstune USRPGMS = atmdiag atmdump sonetdiag saaldump INCLUDES = -I$(srcdir)/../q2931 -I$(srcdir)/../saal -I. LDADD = $(top_builddir)/src/lib/libatm.la atmaddr_SOURCES = atmaddr.c esi_SOURCES = esi.c atmloop_SOURCES = atmloop.c atmtcp_SOURCES = atmtcp.c enitune_SOURCES = enitune.c zntune_SOURCES = zntune.c #nstune_SOURCES = nstune.c atmdiag_SOURCES = atmdiag.c atmdump_SOURCES = atmdump.c sonetdiag_SOURCES = sonetdiag.c saaldump_SOURCES = saaldump.c saaldump_LDADD = $(top_builddir)/src/q2931/qd.dump.o $(top_builddir)/src/saal/libsaal.a $(LDADD) saaldump_DEPENDENCIES = $(saaldump_LDADD) man_MANS = atmaddr.8 atmdiag.8 atmdump.8 atmloop.8 atmtcp.8 esi.8 #EXTRA_DIST = $(man_MANS) README.nstune EXTRA_DIST = $(man_MANS) README.nstune nstune.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/maint/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/maint/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list atmaddr$(EXEEXT): $(atmaddr_OBJECTS) $(atmaddr_DEPENDENCIES) @rm -f atmaddr$(EXEEXT) $(LINK) $(atmaddr_OBJECTS) $(atmaddr_LDADD) $(LIBS) atmdiag$(EXEEXT): $(atmdiag_OBJECTS) $(atmdiag_DEPENDENCIES) @rm -f atmdiag$(EXEEXT) $(LINK) $(atmdiag_OBJECTS) $(atmdiag_LDADD) $(LIBS) atmdump$(EXEEXT): $(atmdump_OBJECTS) $(atmdump_DEPENDENCIES) @rm -f atmdump$(EXEEXT) $(LINK) $(atmdump_OBJECTS) $(atmdump_LDADD) $(LIBS) atmloop$(EXEEXT): $(atmloop_OBJECTS) $(atmloop_DEPENDENCIES) @rm -f atmloop$(EXEEXT) $(LINK) $(atmloop_OBJECTS) $(atmloop_LDADD) $(LIBS) atmtcp$(EXEEXT): $(atmtcp_OBJECTS) $(atmtcp_DEPENDENCIES) @rm -f atmtcp$(EXEEXT) $(LINK) $(atmtcp_OBJECTS) $(atmtcp_LDADD) $(LIBS) enitune$(EXEEXT): $(enitune_OBJECTS) $(enitune_DEPENDENCIES) @rm -f enitune$(EXEEXT) $(LINK) $(enitune_OBJECTS) $(enitune_LDADD) $(LIBS) esi$(EXEEXT): $(esi_OBJECTS) $(esi_DEPENDENCIES) @rm -f esi$(EXEEXT) $(LINK) $(esi_OBJECTS) $(esi_LDADD) $(LIBS) hediag$(EXEEXT): $(hediag_OBJECTS) $(hediag_DEPENDENCIES) @rm -f hediag$(EXEEXT) $(LINK) $(hediag_OBJECTS) $(hediag_LDADD) $(LIBS) saaldump$(EXEEXT): $(saaldump_OBJECTS) $(saaldump_DEPENDENCIES) @rm -f saaldump$(EXEEXT) $(LINK) $(saaldump_OBJECTS) $(saaldump_LDADD) $(LIBS) sonetdiag$(EXEEXT): $(sonetdiag_OBJECTS) $(sonetdiag_DEPENDENCIES) @rm -f sonetdiag$(EXEEXT) $(LINK) $(sonetdiag_OBJECTS) $(sonetdiag_LDADD) $(LIBS) zntune$(EXEEXT): $(zntune_OBJECTS) $(zntune_DEPENDENCIES) @rm -f zntune$(EXEEXT) $(LINK) $(zntune_OBJECTS) $(zntune_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmaddr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmdiag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmdump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmloop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmtcp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/enitune.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hediag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/saaldump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sonetdiag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zntune.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man8: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" @list=''; test -n "$(man8dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-sbinPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-sbinPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-man \ uninstall-sbinPROGRAMS uninstall-man: uninstall-man8 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool clean-sbinPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man8 install-pdf \ install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-man uninstall-man8 \ uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/man/0000755000200100001440000000000011304770376013632 5ustar chasuserslinux-atm-2.5.1/src/man/CVS/0000755000200100001440000000000011304767137014266 5ustar chasuserslinux-atm-2.5.1/src/man/CVS/Root0000644000200100001440000000007411304767137015135 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/man/CVS/Repository0000644000200100001440000000002211304767137016362 0ustar chasuserslinux-atm/src/man linux-atm-2.5.1/src/man/CVS/Entries0000644000200100001440000000037211304767137015624 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:28 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /qos.7/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /sap.7/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 D linux-atm-2.5.1/src/man/CVS/Tag0000644000200100001440000000001011304767137014713 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/man/.cvsignore0000644000200100001440000000002510666025264015626 0ustar chasusersMakefile Makefile.in linux-atm-2.5.1/src/man/Makefile-0.790000644000200100001440000000012207360675443015666 0ustar chasusersMAN7=qos.7 sap.7 DEPEND = depend_man include ../Rules.make all: depend_man: @ linux-atm-2.5.1/src/man/Makefile.am0000644000200100001440000000006207360675443015672 0ustar chasusersman_MANS = qos.7 sap.7 EXTRA_DIST = $(man_MANS) linux-atm-2.5.1/src/man/qos.70000644000200100001440000001005507360675443014533 0ustar chasusers.TH QOS 7 "April 20, 2000" "Linux" "Miscellaneous" .SH NAME qos \- Quality of Service specification .SH DESCRIPTION The \fBtext2qos\fP and \fBqos2text\fP functions use the format described in this man page. Because all standard ATM tools on Linux use those functions to convert to or from the textual representation of QOS specifications, they expect them in the same format too. .P The most fundamental parameters are the \fItraffic class\fP and the \fIAAL (ATM Adaption Layer) type\fP. If the connection is bi-directional, both directions have the same traffic class and the same AAL type. The traffic class and the AAL type are the first elements (in any order) in a QOS specification. The traffic class is the only required element. If the AAL type is omitted, the application will provide a default value. The following traffic classes are recognized: .IP \fBubr\fP Unassigned Bit Rate .IP \fBcbr\fP Constant Bit Rate .IP \fBabr\fP Available Bit Rate .P The following AAL types are recognized: .IP \fBaal0\fP ("raw ATM") .IP \fBaal5\fP .P If both, the traffic class and the AAL type are specified, they are separated by a comma. .P If more parameters are supplied, the traffic class and AAL type must be followed by a colon. Traffic parameters can be specified independently for the transmit and the receive direction. Their parameter lists are prefixed with \fBtx:\fP and \fBrx:\fP, respectively. If both parameter lists are present, the \fBtx:\fP list must precede the \fBrx:\fP list. If a parameter is equal for both directions, it can be placed in a common parameter list (without prefix). The general format is as follows: .P \fIclass_and_aal\fB:\fIcommon_list\fP,tx:\fIlist\fB,rx:\fIlist\fP .P Each list consists of elements specifying a parameter. Elements can appear in any order and they are separated with commas. The following elements are recognized: .IP \fBpcr=\fIrate\fP is a synonym for \fBmax_pcr=\fIrate\fP .IP \fBmax_pcr=\fIrate\fP The upper limit for the peak cell rate to assign. If omitted, any rate up to link speed may be chosen. .IP \fBmin_pcr=\fIrate\fP The lower limit for the peak cell rate to assign. If omitted, any rate above zero can be chosen. .IP \fBsdu=\fIsize\fP is a synonym for \fBmax_sdu=\fIsize\fP .IP \fBmax_sdu=\fIsize\fP The size of the largest packet that may be sent or received. If omitted, a context-dependent default value is used. .P Values are specified as follows: .IP \fIrate\fP The (decimal) rate, optionally followed by a unit. The unit may be prefixed with one of the multipliers \fBk\fP, \fBM\fP, or \fBG\fP, meaning 1'000, 1'000'000, or 1'000'000'000, respectively. The units \fBcps\fP (cells per second) and \fBbps\fP (bits per second) are recognized. If multiplier and unit are omitted, cells per second are assumed. Note that the rate is always converted to cells per second, so rounding errors may occur when specifying the rate in bits per second. Rates measured in bits per second are considered to be user data rates, i.e. one cell corresponds to 384 bits. The rate can be a fractional value, e.g. \fB1.3Mbps\fP. It is an error to specify only a multiplier without a unit. Link speed can be indicated by using the keyword \fBmax\fP as the rate. .IP \fIsize\fP The (decimal) number of bytes. .P The \fBtx:\fP or \fBrx:\fP lists may also just contain the single element \fBnone\fP, which indicates that the corresponding direction is not used. It is an error to specify \fBnone\fP for both direction. .P Note that commas must never follow colons or other commas. Also, whitespace is not allowed inside a QOS specification. QOS specifications are case-insensitive. .SH EXAMPLES Each of the following lines contains a valid QOS specification: .nf .sp ubr ubr:pcr=100kbps cbr,aal0:pcr=64kbps CBR:max_pcr=11Mbps,min_pcr=10mbps,sdu=8192 aal5,ubr:tx:none cbr:tx:pcr=30000,rx:none .sp .fi The following specificiations are equivalent: .nf .sp CBR,AAL5:PCR=48Mbps cbr,aal5:max_pcr=125000 cbr,aal5:tx:pcr=125kcps,rx:pcr=125kcps .sp .fi .SH AUTHOR Werner Almesberger, EPFL LRC/ICA .\" .SH "SEE ALSO" .\" atmsigd(8), syslogd(8) .\"{{{}}} linux-atm-2.5.1/src/man/sap.70000644000200100001440000001154107360675443014515 0ustar chasusers.TH SAP 7 "November 6, 1997" "Linux" "Miscellaneous" .SH NAME sap \- Service Access Point specification .SH DESCRIPTION The \fBtext2sap\fP and \fBsap2text\fP functions use the format described in this man page. Because all standard ATM tools on Linux use those functions to convert to or from the textual representation of SAP specifications, they expect them in the same format too. .P The SAP is divided into two parts: the \fIbroadband high layer information\fP (BHLI) and the \fIbroadband low layer information\fP (BLLI). A SAP can contain one, both, or none of them. In the latter case, the SAP is usually considered as a wildcard SAP, i.e. a SAP that is compatible with any other SAP. .P Each part begins with its name (\fBbhli\fP or \fBblli\fP), followed by a colon and a (non-empty) list of attributes, which are of the form \fIattribute\fP\fB=\fP\fIvalue\fP. Some attributes have sub-attributes, which follow them. Everything that isn't separated by a colon or an equal sign is separated by a comma. .P Values which are a number of bytes are specified as the corresponding sequence of pairs of hex digits. The sequence can be optionally prefixed with \fB0x\fP. Values with are integers in a given range can be specified in decimal (no prefix), octal (\fB0\fP prefix), and hexadecimal (\fB0x\fP prefix). .P The following, mutually exclusive attributes are allowed in the \fBbhli\fP part (see the corresponding ATM Forum and ITU documents for the semantics): .IP \fBiso=\fI1\-8\ bytes\fP ISO .IP \fBuser=\fI1\-8\ bytes\fP User-specific .IP \fBhlp=\fI4\ bytes\fP High layer profile. Note that this attribute only exists on UNI 3.0. \fBtext2sap\fP only recognizes it if your system is configured to accept UNI 3.0 message formats. .IP \fBoui=\fI3\ bytes\fB,id=\fI4\ bytes\fP Vendor-specific application identifier .P The structure of the \fBbhli\fP part is more complex. It distinguishes three layers, \fBl1\fP, \fBl2\fP, and \fBl3\fP, of which the first one is presently unsupported. For layer two, the following (mutually exclusive) possibilities exist: .IP \fBl2=iso1745\fP Basic mode ISO 1745 .IP \fBl2=q291\fP ITU-T Q.291 (Rec. I.441) .IP \fBl2=lapb\fP Extended LAPB, half-duplex (Rec. T.71) .IP \fBl2=iso8802\fP LAN LLC (ISO/IEC 8802/2) .IP \fBl2=x75\fP ITU-T X.75, SLP .IP \fBl2=x25_ll\fP\ ... ITU-T X.25, link layer. This attribute and the following attributes through \fBl2=iso7776\fP can optionally be followed by one or more of the following sub-attributes: \fBmode=\fP\fImode\fP (mode of operation, either \fBnorm\fP or \fBext\fP), and \fBwindow=\fP\fIwindow size\fP (window size in k, 1\-127). .IP \fBl2=x25_ml\fP\ ... ITU-T X.25, multilink .IP \fBl2=hdlc_arm\fP\ ... HDLC ARM (ISO/IEC 4335) .IP \fBl2=hdlc_nrm\fP\ ... HDLC NRM (ISO/IEC 4335) .IP \fBl2=hdlc_abm\fP\ ... HDLC ABM (ISO/IEC 4335) .IP \fBl2=q992\fP\ ... ITU-T Q.922 .IP \fBl2=iso7776\fP\ ... ISO 7776 DTE-DTE .IP \fBl2=user,info=\fIinformation\fP User-specified. \fIinformation\fP is an integer in the range 0 to 255. .P For layer three, the following (again, mutually exclusive) possibilities exist: .IP \fBl3=iso8473\fP ITU-T X.233 | ISO/IEC 8473 .IP \fBl3=t70\fP ITU-T T.70 minimum network layer .IP \fBl3=h321\fP ITU-T Recommendation H.321 .IP \fBl3=x25\fP\ ... ITU-T X.25, packet layer. This attribute and the following attributes through \fBl3=x223\fP can optionally be followed by one or more of the following sub-attributes: \fBmode=\fP\fImode\fP (see above), \fBsize=\fP\fIdefault packet size\fP (4\-12, corresponding to 16\-4096), \fBwindow=\fP\fIwindow size\fP (see above). .IP \fBl3=iso8208\fP\ ... ISO/IEC 8208 .IP \fBl3=x223\fP\ ... ITU-T X.223 | ISO/IEC 8878 .IP \fBl3=tr9577,ipi=\fP\fIidentifier\fP\ ... ISO/IEC TR 9577. \fIidentifier\fP is the initial protocol identifier in the range 0\-255. For SNAP (0x80), the keyword \fBsnap\fP can be used, and the following sub-attributes have to be specified: \fBoui=\fP\fI3 bytes\fP, and \fBpid=\fP\fI2 bytes\fP. .IP \fBl2=user,info=\fIinformation\fP User-specified, see above. .IP \fBl3=h310\fP\ ... ITU-T Recommendation H.310. The sub-attribute \fBterm=\fP\fItype\fP (terminal type, \fBrx\fP, \fBtx\fP, or \fBrxtx\fP) is recognized. If present, it enables the two additional sub-attributes \fBfw_mpx=\fP\fIcapability\fP (forward multiplexing capability, \fBts\fP, \fBts_fec\fP, \fBps\fP, \fBps_fec\fP, or \fBh221\fP) and \fBbw_mpx=\fP\fIcapability\fP. Both are optional. .P Note that commas must never follow colons or other commas. Also, whitespace is not allowed inside a SAP specification. SAP specifications are case-insensitive. On input, items must be written in exactly the order used in this document. .P .SH EXAMPLES .IP \fBblli:l2=iso8802\fP Classical IP over ATM (RFC1577) .IP \fBbhli:oui=0x0060D7,id=0x01000001,blli:l2=iso8802\fP Arequipa (RFC2170) .IP \fBblli:l3=tr9577,ipi=snap,oui=0x00A03E,pid=0x0002\fP LAN Emulation .SH AUTHOR Werner Almesberger, EPFL LRC .\"{{{}}} linux-atm-2.5.1/src/man/Makefile.in0000644000200100001440000003174611304770376015712 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/man DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man7dir = $(mandir)/man7 am__installdirs = "$(DESTDIR)$(man7dir)" NROFF = nroff MANS = $(man_MANS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ man_MANS = qos.7 sap.7 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/man/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/man/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man7: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man7dir)" || $(MKDIR_P) "$(DESTDIR)$(man7dir)" @list=''; test -n "$(man7dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.7[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man7dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man7dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man7dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man7dir)" || exit $$?; }; \ done; } uninstall-man7: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man7dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.7[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man7dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man7dir)" && rm -f $$files; } tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man7dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man7 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man7 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man7 \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-man uninstall-man7 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/mpoad/0000755000200100001440000000000011304770376014157 5ustar chasuserslinux-atm-2.5.1/src/mpoad/CVS/0000755000200100001440000000000011304767140014605 5ustar chasuserslinux-atm-2.5.1/src/mpoad/CVS/Root0000644000200100001440000000007411304767137015462 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/mpoad/CVS/Repository0000644000200100001440000000002411304767137016711 0ustar chasuserslinux-atm/src/mpoad linux-atm-2.5.1/src/mpoad/CVS/Entries0000644000200100001440000000220711304767140016142 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:28 2007//TV2_5_1 /CHANGELOG/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /README.mpoa/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /TODO/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /get_vars.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /get_vars.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /id_list.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /io.c/1.2.2.1/Tue Dec 11 17:46:12 2007//TV2_5_1 /io.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /k_interf.c/1.2.2.1.2.1/Thu Jan 10 18:13:10 2008//TV2_5_1 /k_interf.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /lecs.c/1.2.2.1/Tue Dec 11 17:46:12 2007//TV2_5_1 /lecs.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /main.c/1.2.2.1/Tue Dec 11 17:46:12 2007//TV2_5_1 /mpcd.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /p_factory.c/1.2.2.2/Tue Dec 11 17:46:12 2007//TV2_5_1 /p_recogn.c/1.2.2.1/Tue Dec 11 17:46:12 2007//TV2_5_1 /packets.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /poll2select.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /poll2select.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /tag_list.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 D linux-atm-2.5.1/src/mpoad/CVS/Tag0000644000200100001440000000001011304767140015232 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/mpoad/.cvsignore0000644000200100001440000000004610666025264016156 0ustar chasusersMakefile Makefile.in .deps .libs mpcd linux-atm-2.5.1/src/mpoad/CHANGELOG0000644000200100001440000000710307360675443015400 0ustar chasusersChanges from version 0.55 ========================= o mpoa_proc.c: CDV is no more requred for CBR entries o mpc.c: two small skb_buff leaks fixed o kernel: number of debug messages reduced o k_interf.c: mpcd could not be killed if MPS's address was not known Changes from version 0.52 ========================= o mpoa_proc.c: when setting QoS values for shortcuts, receive values can now be specified with just "... rx=tx" Changes from version 0.50 ========================= o lecs.c: new file. mpcd can now ask LECS for configuration info if it is given correct command line arguments o p_recogn.c: added more sanity checks for incoming packets, fixed possible dereferences of uninitialized variables o p_recogn.c: receiving MPOA Triggers now works o k_interf.c: added missing ntohl() o mpc.c: If MPS does not advertise its MAC address with MPOA Device Discover we take it from LE_ARP packet. This should remove the need for -m commandline option. o both kernel & daemon: killing mpcd with SIGHUP now makes it restart itself closing all connections and flushing both ingress and egress cache o mpcd.8: updated, example added o README.mpoa: updated Changes from version 0.46 ========================= o io.c: fixed a misuse of a buffer in set_mps_ctrl_addr() o p_recogn: If service category extension present in MPOA resolution reply, appropriate information is included in to message to kernel. New func service_category_to_traff_class(). o poll2select.[ch]: new files to circumvent bugs in poll() o io.c: poll2select() is now used instead of poll() o k_interf.c: mpcd now does nothing before MPS's atm addr is known o README.mpoa: CBR example updated and changed o mpc.c: res_reply_rcvd(): a check that CBR is supported by the other end before attempting to create a CBR shortcut was added. o mpc.c: res_reply_rcvd(): pcr-value of egress shortcut in tx-direction is checked before using the same svc as an ingress shortcut. o mpc.c: if MPS's ATM address is known to kernel when mpcd comes up, kernel sends it to mpcd. Old version waited for the next LE_ARP o mpc.c: when adding a QoS entry for a shortcut the old entry is overwritten instead. Old version just added another IP o mpoa_proc.c: CBR QoS now only wants max_pcr, max_cdv, and max_sdu values Changes from version 0.43 ============================== o io.c: poll() seems to have problems returning correct values fixed it with a workaround o mpcd: put all the global variables in one global struct o io.c: listen sockets are now created with ATM_ANYCLASS traffic class o p_recogn.c: calculation of ip-address mask from a prefix-length in a CIE o io.c: mpoad no more exits when something really bad happens to it's sockets. Instead it does a soft boot and tries again o mpc.c: now correct pointer is kfree()ed in atm_mpoa_delete_qos() o mpc.c: while purging ingress entries ip-masks are taken into consideration o mpoa_caches.[ch]: new function in_cache_search_with_mask() o mpc.h: struct mpoa_client contains a new struct mpc_parameters o mpc.c: lane_assoc_ind() handles also MPC configuration TLVs o mpc.c: mpc->number_of_mps_macs is now updated correctly Changes from version pre0.43-0 ============================== o p_recogn.c: fixed a bug in extension parsing o io.c: fixed handling of the pollfd array indexing o p_recogn.c: chechksum checking for incoming control packets o main.c: default values for local listen ATM-adresses o getvars.[ch]: removed stupid set_own_atm_address function linux-atm-2.5.1/src/mpoad/Makefile-0.790000644000200100001440000000057607360675443016230 0ustar chasusersLIBS=-latm OBJS=get_vars.o io.o k_interf.o main.o p_factory.o p_recogn.o id_list.o tag_list.o poll2select.o lecs.o BOOTPGMS=mpcd MAN8= mpcd.8 # MPOA specific flags # -DDBROKEN_POLL use select() instead of poll() # -DMPOA_1_1 use proposed MPOA 1.1 features CFLAGS_PRIVATE=-DBROKEN_POLL include ../Rules.make mpcd: $(OBJS) $(CC) $(LDFLAGS) -o mpcd $(OBJS) $(LIBD) $(LDLIBS) linux-atm-2.5.1/src/mpoad/Makefile.am0000644000200100001440000000047707360675443016231 0ustar chasuserssbin_PROGRAMS = mpcd LDADD = $(top_builddir)/src/lib/libatm.la mpcd_SOURCES = get_vars.c get_vars.h io.c io.h k_interf.c k_interf.h main.c \ p_factory.c p_recogn.c id_list.c tag_list.c \ poll2select.c poll2select.h lecs.c lecs.h packets.h man_MANS = mpcd.8 EXTRA_DIST = $(man_MANS) CHANGELOG README.mpoa TODO linux-atm-2.5.1/src/mpoad/README.mpoa0000644000200100001440000000427707360675443016012 0ustar chasusersNovember 5 1998 Short instructions to get MPOA up and running ============================================= In order to run MPOA you need to have LANE client (zeppelin) running too. Below is a snippet from our boot-up script which starts LANE and MPOA. case "$1" in start) cd $ATM if [ -x sigd/atmsigd ] ; then sigd/atmsigd -b fi if [ -x ilmid/ilmid ] ; then ilmid/ilmid -b -x fi if [ -x led/zeppelin ] ; then led/zeppelin -f "Linux 2.1.126/ATM-0.51" -2 -c mpoa-lecs -n sampo -i2 -l jaarlimpc3 & sleep 2 ifconfig lec2 10.10.10.208 \ netmask 255.255.255.192 \ broadcast 10.10.10.255 ifconfig lec2 up route add default gw 10.10.10.193 fi sleep 5 if [ -x mpoad/mpcd ] ; then mpoad/mpcd -i2 -s jaarlimpc1 -l jaarlimpc2 & fi ;; esac exit 0 Things worth noting are: o same interface number (2) for zeppelin and mpcd o different local ATM addresses (jaarlimpc[123]) o -2 option for zeppelin to get it running as a LANEv2 client o default gw being reached via MPOA-enabled LANE interface. Shortcuts, shortcut states and packet counters are available in /proc/atm/mpc How to create CBR SVCs ====================== You can create CBR SVCs with /proc/atm/mpc. Here is an example: # echo add 130.230.54.142 tx=40000,0,1536 rx=40000,0,1536 > /proc/atm/mpc After this when a shortcut is created to destination 130.230.54.142 it will be signaled using the above values which are tx=max_pcr,max_cdv,max_sdu rx=max_pcr,max_cdv,max_sdu Correct value for max_cdv is currently 0. These values correspond to values in struct atm_trafprm An entry can be deleted like this: # echo del 130.230.54.142 > /proc/atm/mpc Existing entries can be checked with % cat /proc/atm/mpc Other things ============ If you are running your LANE services on a Fore switch, you can try the '-f' option for zeppelin. My favourite is -f "`fortune`" :) Sampo Saaristo Heikki Vatiainen linux-atm-2.5.1/src/mpoad/TODO0000644000200100001440000000045407360675443014660 0ustar chasusersCheck that closing unused SVCs does not create synchronization problems Get configuration information from LECS MPOA spec, A.1.4, IP Options, check them Support more MPOA/NHRP CIE error codes Check CBR vs UBR SVCs before using them as return channel Decide what to do when a new MPS is detected linux-atm-2.5.1/src/mpoad/get_vars.c0000644000200100001440000000326207360675443016146 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "packets.h" #include "get_vars.h" #include "io.h" extern struct mpc_control mpc_control; /* From main.c */ /* Returns the Time To Live value. */ int get_ttl(){ int optvalue = 1; unsigned optlength = sizeof(optvalue); int sockfd = socket( AF_INET, SOCK_STREAM, IPPROTO_IP ); getsockopt( sockfd, IPPROTO_IP, IP_TTL, &optvalue, &optlength ); close(sockfd); return optvalue; } /* * Returns clients own IP-address. According to interface number. * */ uint32_t get_own_ip_addr(int iface_nmbr ){ struct ifreq req; int fd; char * addr; uint32_t address; char name[6]; sprintf(name, "lec%d", iface_nmbr ); memcpy(req.ifr_ifrn.ifrn_name,name,sizeof(name)); fd = socket( AF_INET, SOCK_STREAM, IPPROTO_IP ); if(fd < 0){ printf("mpcd: get_vars.c: socket creation failed.\n"); exit(1); } if(ioctl(fd,SIOCGIFADDR,&req)<0){ printf("mpcd: get_vars.c: ioctl failed: %s\n", strerror(errno)); exit(1); } addr = req.ifr_ifru.ifru_addr.sa_data; address = ((unsigned char)addr[2] << 24) | ((unsigned char)addr[3] << 16) | ((unsigned char)addr[4] << 8 ) | (unsigned char)addr[5] ; close(fd); return address; } int get_own_atm_addr(unsigned char * address){ memcpy(address,mpc_control.data_listen_addr.sas_addr.prv,ATM_ESA_LEN); return 1; } linux-atm-2.5.1/src/mpoad/get_vars.h0000644000200100001440000000030707360675443016150 0ustar chasusers#ifndef GET_VARS_H #define GET_VARS_H #include int get_ttl(void); uint32_t get_own_ip_addr(int iface_nmbr); int get_own_atm_addr(unsigned char *address ); #endif /* GET_VARS_H */ linux-atm-2.5.1/src/mpoad/id_list.c0000644000200100001440000000545607360675443015772 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "packets.h" struct rqst_id{ struct rqst_id *next; struct rqst_id *prev; uint32_t request_id; uint32_t cache_id; uint8_t type; time_t created; }; static struct rqst_id *ids = NULL; /* pointer to first item in id list*/ /* * Searches the list according to request id. * */ static struct rqst_id *search_by_id(uint32_t id){ struct rqst_id *pid = ids; while(pid != NULL){ if(id == pid->request_id) return pid; pid = pid->next; } return NULL; } /* * Searches the list accoring to type and cache_id. * Refreshes the created time of the list item if found. * Returns a request_id on success. * */ uint32_t search_by_type(uint8_t type, uint32_t cache_id){ struct rqst_id *pid = ids; while(pid != NULL){ if(type == pid->type){ if(pid->cache_id == cache_id){ pid->created = time(NULL); return pid->request_id; } } pid = pid->next; } return 0; } /* * Creates a new id and adds it to list. * */ int new_id(uint32_t id, uint32_t cache_id, uint8_t type){ struct rqst_id *new; if( search_by_id(id) != NULL ) return 0; new = malloc(sizeof(struct rqst_id)); memset(new,0,sizeof(struct rqst_id)); new->request_id = id; new->cache_id = cache_id; new->type = type; new->created = time(NULL); new->next = ids; new->prev = NULL; if(ids != NULL) ids->prev = new; ids = new; return 1; } /* * Removes an id from the list and frees the allocated memory * */ static int remove_id(struct rqst_id *pid){ printf("mpcd: id_list.c: removing id %u from the id_list.\n",pid->request_id); if(pid == NULL) return 0; if(pid->prev != NULL) pid->prev->next = pid->next; else ids = pid->next; if(pid->next != NULL) pid->next->prev = pid->prev; free(pid); return 1; } /* * Removes ids that have stayed longer than ID_EXPIRING_TIME * from the list. * */ void clear_expired(){ static int call_count=0; struct rqst_id *pid = ids; struct rqst_id *next_pid; time_t now = time(NULL); call_count++; if(call_count%5 != 0) return; while(pid != NULL){ next_pid = pid->next; if(now - pid->created > ID_EXPIRING_TIME) remove_id(pid); pid = next_pid; } call_count = 0; } /* * Checks whether we have sent a request with id returned in a reply * and that the reply is of right type. * */ int check_incoming(uint32_t id, uint8_t type){ struct rqst_id *pid = search_by_id(id); if( pid == NULL ){ printf("mpcd: id_list.c: no request sent with request_id %d\n",id); return 0; } if( pid->type != type){ printf("mpcd: id_list.c: matching request_id found, but packet type is invalid %d\n",type); return 0; } remove_id(pid); return 1; } linux-atm-2.5.1/src/mpoad/io.c0000644000200100001440000006402610727546344014746 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include /* for time() */ #include #include /* for strerror() */ #include #include #include /* for OPEN_MAX */ #if __GLIBC__ >= 2 #include #else /* ugly hack to make it compile on RH 4.2 - WA */ #include #include #define SYS_poll 168 _syscall3(int,poll,struct pollfd *,ufds,unsigned int,nfds,int,timeout); #endif #include #include #include #include #include #include #include #include /* for ntohl() */ #include "packets.h" #include "k_interf.h" #include "io.h" #include "get_vars.h" #ifdef BROKEN_POLL #include "poll2select.h" #endif #ifndef OPEN_MAX /* Fixme: there's got to be a better way to fix this */ #define OPEN_MAX 256 #endif #define POLL_TIMEOUT 5000 /* poll() timeout, 5 seconds */ #if 1 #define dprintf printf #else #define dprintf(format,args...) #endif #if 0 #define ddprintf printf #else #define ddprintf(format,args...) #endif extern struct mpc_control mpc_control; /* from main.c */ int keep_alive_sm_running = 0; struct outgoing_shortcut { int fd; uint32_t ipaddr; /* in network byte order */ int state; /* see io.h for states */ }; static struct llc_snap_hdr llc_snap_mpoa_ctrl = { 0xaa, 0xaa, 0x03, {0x00, 0x00, 0x5e}, {0x00, 0x03} }; static time_t stay_alive; /* Next Keep-Alive should come before we hit this time */ static struct pollfd fds[OPEN_MAX]; static int first_empty; /* first non-reserved slot in fds[] */ static int fds_used; /* first non-occupied slot in fds[], => also # of used fds */ static short socket_type[OPEN_MAX]; /* type and state info for fds[], see "io.h" for types */ static struct outgoing_shortcut ingress_shortcuts[OPEN_MAX]; /* array of shortcuts we made */ static int update_ingress_entry(uint32_t *addr, int fd, int new_state); static int msg_from_mps(int slot); static int accept_conn(int slot); static int add_shortcut(int slot, int type); static int check_connection(int slot); static int complete_connection(int slot); static int create_shortcut(char *atm_addr,struct atm_qos qos); static void wait_for_mps_ctrl_addr(void); static int connect_to_MPS(void); void main_loop(int listen_socket) { int i, changed_fds; int kernel_ok, mps_ok, new_ctrl, new_shortcut; int poll_timeout = POLL_TIMEOUT; time_t now, previous_now; for (i = 0; i < OPEN_MAX; i++) fds[i].fd = -1; fds[0].fd = mpc_control.kernel_socket; /* mpcd <--> kernel socket */ fds[0].events = POLLIN; socket_type[0]= KERNEL; if(!mpc_control.mps_ctrl_addr_set) /* Can't do much without the MPS control ATM addr */ wait_for_mps_ctrl_addr(); connect_to_MPS(); fds[1].fd = mpc_control.MPS_socket; /* we opened this to MPS */ fds[1].events = POLLIN; socket_type[1]= (OUTGOING_CTRL | CONNECTED); fds[2].fd = mpc_control.MPS_listen_socket; /* for incoming control calls */ fds[2].events = POLLIN; socket_type[2]= LISTENING_CTRL; fds[3].fd = listen_socket; /* for incoming shortcuts */ fds[3].events = POLLIN; socket_type[3]= LISTENING_DATA; fds_used = first_empty = 4; now = previous_now = time(NULL); while (1) { kernel_ok = mps_ok = new_ctrl = new_shortcut = 1; fflush(stdout); #ifdef BROKEN_POLL changed_fds = poll2select(fds, fds_used, poll_timeout); #else changed_fds = poll(fds, fds_used, poll_timeout); #endif #if 0 printf("\nio.c: main_loop() poll returns %d\n", changed_fds); for (i = 0; i < OPEN_MAX; i++) { if (fds[i].fd < 0 ) continue; /* slot not in use */ if ( fds[i].revents == 0) { printf("check1: fd %d slot %d not changed\n", fds[i].fd, i); } else printf("check1: fd %d slot %d changed\n", fds[i].fd, i); } #endif switch(changed_fds) { case -1: printf("mpcd: io.c: main_loop: poll error: %s\n", strerror(errno)); if(errno == EINTR) continue; goto out; /* return to main() */ break; /* not reached */ case 0: keep_alive_sm(0, -1); /* (keepalive_liftime, seq_num) */ clear_expired(); /* id_list.c */ poll_timeout = POLL_TIMEOUT; previous_now = time(NULL); continue; break; /* not reached */ } /* It was not a timeout. Adjust poll_timeout */ now = time(NULL); poll_timeout -= now - previous_now; if (poll_timeout < 0) poll_timeout = 0; /* Since we are here something happened to the fds */ if (fds[0].revents) { dprintf("mpcd: io.c: main_loop() msg_from_kernel\n"); kernel_ok = msg_from_kernel(fds[0].fd); changed_fds--; } if (fds[1].revents) { ddprintf("mpcd: io.c: main_loop() msg_from_mps1\n"); mps_ok = msg_from_mps(1); changed_fds--; } if (fds[2].revents) { new_ctrl = accept_conn(2); changed_fds--; if( new_ctrl < 0 ) break; socket_type[new_ctrl] = INCOMING_CTRL | CONNECTED; dprintf("mpcd: io.c main_loop() accepted INCOMING_CTRL slot %d\n", new_ctrl); } if (fds[3].revents) { new_shortcut = accept_conn(3); dprintf("mpcd: io.c main_loop() accepted INCOMING_SHORTCUT slot %d\n", new_shortcut); changed_fds--; if( new_shortcut < 0 ) break; socket_type[new_shortcut] = INCOMING_SHORTCUT; if (add_shortcut(new_shortcut, MPC_SOCKET_EGRESS) < 0) break; } #if 0 if (changed_fds == 0) /* see if we can already go back to poll() */ continue; #endif for (i = first_empty; i < fds_used; i++) { if (fds[i].fd < 0 ) continue; /* slot not in use */ if ( fds[i].revents == 0) { ddprintf("fd %d slot %d not changed\n", fds[i].fd, i); continue; } ddprintf("about to process fd %d slot %d\n", fds[i].fd, i); if (socket_type[i] & INCOMING_CTRL) { ddprintf("mpcd: io.c: main_loop() msg_from_mps2\n"); mps_ok = msg_from_mps(i); } else { ddprintf("mpcd: io.c: main_loop() checking connection fd %d\n", fds[i].fd); if (check_connection(i) < 0) { printf("mpcd: io.c: main_loop: check_connection returned < 0\n"); break; /* this will cause break from while(1) too */ } } if (--changed_fds == 0) break; /* no more changed fds, leave for() */ } if (changed_fds != 0){ printf("mpcd: changed_fds = %d\n", changed_fds); /* break; */ /* leave while(1) */ } if (kernel_ok && mps_ok >= 0 && new_ctrl >= 0 && new_shortcut >= 0) continue; /* back to poll() */ else break; /* leave main_loop */ } out: /* clean up, close the sockets */ for (i = 0; i < fds_used; i++) { if (fds[i].fd < 0) continue; close(fds[i].fd); socket_type[i] = NOT_USED; } printf("mpcd: io.c: exiting main_loop()\n"); return; } /* * If MPS control ATM address is not given as an argument this func waits until * kernel has found one from a TLV in le_arp and tells us what it is. */ static void wait_for_mps_ctrl_addr(){ while(!mpc_control.mps_ctrl_addr_set){ #ifdef BROKEN_POLL if(poll2select(fds, 1, -1)) #else if(poll(fds, 1, -1)) #endif msg_from_kernel(fds[0].fd); } return; } /* * Sends a packet to MPS. Adds LLC/SNAP encapsulation * in the beginning of the buffer. */ int send_to_mps(char *buff, int length) { char tmp[MAX_PACKET_LENGTH + sizeof(struct llc_snap_hdr)]; int bytes_written; char *pos = tmp; if(mpc_control.MPS_socket<0){ connect_to_MPS(); fds[1].fd = mpc_control.MPS_socket; fds[1].events = POLLIN; fds[1].revents = 0; socket_type[1] = (OUTGOING_CTRL | CONNECTED); } memcpy(pos, &llc_snap_mpoa_ctrl, sizeof(struct llc_snap_hdr)); pos += sizeof(struct llc_snap_hdr); memcpy(pos, buff, length); length += sizeof(struct llc_snap_hdr); bytes_written = write(mpc_control.MPS_socket, tmp, length); while(bytes_written != 0){ bytes_written = write(mpc_control.MPS_socket, tmp+bytes_written, length-bytes_written); if( bytes_written < 0 ){ printf("mpcd: io.c: send_to_mps() write failed\n"); return -1; } } return 1; } /* * Sends a control packet over a shortcut. Used in a dataplane purge. */ int send_to_dataplane(char *buff, int length, int shortcut_fd) { char tmp[MAX_PACKET_LENGTH + sizeof(struct llc_snap_hdr)]; int bytes_written; char *pos = tmp; memcpy(pos, &llc_snap_mpoa_ctrl, sizeof(struct llc_snap_hdr)); pos += sizeof(struct llc_snap_hdr); memcpy(pos, buff, length); length += sizeof(struct llc_snap_hdr); bytes_written = write(shortcut_fd, tmp, length); while(bytes_written != 0){ bytes_written = write(shortcut_fd, tmp+bytes_written, length-bytes_written); if( bytes_written < 0 ){ printf("mpcd: io.c: write to dataplane failed\n"); return -1; } } return 1; } /* * Keep alive state machine. Sequence number less than * and keep_alive_lifetime equal to zero is used * when checking wheter the MPS is still alive. * */ void keep_alive_sm(unsigned keep_alive_lifetime, int sequence_number){ struct k_message msg; static unsigned previous_sequence_number = 0; static int start_keep_alive_sm = 0; time_t now = time(NULL); memset(&msg,0,sizeof(struct k_message)); if(!keep_alive_sm_running){ start_keep_alive_sm = 0; return; } if(!start_keep_alive_sm){ dprintf("mpcd: io.c: starting keep_alive_sm.\n"); stay_alive = time(NULL) + MPC_C2; start_keep_alive_sm = 1; return; } if( now > stay_alive ){ dprintf("mpcd: io.c: MPS death!"); msg.type = MPS_DEATH; memcpy(msg.MPS_ctrl,mpc_control.MPS_CTRL_ATM_ADDR,ATM_ESA_LEN); send_to_kernel(&msg); previous_sequence_number = 0; stay_alive = now + MPC_C2; return; } if( sequence_number < 0 ) return; if( sequence_number < previous_sequence_number ){ dprintf("mpcd: io.c: MPS death!"); msg.type = MPS_DEATH; memcpy(msg.MPS_ctrl,mpc_control.MPS_CTRL_ATM_ADDR,ATM_ESA_LEN); send_to_kernel(&msg); previous_sequence_number = 0; stay_alive = now + MPC_C2; return; } stay_alive = now + keep_alive_lifetime; previous_sequence_number = sequence_number; return; } /* * Creates a socket, sets traffic and sap parameters * and binds the socket with given address. * * returns < 0 for error, socket for ok */ int get_socket(struct sockaddr_atmsvc *address) { struct atm_qos qos; struct atm_sap sap; int socket_fd; socket_fd = socket(PF_ATMSVC, SOCK_DGRAM, 0); if( socket_fd < 0 ){ printf("mpcd: io.c: socket creation failure: %s \n",strerror(errno)); return -1; } memset(&qos, 0, sizeof(qos)); memset(&sap, 0, sizeof(sap)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.rxtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = 1536; qos.rxtp.max_sdu = 1536; sap.blli[0].l2_proto = ATM_L2_ISO8802; if (setsockopt(socket_fd, SOL_ATM,SO_ATMQOS, &qos, sizeof(qos)) < 0){ printf("mpcd: io.c: setsockopt SO_ATMQOS failed: %s \n",strerror(errno)); close(socket_fd); return -1; } if (setsockopt(socket_fd,SOL_ATM,SO_ATMSAP,&sap,sizeof(sap)) < 0) { printf("mpcd: io.c: setsockop SO_ATMSAP failed\n"); close (socket_fd); return -1; } if (address == NULL) return socket_fd; if (bind(socket_fd, (struct sockaddr *)address, sizeof(struct sockaddr_atmsvc)) < 0){ printf("mpcd: io.c: bind failure: %s \n",strerror(errno)); close(socket_fd); return -1; } return socket_fd; } /* * Creates an ATM_ANYCLASS traffic class socket, sets traffic and sap * parameters and binds the socket with given address. * * returns < 0 for error, socket for ok */ int get_listen_socket(struct sockaddr_atmsvc *address) { int s; struct atm_qos qos; s = get_socket(NULL); if (s < 0) { printf("mpcd: io.c: get_listen_socket() get socket failed\n"); return s; } memset(&qos, 0, sizeof(qos)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_ANYCLASS; qos.rxtp.traffic_class = ATM_ANYCLASS; if (setsockopt(s, SOL_ATM,SO_ATMQOS, &qos, sizeof(qos)) < 0){ printf("mpcd: io.c: get_listen_socket() setsockopt SO_ATMQOS: %s\n", strerror(errno)); close(s); return -1; } if (bind(s, (struct sockaddr *)address, sizeof(struct sockaddr_atmsvc)) < 0){ printf("mpcd: io.c: get_listen_socket() bind: %s\n", strerror(errno)); close(s); return -1; } if (listen(s, 5) < 0) { printf("mpcd: io.c: get_lilsten_socket() listen: %s\n", strerror(errno)); close(s); return -1; } return s; } /* * If addr != NULL searches by addr. If addr == NULL searches by fd. * Returns ipaddr. * */ static int update_ingress_entry(uint32_t *addr, int fd, int new_state) { int i; if (addr != NULL) { dprintf("mpcd: io.c update_ingress_entry() updating ip 0x%x\n", *addr); for (i = 0; i < OPEN_MAX; i++) if (ingress_shortcuts[i].ipaddr == *addr) break; } else { dprintf("mpcd: io.c update_ingress_entry() updating fd %d\n", fd); for (i = 0; i < OPEN_MAX; i++) if (ingress_shortcuts[i].fd == fd) break; } if (i == OPEN_MAX) { printf("mpcd: io.c: update_ingress_entry: entry not found\n"); return 0; } ingress_shortcuts[i].fd = fd; ingress_shortcuts[i].state = new_state; if (new_state == INGRESS_NOT_USED) memset(&ingress_shortcuts[i], 0 , sizeof(ingress_shortcuts[i])); return ingress_shortcuts[i].ipaddr; } /* * returns < 0 for error * */ static int msg_from_mps(int slot) { int bytes_read, fd; char buff[MAX_PACKET_LENGTH]; fd = fds[slot].fd; bytes_read = read(fd, buff, sizeof(buff)); if (bytes_read < 0) { printf("mpcd: io.c: read failed from MPS: %s\n", strerror(errno)); close(fd); fds[slot].fd = -1; socket_type[slot] = NOT_USED; return -1; } if (bytes_read == 0) { dprintf("mpcd: io.c: EOF from MPS\n"); close(fd); fds[slot].fd = -1; if (slot == 1) mpc_control.MPS_socket = -1; socket_type[slot] = NOT_USED; return 1; /* See spec 4.6. Might be normal */ } if ( memcmp(buff, &llc_snap_mpoa_ctrl, sizeof(llc_snap_mpoa_ctrl)) != 0 ) { printf("mpcd: io.c: msg_from_mps: MPS is pushing us garbage\n"); return -1; } (void)recognize_packet(buff + sizeof(struct llc_snap_hdr)); return 0; } /* * returns < 0 for error, slot of the new socket for ok * */ static int accept_conn(int slot) { struct sockaddr_atmsvc sa; int i, new_fd, sa_len; sa_len = sizeof(sa); new_fd = accept(fds[slot].fd, (struct sockaddr *)&sa, &sa_len); if (new_fd < 0) { printf("mpcd: io.c: accept_conn: %s\n", strerror(errno)); return -1; } for (i = first_empty; i < OPEN_MAX; i++) { if (fds[i].fd >= 0) /* slot in use ? */ continue; fds[i].fd = new_fd; fds[i].events = POLLIN; fds[i].revents = 0; break; } if (i == OPEN_MAX) { printf("mpcd: io.c: accept_conn: no room for new connection\n"); return -1; } if (i >= fds_used) fds_used = i + 1; return i; } /* * returns < 0 for error, slot of the new socket for ok * */ static int add_shortcut(int slot, int type) { struct atmmpc_ioc ioc_data; int ipaddr = 0; if (type == MPC_SOCKET_INGRESS) ipaddr = update_ingress_entry(NULL, fds[slot].fd, INGRESS_CONNECTED); ioc_data.dev_num = mpc_control.INTERFACE_NUMBER; ioc_data.ipaddr = ipaddr; ioc_data.type = type; if (ioctl(fds[slot].fd, ATMMPC_DATA, &ioc_data) < 0) { printf("mpcd: io.c: add_shortcut: %s\n", strerror(errno)); close(fds[slot].fd); fds[slot].fd = -1; socket_type[slot] = NOT_USED; return -1; } return slot; } /* * ECONNRESET == RST in TCP world. Check what equivalent * events can happen in ATM world. * * Returns < 0 for error */ static int check_connection(int slot) { char buff[MAX_PACKET_LENGTH]; struct k_message *msg; struct pollfd *pfd; int bytes_read; dprintf("mpcd: io.c: check_connection() event in fd %d, type %d\n", fds[slot].fd, socket_type[slot]); if (socket_type[slot] & CONNECTING) { /* connect() completed (maybe) */ complete_connection(slot); /* ignore return value */ return 0; } pfd = &fds[slot]; bytes_read = read(pfd->fd, buff, sizeof(buff)); if (bytes_read < 0) { if (errno == ECONNRESET || errno == EPIPE) { /* conn reset by the other end or kernel (EPIPE) */ if (socket_type[slot] & OUTGOING_SHORTCUT) update_ingress_entry(NULL, pfd->fd, INGRESS_NOT_USED); close(pfd->fd); pfd->fd = -1; socket_type[slot] = NOT_USED; return 1; } printf("mpcd: io.c: check_connection() bytes_read=%d, errno='%s'\n", bytes_read, strerror(errno)); return -1; } if (bytes_read == 0) { /* conn closed by the other end */ if (socket_type[slot] & OUTGOING_SHORTCUT) update_ingress_entry(NULL, pfd->fd, INGRESS_NOT_USED); dprintf("mpcd: io.c: check_connection() fd %d type %d; connection closed'\n", pfd->fd, socket_type[slot]); close(pfd->fd); pfd->fd = -1; socket_type[slot] = NOT_USED; return 1; } /* See if this is a MPOA control packet */ if ( memcmp(buff, &llc_snap_mpoa_ctrl, sizeof(llc_snap_mpoa_ctrl)) == 0 ) if ( recognize_packet(buff + sizeof(llc_snap_mpoa_ctrl)) >= 0) return 1; dprintf("mpcd: io.c check_connection(): msg from kernel\n"); msg = (struct k_message *)buff; if(msg->type == DATA_PLANE_PURGE){ send_purge_request(msg->content.eg_info.mps_ip,32, get_own_ip_addr(mpc_control.INTERFACE_NUMBER),pfd->fd); return 1; } printf("mpcd: io.c check_connection(): unknown msg %d from kernel, ignoring", msg->type); return 1; } /* * returns < 0 for unsuccessful connect, fd for ok * */ static int complete_connection(int slot) { int retval; struct sockaddr_atmsvc dummy; dprintf("mpcd: io.c: complete_connection() completing fd %d slot %d\n", fds[slot].fd, slot); /* this seems to be common method in Linux-ATM * making sure that nonblocking connect was * completed successfully */ retval = connect(fds[slot].fd,(struct sockaddr *)&dummy, sizeof(dummy)); if (retval < 0) { printf("mpcd: io.c: complete_connection(): '%s'\n", strerror(errno)); socket_type[slot] = NOT_USED; update_ingress_entry(NULL, fds[slot].fd, INGRESS_NOT_USED); close(fds[slot].fd); fds[slot].fd = -1; fds[slot].revents = 0; return 0; } socket_type[slot] &= ~CONNECTING; socket_type[slot] |= CONNECTED; fds[slot].events = POLLIN; /* We left POLLOUT accidentally in. Hope you never do the same */ fds[slot].revents = 0; if(socket_type[slot] & OUTGOING_SHORTCUT) return add_shortcut(slot, MPC_SOCKET_INGRESS); return fds[slot].fd; } /* * Called if kernel wants us to create a shortcut */ void create_ingress_svc(uint32_t ipaddr, char *atm_addr, struct atm_qos qos) { int i, new_socket; new_socket = create_shortcut(atm_addr,qos); if (new_socket < 0) { printf("mpcd: io.c: create_ingress_svc: create_shortcut failed\n"); return; } for (i = first_empty; i < OPEN_MAX; i++) { if (fds[i].fd >= 0) /* slot in use ? */ continue; fds[i].fd = new_socket; fds[i].events = POLLIN | POLLOUT; fds[i].revents = 0; break; } if (i == OPEN_MAX) { printf("mpcd: io.c: create_ingress_svc: create_shortcut: no room for new connection\n"); return; } socket_type[i] = (OUTGOING_SHORTCUT | CONNECTING); if (i >= fds_used) fds_used = i + 1; /* Store the IP address we are creating this shortcut for */ dprintf("mpcd: io.c: create_ingress_svc: adding ip 0x%x\n", ipaddr); for(i = 0; i < OPEN_MAX; i++) if (ingress_shortcuts[i].state == INGRESS_NOT_USED) break; if (i == OPEN_MAX) { printf("mpcd: io.c: create_ingress_svc: ingress no more entries\n"); return; } ingress_shortcuts[i].fd = new_socket; ingress_shortcuts[i].ipaddr = ipaddr; ingress_shortcuts[i].state = INGRESS_CONNECTING; } /* * returns < 0 for error, socket for ok * */ static int create_shortcut(char *atm_addr, struct atm_qos qos) { int s, flags, retval; struct sockaddr_atmsvc addr; dprintf("mpcd: io.c: create_shortcut() addr = 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n", atm_addr[0], atm_addr[1], atm_addr[2], atm_addr[3], atm_addr[4]); memset(&addr, 0, sizeof(addr)); addr.sas_family = AF_ATMSVC; memcpy(addr.sas_addr.prv, atm_addr, ATM_ESA_LEN); s = get_socket(&mpc_control.data_listen_addr); if(qos.txtp.traffic_class > ATM_UBR || qos.rxtp.traffic_class > ATM_UBR){ printf("mpcd: io.c: create_shortcut() setting qos params (cbr)\n"); if (setsockopt(s, SOL_ATM,SO_ATMQOS, &qos, sizeof(qos)) < 0){ printf("mpcd: io.c: setsockopt SO_ATMQOS failed: %s \n",strerror(errno)); close(s); return -1; } } dprintf("mpcd: create_shortcut() got fd %d \n", s); if ( (flags = fcntl(s, F_GETFL)) < 0) { printf("mpcd: io.c: fcntl(F_GETFL) failed: %s\n", strerror(errno)); close(s); return -1; } if (fcntl(s, F_SETFL, flags | O_NONBLOCK) < 0) { printf("mpcd: io.c: fcntl(F_SETFL) failed: %s\n", strerror(errno)); close(s); return -1; } retval = connect(s, (struct sockaddr *)&addr, sizeof(addr)); if (retval < 0 && errno != EINPROGRESS) { printf("mpcd: io.c: create_shortcut: connect failed: %s\n", strerror(errno)); return -1; } return s; } /* * Creates an active connection to MPS * * returns < 0 for error */ static int connect_to_MPS(){ int c; struct sockaddr_atmsvc mps_ctrl_addr; struct sockaddr_atmsvc ctrl_listen_addr; memset(&mps_ctrl_addr,0,sizeof(struct sockaddr_atmsvc)); memset(&ctrl_listen_addr,0,sizeof(struct sockaddr_atmsvc)); memcpy(mps_ctrl_addr.sas_addr.prv,mpc_control.MPS_CTRL_ATM_ADDR,ATM_ESA_LEN); memcpy(ctrl_listen_addr.sas_addr.prv,mpc_control.OWN_ATM_ADDRESS,ATM_ESA_LEN); mps_ctrl_addr.sas_family = AF_ATMSVC; ctrl_listen_addr.sas_family = AF_ATMSVC; mpc_control.MPS_socket = get_socket(&ctrl_listen_addr); if (mpc_control.MPS_socket < 0) return -1; c = connect(mpc_control.MPS_socket, (struct sockaddr *)&(mps_ctrl_addr), sizeof(struct sockaddr_atmsvc)); if( c < 0 ){ printf("mpcd: io.c: connect to MPS failed: %s \n",strerror(errno)); close(mpc_control.MPS_socket); return -1; } return 0; } linux-atm-2.5.1/src/mpoad/io.h0000644000200100001440000000221107360675443014741 0ustar chasusers#ifndef _MPOA_IO_H #define _MPOA_IO_H #include #define MAX_PACKET_LENGTH 4096 /* max size of MPOA ctrl or data packet */ void main_loop(int listen_socket); int send_to_mps(char *buff, int length); int send_to_dataplane(char *buff, int length, int fd); void keep_alive_sm(unsigned keep_alive_lifetime, int sequence_number); int get_socket(struct sockaddr_atmsvc *address); int get_listen_socket(struct sockaddr_atmsvc *address); void create_ingress_svc(uint32_t ipaddr, char *atm_addr, struct atm_qos qos); /* Socket types and states */ #define NOT_USED 0x0000 #define KERNEL 0x0001 #define OUTGOING_CTRL 0x0002 #define INCOMING_CTRL 0x0004 #define LISTENING_DATA 0x0010 #define LISTENING_CTRL 0x0020 #define OUTGOING_SHORTCUT 0x0100 #define INCOMING_SHORTCUT 0x0200 #define CONNECTING 0x1000 /* For outgoing sockets */ #define CONNECTED 0x2000 /* For outgoing sockets */ /* states for outgoing ingress shortcuts */ #define INGRESS_NOT_USED 0 #define INGRESS_REQUEST_SEND 400 #define INGRESS_CONNECTING 401 #define INGRESS_CONNECTED 402 #endif /* _MPOA_IO_H */ linux-atm-2.5.1/src/mpoad/k_interf.c0000644000200100001440000001410610741460066016122 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include /* for OPEN_MAX */ #include #include /* for ntohl() */ #include #include #include #include "k_interf.h" #include "packets.h" #include "io.h" #include "get_vars.h" #if 0 #define dprintf printf #else #define dprintf(format,args...) #endif extern int keep_alive_sm_running; /* from io.c */ extern struct mpc_control mpc_control; /* from main.c */ static void snd_mpoa_res_rqst(struct k_message *msg); static void snd_mpoa_res_rtry(struct k_message *msg); static void set_mps_ctrl_addr(struct k_message *msg); static void stop_keep_alive_sm(void); static uint32_t traff_class_to_service_category(uint8_t traffic_class); /* * returns < 0 for error * */ int send_to_kernel(struct k_message *msg) { if (write(mpc_control.kernel_socket, msg, sizeof(struct k_message)) != sizeof(struct k_message) ) { printf("mpcd: k_interf.c: write to kernel failed!\n"); return -1; } return 1; } /* * returns 0 for error * */ int msg_from_kernel(int fd) { ssize_t bytes_read; struct k_message msg; memset(&msg,0,sizeof(struct k_message)); bytes_read = read(fd, (void *)&msg, sizeof(msg)); if (bytes_read < 0) { printf("mpcd: k_interf.c: read failed from kernel: %s\n", strerror(errno)); return 0; } if (bytes_read == 0) { printf("mpcd: k_interf.c:EOF from kernel\n"); return 0; } if (bytes_read != sizeof(msg)) { printf("mpcd: k_interf.c: msg from kernel wrong size\n"); return 0; } dprintf("mpcd: k_interf.c: message from kernel: "); if (msg.type == DIE) { dprintf(" die\n"); exit(0); } /* do nothing if MPS's control ATM address is not known */ if (msg.type != SET_MPS_CTRL_ADDR && !mpc_control.mps_ctrl_addr_set) return 0; switch(msg.type) { case SND_MPOA_RES_RQST: dprintf("snd_mpoa_res_rqst.\n"); snd_mpoa_res_rqst(&msg); return 1; break; /* not reached */ case SND_MPOA_RES_RTRY: dprintf("snd_mpoa_res_rtry.\n"); snd_mpoa_res_rtry(&msg); return 1; break; /* not reached */ case SET_MPS_CTRL_ADDR: dprintf("set_mps_ctrl_addr.\n"); set_mps_ctrl_addr(&msg); return 1; break; /* not reached */ case STOP_KEEP_ALIVE_SM: dprintf("stop_keep_alive_sm.\n"); stop_keep_alive_sm(); return 1; break; /* not reached */ case EGRESS_ENTRY_REMOVED: dprintf("egress_entry_removed.\n"); remove_tag(msg.content.eg_info.tag); return 1; break; /* not reached */ case SND_EGRESS_PURGE: dprintf("snd_egress_purge,cache_id = %u.\n",msg.content.eg_info.cache_id); send_egress_cache_purge_request(0, /* 1 == no reply, 0 == reply requested */ ntohl(msg.content.eg_info.mps_ip), 32, get_own_ip_addr(mpc_control.INTERFACE_NUMBER), msg.content.eg_info.cache_id); return 1; break; case OPEN_INGRESS_SVC: dprintf(" open_ingress_svc\n"); create_ingress_svc(msg.content.in_info.in_dst_ip, msg.content.in_info.eg_MPC_ATM_addr, msg.qos); return 1; break; case RELOAD: printf(" reload\n"); return 0; break; default: dprintf("unknown message %d\n", msg.type); return 0; break; /* not reached */ } return 0; /* not reached */ } static void snd_mpoa_res_rqst(struct k_message *msg){ send_resolution_request(0, 1, /* Source ip present */ msg->content.in_info.in_dst_ip, 0, /* prefix length */ traff_class_to_service_category(msg->qos.txtp.traffic_class)); return; } static void snd_mpoa_res_rtry(struct k_message *msg){ uint32_t rqst_id = search_by_type(MPOA_RESOLUTION_REQUEST, msg->content.in_info.in_dst_ip); send_resolution_request(rqst_id, 1, msg->content.in_info.in_dst_ip, 0, traff_class_to_service_category(msg->qos.txtp.traffic_class)); return; } static void set_mps_ctrl_addr(struct k_message *msg) { char buffer[ATM_ESA_LEN]; int i; struct sockaddr_atmsvc mps_ctrl_addr; char *buff = buffer; memcpy(mps_ctrl_addr.sas_addr.prv, msg->MPS_ctrl, ATM_ESA_LEN); mps_ctrl_addr.sas_family = AF_ATMSVC; if(mpc_control.mps_ctrl_addr_set && !memcmp(msg->MPS_ctrl,mpc_control.MPS_CTRL_ATM_ADDR,ATM_ESA_LEN)) return; if(mpc_control.mps_ctrl_addr_set && memcmp(msg->MPS_ctrl,mpc_control.MPS_CTRL_ATM_ADDR,ATM_ESA_LEN)){ printf("mpcd: k_interf.c: new MPS "); for (i = 0; i < ATM_ESA_LEN; i++) printf("%02x", msg->MPS_ctrl[i]); printf("\n"); return; } memcpy(mpc_control.MPS_CTRL_ATM_ADDR, msg->MPS_ctrl, ATM_ESA_LEN); printf("mpcd: k_interf.c: setting MPS control ATM address to "); if(atm2text(buff,ATM_ESA_LEN, (struct sockaddr*)&mps_ctrl_addr, T2A_SVC)<0) { for (i = 0; i < ATM_ESA_LEN; i++) printf("%02x", mpc_control.MPS_CTRL_ATM_ADDR[i]); printf("\n"); } else printf("%s\n", buff); mpc_control.mps_ctrl_addr_set = 1; return; } static void stop_keep_alive_sm(){ keep_alive_sm_running = 0; return; } /* * Converts linux-ATM traffic descriptions to those used in MPOA ATM service * category extension. Only UBR and CBR supported. */ static uint32_t traff_class_to_service_category(uint8_t traffic_class){ switch(traffic_class){ case ATM_NONE: return 0; break; case ATM_UBR: return 0; break; case ATM_CBR: return CBR; break; default: return 0; } } linux-atm-2.5.1/src/mpoad/k_interf.h0000644000200100001440000000021707360675443016137 0ustar chasusers#ifndef K_INTERF_H #define K_INTERF_H int send_to_kernel( struct k_message *msg); int msg_from_kernel(int fd); #endif /* K_INTERF_H */ linux-atm-2.5.1/src/mpoad/lecs.c0000644000200100001440000001702410727546344015261 0ustar chasusers/* lecs.c, get MPOA configuration info from LECS */ #if HAVE_CONFIG_H #include #endif #include #include #include /* htons() and friends */ #include #include #include #include #include #include /* for MPOA Device type TLV */ #include "lecs.h" #include "k_interf.h" #define MAXFRAME 1024 static int get_lecs_socket(struct sockaddr_atmsvc *sa); static int send_request(int fd, char *buff, char *lec_addr, char *elan_name); static int get_reply(int fd, char *buff, struct mpc_parameters *params); void get_mpc_config(struct sockaddr_atmsvc *sa, char *lec_addr, char *elan_name) { int s; char buff[MAXFRAME]; struct k_message msg; s = get_lecs_socket(sa); if (s < 0) return; memset(buff, 0, sizeof(buff)); if (send_request(s, buff, lec_addr, elan_name) < 0) { printf("mpcd: lecs.c: send_request failed, using defaults\n"); return; } msg.content.params.mpc_p1 = MPC_P1; msg.content.params.mpc_p2 = MPC_P2; msg.content.params.mpc_p4 = MPC_P4; msg.content.params.mpc_p5 = MPC_P5; msg.content.params.mpc_p6 = MPC_P6; if (get_reply(s, buff, &msg.content.params) < 0) { printf("mpcd: lecs.c: get_config failed, using defaults\n"); return; } msg.type = SET_MPC_PARAMS; send_to_kernel(&msg); printf("mpcd: lecs.c: get_config: about to return\n"); return; } static int send_request(int fd, char *buff, char *lec_addr, char *elan_name) { char *tmp; int retval; struct le_config_frame *frame; frame = (struct le_config_frame *)buff; frame->marker = htons(0xff00); frame->protocol = 0x01; frame->version = 0x01; frame->opcode = htons(0x0001); frame->tran_id = htonl(42); frame->flags = htons(0x002); memcpy(frame->src_atm_addr, lec_addr, ATM_ESA_LEN); frame->num_tlvs = 1; if (elan_name != NULL) { strcpy(frame->elan_name, elan_name); frame->elan_name_size = strlen(elan_name); } /* add the MPOA device type TLV */ tmp = buff + sizeof(struct le_config_frame); *(uint32_t *)tmp = htonl(TLV_MPOA_DEVICE_TYPE); tmp += 4; *tmp++ = 22; /* device type field + MPC's ATM address */ *tmp++ = MPC; *tmp++ = 0; memcpy(tmp, lec_addr, ATM_ESA_LEN); tmp += ATM_ESA_LEN; retval = write(fd, buff, tmp - buff); if (retval < 0 || retval != (tmp - buff)) return -1; return 0; } static int get_reply(int fd, char *buff, struct mpc_parameters *params) { int retval; uint32_t type; uint8_t length, *tlvs, *end_of_tlvs; struct le_config_frame *frame; retval = read(fd, buff, MAXFRAME); if (retval < 0) return -1; frame = (struct le_config_frame *)buff; if (frame->status != 0) { printf("mpcd: lecs.c: get_reply: config status %d\n", frame->status); return -1; } if (frame->num_tlvs == 0) { printf("mpcd: lecs.c: get_reply: no TLVS\n"); return -1; } tlvs = buff + sizeof(struct le_config_frame); end_of_tlvs = buff + retval; while (end_of_tlvs - tlvs >= 5 && frame->num_tlvs-- > 0) { type = (tlvs[0] << 24) | (tlvs[1] << 16) | (tlvs[2] << 8) | tlvs[3]; length = tlvs[4]; tlvs += 5; /* Sampo-Add: start */ switch(type){ case TLV_SC_SETUP_FRAME_COUNT: params->mpc_p1 = (*(tlvs+1)<<8) | (*tlvs); params->mpc_p1 = htons(params->mpc_p1); printf("mpcd: lecs.c: get_reply: MPC_p1 = %d\n",params->mpc_p1); break; case TLV_SC_SETUP_FRAME_TIME: params->mpc_p2 = (*(tlvs+1)<<8) | (*tlvs); params->mpc_p2 = htons(params->mpc_p2); printf("mpcd: lecs.c: get_reply: MPC_p2 = %d\n",params->mpc_p2); break; case TLV_FLOW_DETECTION_PROTOCOLS: memcpy(params->mpc_p3, tlvs, length); printf("mpcd: lecs.c: get_reply: MPC_p3 = %s\n",params->mpc_p3); break; case TLV_MPC_ININTIAL_RETRY_TIME: params->mpc_p4 = (*(tlvs+1)<<8) | (*tlvs); params->mpc_p4 = htons(params->mpc_p4); printf("mpcd: lecs.c: get_reply: MPC_p4 = %d\n",params->mpc_p4); break; case TLV_MPC_RETRY_TIME_MAXIMUM: params->mpc_p5 = (*(tlvs+1)<<8) | (*tlvs); params->mpc_p5 = htons(params->mpc_p5); printf("mpcd: lecs.c: get_reply: MPC_p5 = %d\n",params->mpc_p5); break; case TLV_HOLD_DOWN_TIME: params->mpc_p6 = (*(tlvs+1)<<8) | (*tlvs); params->mpc_p6 = htons(params->mpc_p6); printf("mpcd: lecs.c: get_reply: MPC_p6 = %d\n",params->mpc_p6); break; default: printf("mpcd: lecs.c: get_reply: TLV type 0x%x\n", type); break; } tlvs += length; /* Sampo-Add: end */ } if (end_of_tlvs - tlvs != 0) printf("mpcd: lecs.c: get_reply: ignoring %d bytes of trailing TLV carbage\n", end_of_tlvs - tlvs); return 1; } static int get_lecs_socket(struct sockaddr_atmsvc *sa) { int s, retval; struct atm_qos qos; struct atm_sap sap; s = socket(PF_ATMSVC, SOCK_DGRAM, 0); if (s < 0){ printf("mpcd: lecs.c: socket failed: %s\n", strerror(errno)); return -1; } memset(&qos, 0, sizeof(qos)); memset(&sap, 0, sizeof(sap)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.rxtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = 1516; qos.rxtp.max_sdu = 1516; if (setsockopt(s, SOL_ATM,SO_ATMQOS, &qos, sizeof(qos)) < 0){ printf("mpcd: lecs.c: setsockopt SO_ATMQOS failed: %s\n", strerror(errno)); close(s); return -1; } sap.blli[0].l2_proto = ATM_L2_NONE; sap.blli[0].l3_proto = ATM_L3_TR9577; sap.blli[0].l3.tr9577.ipi = NLPID_IEEE802_1_SNAP; sap.blli[0].l3.tr9577.snap[0] = 0x00; sap.blli[0].l3.tr9577.snap[1] = 0xa0; sap.blli[0].l3.tr9577.snap[2] = 0x3e; sap.blli[0].l3.tr9577.snap[3] = 0x00; sap.blli[0].l3.tr9577.snap[4] = 0x01; if (setsockopt(s, SOL_ATM,SO_ATMSAP, &sap, sizeof(sap)) < 0) { printf("mpcd: lecs.c: setsockop SO_ATMSAP failed: %s\n", strerror(errno)); close (s); return -1; } retval = connect(s, (struct sockaddr *)sa, sizeof(struct sockaddr_atmsvc)); if (retval < 0) { printf("mpcd: lecs.c: connect failed: %s\n", strerror(errno)); close (s); return -1; } return s; } linux-atm-2.5.1/src/mpoad/lecs.h0000644000200100001440000000214307360675443015264 0ustar chasusers#ifndef LECS_H #define LECS_H void get_mpc_config(struct sockaddr_atmsvc *sa, char *lec_addr, char *elan_name); struct le_config_frame { uint16_t marker; uint8_t protocol; uint8_t version; uint16_t opcode; uint16_t status; uint32_t tran_id; uint16_t lecid; uint16_t flags; uint8_t src_lan[8]; uint8_t target_lan[8]; uint8_t src_atm_addr[ATM_ESA_LEN]; uint8_t lan_type; uint8_t max_frame_size; uint8_t num_tlvs; uint8_t elan_name_size; uint8_t target_atm_addr[ATM_ESA_LEN]; uint8_t elan_name[32]; /* TLVs if any */ } __attribute__ ((packed)); /* MPOA Configuration TLVs */ #define TLV_SC_SETUP_FRAME_COUNT 0x00a03e24 /* MPC_p1 */ #define TLV_SC_SETUP_FRAME_TIME 0x00a03e25 /* MPC_p2 */ #define TLV_FLOW_DETECTION_PROTOCOLS 0x00a03e26 /* MPC_p3 */ #define TLV_MPC_ININTIAL_RETRY_TIME 0x00a03e27 /* MPC_p4 */ #define TLV_MPC_RETRY_TIME_MAXIMUM 0x00a03e28 /* MPC_p5 */ #define TLV_HOLD_DOWN_TIME 0x00a03e29 /* MPC_p6 */ #endif /* LECS_H */ linux-atm-2.5.1/src/mpoad/main.c0000644000200100001440000001754310727546344015265 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "packets.h" #include "io.h" #include "k_interf.h" #include "get_vars.h" #include "lecs.h" /* * Global struct containing sockets addresses and parameters. */ struct mpc_control mpc_control; static void create_kernel_socket(int itf); static int listen_to_MPS( struct sockaddr_atmsvc ctrl_listen_addr ); static int set_mps_mac_addr(void); static void usage(const char *progname); static void signal_handler(int sig){ struct k_message msg; memset(&msg,0,sizeof(struct k_message)); if (sig == SIGHUP) msg.type = RELOAD; else msg.type = CLEAN_UP_AND_EXIT; send_to_kernel(&msg); printf("mpcd: main.c: signal_handler() signal %d\n", sig); return; } /* * Initialize our listen addresses for * the incoming/outgoing MPOA connections */ static void init_default_addresses(struct sockaddr_atmsvc *ctrl, struct sockaddr_atmsvc *data) { struct sockaddr_atmsvc sa; struct atmif_sioc req; int fd; unsigned char wellknown_lecs[ATM_ESA_LEN]; memset(wellknown_lecs,0,ATM_ESA_LEN); wellknown_lecs[0] = 0x47; wellknown_lecs[2] = 0x79; wellknown_lecs[14] = 0xa0; wellknown_lecs[15] = 0x3e; wellknown_lecs[18] = 0x01; fd = get_socket(NULL); req.number=0; req.arg=&sa; req.length=sizeof(struct sockaddr_atmsvc); if ( ioctl(fd, ATM_GETADDR, &req) <0 ){ perror("mpcd: main.c: ioctl(ATM_GETADDR)"); exit(-1); } ctrl->sas_family = AF_ATMSVC; data->sas_family = AF_ATMSVC; mpc_control.lecs_address.sas_family = AF_ATMSVC; /* ATM address for the incoming/outgoing MPOA control connections */ sa.sas_addr.prv[ATM_ESA_LEN-1] = 50; memcpy(ctrl->sas_addr.prv, sa.sas_addr.prv, ATM_ESA_LEN); memcpy(mpc_control.OWN_ATM_ADDRESS, ctrl->sas_addr.prv, ATM_ESA_LEN); memcpy(mpc_control.lecs_address.sas_addr.prv,wellknown_lecs, ATM_ESA_LEN); /* ATM address for the incoming/outgoing MPOA shortcuts */ sa.sas_addr.prv[ATM_ESA_LEN-1] = 51; memcpy(data->sas_addr.prv, sa.sas_addr.prv, ATM_ESA_LEN); close(fd); return; } int main(int argc, char **argv){ int listen_socket; int opt_ret = 0; struct k_message msg; struct sockaddr_atmsvc control_listen_addr; struct sockaddr_atmsvc mps_ctrl_addr; struct sockaddr_atmsvc lec_addr; memset(&control_listen_addr,0,sizeof(struct sockaddr_atmsvc)); memset(&mpc_control.data_listen_addr,0,sizeof(struct sockaddr_atmsvc)); memset(&lec_addr,0,sizeof(struct sockaddr_atmsvc)); memset(&mps_ctrl_addr,0,sizeof(struct sockaddr_atmsvc)); memset(&msg,0,sizeof(struct k_message)); memset(&mpc_control,0,sizeof(mpc_control)); mpc_control.elan_name[32] = '\0'; init_default_addresses(&control_listen_addr, &mpc_control.data_listen_addr); while( opt_ret != -1 ){ opt_ret = getopt(argc, argv, "h:s:l:c:L:n:C:i:m:"); switch(opt_ret) { case 'h': usage(argv[0]); exit(0); break; case 's': if(text2atm(optarg,(struct sockaddr *)&control_listen_addr, sizeof(struct sockaddr_atmsvc),T2A_SVC | T2A_NAME)<0){ printf("mpcd: main.c: text2atm failed.\n"); usage(argv[0]); exit(1); } memcpy(mpc_control.OWN_ATM_ADDRESS,control_listen_addr.sas_addr.prv, ATM_ESA_LEN); break; case 'l': if(text2atm(optarg,(struct sockaddr *)&mpc_control.data_listen_addr, sizeof(struct sockaddr_atmsvc),T2A_SVC | T2A_NAME)<0){ printf("mpcd: main.c: text2atm failed.\n"); usage(argv[0]); exit(1); } break; case 'c': if(text2atm(optarg,(struct sockaddr *)&mps_ctrl_addr, sizeof(struct sockaddr_atmsvc),T2A_SVC | T2A_NAME)<0){ printf("mpcd: main.c: text2atm failed.\n"); usage(argv[0]); exit(1); } memcpy(mpc_control.MPS_CTRL_ATM_ADDR,mps_ctrl_addr.sas_addr.prv,ATM_ESA_LEN); mpc_control.mps_ctrl_addr_set = 1; break; case 'L': if(text2atm(optarg,(struct sockaddr *)&lec_addr, sizeof(struct sockaddr_atmsvc),T2A_SVC | T2A_NAME)<0){ printf("mpcd: main.c: text2atm failed.\n"); usage(argv[0]); exit(1); } memcpy(mpc_control.LEC_ADDRESS,lec_addr.sas_addr.prv,ATM_ESA_LEN); mpc_control.use_lecs = 1; break; case 'n': strncpy(mpc_control.elan_name,optarg,33); break; case 'C': if(text2atm(optarg,(struct sockaddr *)&mpc_control.lecs_address, sizeof(struct sockaddr_atmsvc),T2A_SVC | T2A_NAME)<0){ printf("mpcd: main.c: text2atm failed.\n"); usage(argv[0]); exit(1); } break; case 'm': strncpy(mpc_control.MPS_MAC_ADDRESS,optarg,13); mpc_control.mps_mac_addr_set = 1; break; case 'i': mpc_control.INTERFACE_NUMBER = atoi(optarg); break; } } if (argc != optind) { usage(argv[0]); exit(1); } while(1){ create_kernel_socket(mpc_control.INTERFACE_NUMBER); if(mpc_control.use_lecs){ get_mpc_config(&mpc_control.lecs_address, mpc_control.LEC_ADDRESS, mpc_control.elan_name); } msg.type = SET_MPC_CTRL_ADDR; memcpy(msg.MPS_ctrl,mpc_control.OWN_ATM_ADDRESS,ATM_ESA_LEN); if (send_to_kernel(&msg) < 0) { printf("mpcd: main.c: send_to_kernel(SET_MPC_CTRL_ADDR) failed\n"); exit(1); } if(mpc_control.mps_mac_addr_set) set_mps_mac_addr(); listen_to_MPS( control_listen_addr ); if ( (listen_socket = get_listen_socket(&mpc_control.data_listen_addr)) < 0) { printf("mpcd: main.c: listen_socket creation failed\n"); exit (1); } signal(SIGHUP, signal_handler); signal(SIGINT, signal_handler); signal(SIGQUIT, signal_handler); signal(SIGABRT, signal_handler); signal(SIGTERM, signal_handler); main_loop(listen_socket); sleep(5); printf("mpcd: main.c: going back to main loop...\n"); } return 0; } static void create_kernel_socket(int itf) { mpc_control.kernel_socket = socket(PF_ATMSVC, SOCK_DGRAM, 0); if (mpc_control.kernel_socket < 0) { printf("mpcd: main.c: kernel socket creation failed: %s\n", strerror(errno)); exit (1); } if ( ioctl(mpc_control.kernel_socket, ATMMPC_CTRL, itf) < 0) { printf("mpcd: main.c: kernel socket ioctl(ATMMPC_CTRL) failed: %s\n", strerror(errno)); exit (1); } return; } static int listen_to_MPS( struct sockaddr_atmsvc ctrl_listen_addr ){ /* soketti, joka kuuntelee MPC:n Control ATM-osoitteessa */ mpc_control.MPS_listen_socket = get_listen_socket(&ctrl_listen_addr); if (mpc_control.MPS_listen_socket < 0) return -1; return 0; } static int set_mps_mac_addr(){ char *string = mpc_control.MPS_MAC_ADDRESS; struct k_message msg; unsigned char mac_addr[ETH_ALEN]; int tmp; int i = strlen(string); memset(&msg,0,sizeof(struct k_message)); if (i != 12){ printf("mpcd: main.c: incorrect mac address.\n"); exit(1); } for(i=0;i<6;i++) { sscanf(&string[i*2],"%2x",&tmp); mac_addr[i]=(unsigned char)tmp; } msg.type = SET_MPS_MAC_ADDR; memcpy(&msg.MPS_ctrl,&mac_addr,ETH_ALEN); send_to_kernel(&msg); return 0; } static void usage( const char * progname ){ printf("Usage: %s [-s our_control_listen_ATM_Address] [-l our_data_listen_address]\n" " [-c MPS_control_ATM_Address] [-i interface_number]\n" " [-m MPS_MAC_address]\n" " [-L lec_address [-n elan_name [-C lecs_address]]]\n", progname); return; } linux-atm-2.5.1/src/mpoad/mpcd.80000644000200100001440000001032607360675443015203 0ustar chasusers.TH mpcd 8 "Nov 17, 1998" "Linux" "Maintenance Commands" .SH NAME mpcd \- ATM MPOA (Multi\-Protocol Over ATM) client daemon .SH SYNOPSIS .B mpcd .B [ -s .I Control ATM address .B ] .B [ -l .I Data ATM address .B ] .B [ -c .I MPS control ATM address .B ] .B [ -i .I Interface number .B ] .B [ -m .I MPS MAC address .B ] .B [ -L .I LEC address .B [ -n .I ELAN name .B ] .B [ -C .I LECS Address .B ]] .SH DESCRIPTION MPOA client .SM(MPC) is responsible for creating and receiving internetwork layer shortcuts. Using these shortcuts MPCs forward unicast internetwork layer packets effectively over ATM without need for routing protocols. .PP .SM MPC has two roles; ingress and egress. In ingress role .SM MPC detects flows destined outside it's own subnet and tries to establish shortcuts to those destinations. In egress role .SM MPC accepts shortcuts and packets arriving on those shortcuts. Maintaining shortcuts is done with the help of .SM MPOA server .SM(MPS). .PP Just as the Linux .SM LAN Emulation client, .SM MPOA client is also divided in two parts. The parts are kernel component and a daemon process. The daemon opens and receives data shortcuts and control connections with the kernel component. The kernel component tallies packets flowing out from the .SM LANE device and makes the decision if a packet should be forwarded using .SM LANE or .SM MPOA shortcuts. .PP If the daemon is killed with .B SIGHUP it will close all the open connections, purge ingress and egress cache entries, query .SM LECS if applicable and then restart itself. .PP Linux MPOA client only supports non-LLC-muxed shortcuts. The number of supported MPOA clients is unlimited. .SH OPTIONS .IP "-s Control ATM address" Local ATM address this MPC uses for MPOA control connections. .IP "-l Data ATM address" Local ATM address from and to which MPOA shortcuts are established. .IP "-c MPS control ATM address" ATM address of MPS. Only needed if MPS can not advertise it by itself. .IP "-i Interface number" The interface number of LEC this MPC serves. E.g. 2 for "lec2". .IP "-m MPS MAC address" MAC address of default router where MPS recides. Only useful if the MPOA server fails to advertise itself. .IP "-L LEC address" Listen address of the .SM LANE client zeppelin. mpcd uses this address as its own .SM ATM address when it queries .SM LECS for .SM MPC configuration parameters. If this option is not present then mpcd .B will not use .SM LECS to query for configuration parameters. This option is normally the same as zeppelin's -l option. .IP "-n ELAN name" Name of the .SM ELAN for which mpcd asks for parameters when it connects to .SM LECS. If this option is not given, .SM LECS should respond with parameters belonging to the default .SM ELAN if one exists. This option is normally the same as zeppelin's -n option. .IP "-C LECS address" ATM address of .SM LECS mpcd asks for parameters. If this option is left empty and -L is given, mpcd uses ATM Forum assigned Well-Known .SM LECS address. This option is normally the same as zeppelin's -c option. .SH EXAMPLES This script snippet shows how to run LANE and MPOA. After UNI signalling and ILMI have been started LANE (zeppelin) and MPOA (mpcd) are started. The commented out line shows how to start mpcd so that it queries .SM LECS for .SM MPC parameters. .PP Arguments jaarli[1-3] are local ATM addresses listed in file .I /etc/hosts.atm. ATM=/usr/src/atm .br case "$1" in .br start) cd $ATM if [ -x sigd/atmsigd ] ; then .RS sigd/atmsigd -b .RE fi if [ -x ilmid/ilmid ] ; then .RS ilmid/ilmid -b -x .RE fi if [ -x led/zeppelin ] ; then .RS led/zeppelin -2 -n sampo -i2 -l jaarli3 & ifconfig lec2 10.10.10.208 \\ .RS netmask 255.255.255.192 \\ broadcast 10.10.10.255 .RE ifconfig lec2 up route add default gw 10.10.10.193 .RE fi if [ -x mpoad/mpcd ] ; then .RS mpoad/mpcd -i2 -s jaarli1 -l jaarli2 & #mpoad/mpcd -i2 -s jaarli1 -l jaarli2 \\ -L jaarli3 -n sampo & .RE fi ;; .br esac .br exit 0 .SH BUGS Supports only Ethernet type of ELANs. Probably others too. .SH AUTHORS Heikki Vatiainen , Sampo Saaristo .SH "SEE ALSO" .BR zeppelin(8), .BR atmsigd(8) linux-atm-2.5.1/src/mpoad/p_factory.c0000644000200100001440000003072310727546344016322 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include "packets.h" #include "get_vars.h" #include "io.h" #if 0 #define dprintf printf #else #define dprintf(format,args...) #endif extern struct mpc_control mpc_control; /* From main.c */ /* slightly modified version from RFC 1071 */ unsigned short compute_ip_csum(unsigned char *addr, int count) { /* Compute Internet Checksum for "count" bytes * beginning at location "addr". */ uint32_t sum = 0; while( count > 1 ) { /* This is the inner loop */ sum += * ((uint16_t *) addr); addr += 2; count -= 2; } /* Add left-over byte, if any */ if( count > 0 ) sum += * (unsigned char *) addr; /* Fold 32-bit sum to 16 bits */ while (sum>>16) sum = (sum & 0xffff) + (sum >> 16); return (~sum); } /* * Prefills the fixed header. * Only question is wheter the NBMA subaddress * can really be omitted or not. */ static void prefill_fixed_h(struct nhrp_fixed_h *header){ header->ar_afn = htons(AR_AFN_NSAP); header->ar_pro_type = htons(AR_PRO_TYPE_ETHER); header->ar_hopcnt = get_ttl(); /* get_vars.c */ header->ar_op_version = AR_OP_VERSION_NHRP; header->ar_shtl = AR_SHTL_NSAP; header->ar_sstl = 0; } /* * Prefills the common header. */ static void prefill_common_h(struct nhrp_common_h *header){ header->src_proto_len = PROTO_LEN_IP; header->dst_proto_len = PROTO_LEN_IP; get_own_atm_addr(header->src_nbma_address); header->src_protocol_address = htonl(get_own_ip_addr(mpc_control.INTERFACE_NUMBER)); } /* * Prefills the common header without the source IP_address */ static void prefill_common_h_short(struct nhrp_common_h_short *header){ header->src_proto_len = 0; header->dst_proto_len = PROTO_LEN_IP; get_own_atm_addr(header->src_nbma_address); } /* * Generates a new request id. */ static uint32_t Request_ID(void){ static uint32_t id = 0; id = (id + 1) % UINT_MAX; return id; } /* * Fills the checksum and length fields in the fixed header. */ static void finish(int length, uint8_t *buff, struct nhrp_fixed_h *fixed){ int append = length; fixed->ar_pktsz = htons(length); if(append % 2 == 1){ append++; } fixed->ar_chksum = (compute_ip_csum(buff,append)); return; } /* * NHRP purge request. */ int send_purge_request( uint32_t src_ip, uint8_t prefix_length, uint32_t purge_ip, int shortcut_fd ){ int pos = 0; struct nhrp_fixed_h *fixed; struct nhrp_common_h_short *common_short; struct nhrp_common_h_no_ip *common_no_ip; struct nhrp_cie_short *cie_short; uint8_t buffer[MAX_PACKET_LENGTH]; uint8_t *buff = buffer; memset(buff,0,MAX_PACKET_LENGTH); fixed = (struct nhrp_fixed_h *)buff; prefill_fixed_h(fixed); fixed->ar_op_type = NHRP_PURGE_REQUEST; pos += sizeof(struct nhrp_fixed_h); if(src_ip){ common_short = (struct nhrp_common_h_short *)(buff + pos); common_short->src_proto_len = PROTO_LEN_IP; common_short->dst_proto_len = 0; get_own_atm_addr(common_short->src_nbma_address); common_short->flags = htons(common_short->flags | FLAG_N); common_short->dst_protocol_address = src_ip; pos += sizeof(struct nhrp_common_h_short); } else{ common_no_ip = (struct nhrp_common_h_no_ip *)(buff + pos); get_own_atm_addr(common_no_ip->src_nbma_address); common_no_ip->flags = htons(common_no_ip->flags | FLAG_N); pos += sizeof(struct nhrp_common_h_no_ip); } cie_short = (struct nhrp_cie_short *)(buff + pos); cie_short->prefix_length = prefix_length; cie_short->cli_proto_len = PROTO_LEN_IP; pos += sizeof(struct nhrp_cie_short); *((uint32_t *)(buff + pos)) = htonl(purge_ip); pos += sizeof(purge_ip); finish(pos, buff, fixed); return send_to_dataplane(buff, pos, shortcut_fd); } /* * NHRP purge reply. Sent in response to NHRP purge request if N-flag * is not set. Only the packet type is changed and new checksum calculated. */ int send_purge_reply(uint8_t *buff) { int pos; struct nhrp_fixed_h *fixed = (struct nhrp_fixed_h *)buff; fixed->ar_op_type = NHRP_PURGE_REPLY; pos = ntohs(fixed->ar_pktsz); finish(pos, buff, fixed); return send_to_mps(buff, pos); } /* * MPOA resolution request. */ int send_resolution_request(uint32_t rqst_id, uint16_t source_ip_present, uint32_t dest_ip, uint8_t prefix_length, uint32_t service_category){ int pos = 0; struct nhrp_fixed_h *fixed; struct nhrp_common_h *common; struct nhrp_common_h_short *common_s; struct nhrp_extension *extension; struct nhrp_cie_short *cie; struct nhrp_extension_with_value *extension_with_value; uint8_t buff[MAX_PACKET_LENGTH]; memset(buff,0,MAX_PACKET_LENGTH); dprintf("mpcd: p_factory.c: sending a resolution request %x ",dest_ip); fixed = (struct nhrp_fixed_h *)buff; prefill_fixed_h(fixed); fixed->ar_op_type = MPOA_RESOLUTION_REQUEST; pos += sizeof(struct nhrp_fixed_h); if( source_ip_present ){ common = (struct nhrp_common_h *)(buff + sizeof(struct nhrp_fixed_h)); prefill_common_h(common); pos += sizeof(struct nhrp_common_h); common->dst_protocol_address = dest_ip; if(!rqst_id){ common->request_ID = htonl(Request_ID()); new_id(ntohl(common->request_ID),dest_ip,MPOA_RESOLUTION_REQUEST); } else common->request_ID = htonl(rqst_id); dprintf("mpcd: p_factory.c: with request_id %d\n",ntohl(common->request_ID)); } else{ common_s = (struct nhrp_common_h_short *)(buff + sizeof(struct nhrp_fixed_h)); prefill_common_h_short(common_s); pos += sizeof(struct nhrp_common_h_short); common_s->dst_protocol_address = dest_ip; if(!rqst_id){ common_s->request_ID = htonl(Request_ID()); new_id(ntohl(common_s->request_ID),dest_ip,MPOA_RESOLUTION_REQUEST); } else common_s->request_ID = htonl(rqst_id); dprintf("mpcd: p_factory.c: with request_id %d\n",ntohl(common_s->request_ID)); } cie = (struct nhrp_cie_short *)(buff + pos); cie->prefix_length = MAX_PREFIX_LENGTH; pos += sizeof(struct nhrp_cie_short); fixed->ar_extoff = htons(pos); extension = (struct nhrp_extension *)(buff + pos); extension->type = htons(MPOA_EGRESS_CACHE_TAG_EXTENSION); extension->length = 0; pos += sizeof(struct nhrp_extension); if(service_category){ extension_with_value = (struct nhrp_extension_with_value *)(buff + pos); extension_with_value->type = htons(MPOA_ATM_SERVICE_CATEGORY_EXTENSION); extension_with_value->length = htons(sizeof(service_category)); extension_with_value->value = htonl(service_category); pos += sizeof(struct nhrp_extension_with_value); } extension = (struct nhrp_extension *)(buff + pos); extension->type = htons(NHRP_END_OF_EXTENSIONS); extension->length = 0; pos += sizeof(struct nhrp_extension); finish(pos,buff,fixed); return send_to_mps(buff,pos); } /* * Sent as a reply to cache impositon request. */ int send_cache_imposition_reply( uint8_t *request, uint32_t tag, uint8_t code, uint8_t prefix_length, uint16_t mtu, uint8_t cli_atm_addr[ATM_ESA_LEN] ){ int pos = 0; struct nhrp_fixed_h *fixed; struct nhrp_fixed_h *fixed_request; struct nhrp_extension *extension; struct nhrp_extension_with_value *extension_with_value; struct dll_header_extension *dll_ext; struct extension_values values; struct nhrp_common_h *common; struct nhrp_cie_no_ip *cie; struct nhrp_cie_short *cie_short; uint8_t buffer[MAX_PACKET_LENGTH]; uint8_t *reply = buffer; memset(reply,0,MAX_PACKET_LENGTH); memset(&values,0,sizeof(values)); fixed = (struct nhrp_fixed_h *)reply; prefill_fixed_h(fixed); fixed->ar_op_type = MPOA_CACHE_IMPOSITION_REPLY; pos += sizeof(struct nhrp_fixed_h); common = (struct nhrp_common_h *) memcpy(reply+pos, request+pos, sizeof(struct nhrp_common_h)); pos += sizeof(struct nhrp_common_h); if( !code ){ cie = (struct nhrp_cie_no_ip *)(reply + pos); cie->code = code; if(prefix_length) cie->prefix_length = prefix_length; else cie->prefix_length = MAX_PREFIX_LENGTH; cie->mtu = MTU_DEFAULT; cie->cli_addr_tl = ATM_ESA_LEN; cie->cli_saddr_tl = 0; cie->cli_proto_len = 0; memcpy(cie->cli_nbma_address,mpc_control.data_listen_addr.sas_addr.prv,ATM_ESA_LEN); pos += sizeof(struct nhrp_cie_no_ip); } else{ cie_short = (struct nhrp_cie_short *)(reply + pos); cie_short->code = code; cie_short->prefix_length = prefix_length; cie_short->mtu = mtu; pos += sizeof(struct nhrp_cie_short); } fixed_request = (struct nhrp_fixed_h *)request; if(fixed_request->ar_extoff) parse_extensions(request+ntohs(fixed_request->ar_extoff),&values); fixed->ar_extoff = htons(pos); extension_with_value = (struct nhrp_extension_with_value *)(reply + pos); extension_with_value->type = htons(MPOA_EGRESS_CACHE_TAG_EXTENSION); extension_with_value->length = htons(sizeof(tag)); extension_with_value->value = tag; pos += sizeof(struct nhrp_extension_with_value); if(values.service_category_present){ extension_with_value = (struct nhrp_extension_with_value *)(reply + pos); extension_with_value->type = htons(MPOA_ATM_SERVICE_CATEGORY_EXTENSION); extension_with_value->length = htons(sizeof(values.service_category)); extension_with_value->value = htonl(CBR); /* FIXME */ pos += sizeof(struct nhrp_extension_with_value); } if(values.dll_header_present){ dll_ext = (struct dll_header_extension *)(reply + pos); dll_ext->type = htons(MPOA_DLL_HEADER_EXTENSION); dll_ext->length = values.dll_ext.length; dll_ext->cache_id = values.dll_ext.cache_id; dll_ext->elan_id = values.dll_ext.elan_id; dll_ext->dh_length = values.dll_ext.dh_length; memcpy(dll_ext->dll_header,values.dll_ext.dll_header,values.dll_ext.dh_length); pos += 13 + 14; } extension = (struct nhrp_extension *)(reply + pos); extension->type = htons(NHRP_END_OF_EXTENSIONS); extension->length = 0; pos += sizeof(struct nhrp_extension); finish(pos, reply, fixed); return send_to_mps(reply,pos); } int send_egress_cache_purge_request( uint16_t no_reply, uint32_t eg_MPS_ip_addr, uint8_t prefix, uint32_t purge_ip, uint32_t cache_id ) { int pos = 0; struct nhrp_fixed_h *fixed; struct dll_header_extension *extension_dll; struct nhrp_extension *extension; struct nhrp_common_h *common; struct nhrp_cie *cie; uint8_t buffer[MAX_PACKET_LENGTH]; uint8_t *buff = buffer; memset(buff,0,MAX_PACKET_LENGTH); fixed = (struct nhrp_fixed_h *)buff; prefill_fixed_h(fixed); fixed->ar_op_type = MPOA_EGRESS_CACHE_PURGE_REQUEST; pos += sizeof(struct nhrp_fixed_h); common = (struct nhrp_common_h *)(buff + pos); if(no_reply) common->flags = htons(common->flags | FLAG_N); common->request_ID = htonl(Request_ID()); new_id(ntohl(common->request_ID),cache_id,MPOA_EGRESS_CACHE_PURGE_REQUEST); prefill_common_h(common); common->dst_protocol_address = ntohl(eg_MPS_ip_addr); #ifdef MPOA_1_1 memcpy(common->src_nbma_address, mpc_control.OWN_ATM_ADDRESS, ATM_ESA_LEN); #endif pos += sizeof(struct nhrp_common_h); cie = (struct nhrp_cie *)(buff + pos); cie->prefix_length = prefix; cie->cli_addr_tl = ATM_ESA_LEN; cie->cli_proto_len = PROTO_LEN_IP; cie->cli_protocol_address = htonl(purge_ip); get_own_atm_addr(cie->cli_nbma_address); pos += sizeof(struct nhrp_cie); fixed->ar_extoff = htons(pos); extension_dll = (struct dll_header_extension *)(buff + pos); extension_dll->type = htons(MPOA_DLL_HEADER_EXTENSION); extension_dll->length = htons(9); /* FIXME: needs at least checking */ extension_dll->cache_id = cache_id; dprintf("mpcd: p_factory.c: egress cache_purge_request, cache_id = %u",cache_id); pos += 13; extension = (struct nhrp_extension *)(buff + pos); extension->type = htons(NHRP_END_OF_EXTENSIONS); pos += sizeof(struct nhrp_extension); finish(pos, buff, fixed); return send_to_mps(buff,pos); } int send_egress_cache_purge_reply(uint8_t *buff){ int pos; struct nhrp_fixed_h *fixed = (struct nhrp_fixed_h *)buff; fixed->ar_op_type = MPOA_EGRESS_CACHE_PURGE_REPLY; pos = ntohs(fixed->ar_pktsz); finish(pos, buff, fixed); return send_to_mps(buff,pos); } linux-atm-2.5.1/src/mpoad/p_recogn.c0000644000200100001440000004031310727546344016124 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include /* For UINT_MAX */ #include "io.h" #include "k_interf.h" #include "packets.h" extern struct mpc_control mpc_control; /* from main.c */ extern int keep_alive_sm_running; /* from io.c */ static unsigned char service_category_to_traff_class(uint32_t service_category); #if 0 #define dprintf printf #else #define dprintf(format,args...) #endif int parse_extensions(uint8_t *buff,struct extension_values * values ){ int pos = 0; struct dll_header_extension *dll_ext; struct nhrp_extension_with_value *ext_with_value; struct nhrp_extension *extension = (struct nhrp_extension *)buff; memset(values, 0, sizeof(struct extension_values)); while(ntohs(extension->type) != NHRP_END_OF_EXTENSIONS && ntohs(extension->type) != 0){ switch(ntohs(extension->type)){ case MPOA_DLL_HEADER_EXTENSION: dprintf("mpcd: p_recogn.c: dll_header_extension.\n"); dll_ext = (struct dll_header_extension *)(buff + pos); values->dll_header_present = 1; values->dll_ext.length = dll_ext->length; values->dll_ext.cache_id = dll_ext->cache_id; dprintf("mpcd: p_recogn.c: parse_extentsions() cache_id %d\n", dll_ext->cache_id); values->dll_ext.elan_id = dll_ext->elan_id; values->dll_ext.dh_length = dll_ext->dh_length; memcpy(values->dll_ext.dll_header,dll_ext->dll_header ,dll_ext->dh_length); pos += sizeof(struct dll_header_extension) - sizeof(dll_ext->dll_header) + dll_ext->dh_length; dprintf("mpcd: p_recogn.c: parse_extensions() pos %d values->dll_ext.cache_id %d\n", pos, values->dll_ext.cache_id); break; case MPOA_EGRESS_CACHE_TAG_EXTENSION: dprintf("mpcd: p_recogn.c: mpoa_egress_cache_tag_extension.\n"); values->egress_cache_tag_ext_present = 1; extension = (struct nhrp_extension *)(buff + pos); if(ntohs(extension->length)){ values->tag_present = 1; pos += sizeof(struct nhrp_extension); values->tag = *((uint32_t*)(buff + pos)); pos += sizeof(uint32_t); } else pos += sizeof(struct nhrp_extension); break; case MPOA_ATM_SERVICE_CATEGORY_EXTENSION: printf("mpcd: p_recogn.c: mpoa_atm_service_category_extension."); ext_with_value = (struct nhrp_extension_with_value *)(buff + pos); values->service_category_present = 1; values->service_category = ntohl(ext_with_value->value); pos += sizeof(struct nhrp_extension_with_value); printf("service_category = %u\n",values->service_category); break; case MPOA_KEEPALIVE_LIFETIME_EXTENSION: dprintf("mpcd: p_recogn.c: mpoa_keepalive_lifetime_extension.\n"); ext_with_value = (struct nhrp_extension_with_value *)(buff + pos); values->keep_alive_lifetime_present = 1; values->keep_alive_lifetime = ntohl(ext_with_value->value); pos += sizeof(struct nhrp_extension_with_value); break; case MPOA_HOP_COUNT_EXTENSION: dprintf("mpcd: p_recogn.c: mpoa_hop_count_extension.\n"); ext_with_value = (struct nhrp_extension_with_value *)(buff + pos); values->hop_count_present = 1; values->hop_count = ntohl(ext_with_value->value); pos += sizeof(struct nhrp_extension_with_value); break; case MPOA_ORIGINAL_ERROR_CODE_EXTENSION: dprintf("mpcd: p_recogn.c: mpoa_original_error_code_extension.\n"); ext_with_value = (struct nhrp_extension_with_value *)(buff + pos); values->error_code_present = 1; values->error_code = ntohl(ext_with_value->value); pos += sizeof(struct nhrp_extension_with_value); break; default: printf("mpcd: p_recogn.c: Unrecognized extension: %x\n",ntohs(extension->type)); pos += sizeof(struct nhrp_extension_with_value); break; } extension = (struct nhrp_extension *)(buff + pos); } if(pos) pos += sizeof(struct nhrp_extension); /* End_of_extensions extension */ return pos; } static uint32_t calculate_ip_mask(uint8_t prefix){ int i; uint32_t mask = 0; if(prefix >= 32) return UINT_MAX; for( i = 0; i < prefix - 1; i++){ mask = mask | 1; mask = mask << 1; } mask = mask | 1; mask = mask << (32 - prefix); return mask; } static void print_cie_code(uint8_t code){ printf("mpcd: p_recogn.c: resolution_reply_rcvd: "); switch(code){ case ADMINISTRATIVELY_PROHIBITED: printf("administratively prohibited. \n"); break; case INSUFFICIENT_RESOURCES: printf("insufficient resources. \n"); break; case NO_INET_ADDR_TO_NBMA_ADDR_BINDING_EXISTS: printf("no internet layer address to nbma address binding exists.\n"); break; case UNIQUE_INET_ADDR_ALREADY_REGISTERED: printf("unique internet layer address already registered.\n"); break; case INSUFF_RES_TO_EGRESS_CACHE_ENTRTY: printf("insufficient resources to accept egress cache entry.\n"); break; case INSUFF_RES_TO_SHORTCUT: printf("insufficient resources to accpet shortcut.\n"); break; case INSUFF_RES_TO_EITHER_ENTRY_OR_SHORTCUT: printf("insufficient resources to accept either shortcut or egress cache entry.\n"); break; case UNSUPPORTED_INTERN_LAYER_PROTO: printf("unsupported internetwork layer protocol.\n"); break; case UNSUPPORTED_MAC_LAYER_PROTO: printf("unsupported mac layer protocol.\n"); break; case NOT_AN_MPC: printf("not an mpc.\n"); break; case NOT_AN_MPS: printf("not an mps.\n"); break; case UNSPECIFIED: printf("unspecified.\n"); break; default: printf("unrecognized cie code %d.\n",code); break; } return; } static int nhrp_purge_request(uint8_t *buff){ int pos = 0; int cie_limit = 0; uint32_t ip_mask; uint8_t eg_MPC_data_ATM_addr[ATM_ESA_LEN]; uint32_t eg_MPS_ip_addr; uint32_t purge_ip; struct k_message msg; struct extension_values values; struct nhrp_common_h_no_ip *common_no_ip; struct nhrp_cie_no_nbma *cie_no_nbma; struct nhrp_cie *cie; struct nhrp_fixed_h *fixed = (struct nhrp_fixed_h *)buff; memset(&msg,0,sizeof(struct k_message)); if(ntohs(fixed->ar_extoff)){ cie_limit = ntohs(fixed->ar_extoff); } else{ cie_limit = ntohs(fixed->ar_pktsz); } pos += sizeof(struct nhrp_fixed_h); common_no_ip = (struct nhrp_common_h_no_ip *)(buff + pos); memcpy(eg_MPC_data_ATM_addr, common_no_ip->src_nbma_address ,ATM_ESA_LEN); pos += sizeof(struct nhrp_common_h_no_ip); if(common_no_ip->src_proto_len == PROTO_LEN_IP){ eg_MPS_ip_addr = ntohl((uint32_t)*(buff + pos)); pos += sizeof(eg_MPS_ip_addr); } if(common_no_ip->dst_proto_len == PROTO_LEN_IP) pos += sizeof(uint32_t); while(pos < cie_limit){ cie = (struct nhrp_cie *)(buff + pos); if(cie->cli_addr_tl){ purge_ip = cie->cli_protocol_address; ip_mask = calculate_ip_mask(cie->prefix_length); pos += sizeof(struct nhrp_cie); } else{ cie_no_nbma = (struct nhrp_cie_no_nbma *)(buff + pos); purge_ip = cie_no_nbma->cli_protocol_address; ip_mask = calculate_ip_mask(cie_no_nbma->prefix_length); pos += sizeof(struct nhrp_cie_no_nbma); } msg.type = INGRESS_PURGE_RCVD; msg.ip_mask = ip_mask; msg.content.in_info.in_dst_ip = purge_ip; memcpy(msg.MPS_ctrl, mpc_control.MPS_CTRL_ATM_ADDR, ATM_ESA_LEN); send_to_kernel(&msg); } /* we really do not do anything with the extensions, just parse them */ if(ntohs(fixed->ar_extoff)){ pos += parse_extensions(buff + ntohs(fixed->ar_extoff), &values); } if(!(ntohs(common_no_ip->flags) & FLAG_N )) return send_purge_reply(buff); return 1; } static int mpoa_cache_imposition_request( uint8_t * buff ){ int pos = 0; struct k_message msg; struct nhrp_fixed_h * fixed = (struct nhrp_fixed_h *)buff; struct nhrp_common_h * common; struct nhrp_cie_short * cie_short; struct extension_values values; pos += sizeof( struct nhrp_fixed_h ); memset(&values, 0, sizeof(struct extension_values)); memset(&msg,0,sizeof(struct k_message)); common = (struct nhrp_common_h *)(buff + pos); memcpy(msg.content.eg_info.in_MPC_data_ATM_addr, common->src_nbma_address ,ATM_ESA_LEN); pos += sizeof(struct nhrp_common_h); cie_short = (struct nhrp_cie_short *)(buff + pos); msg.content.eg_info.holding_time = ntohs(cie_short->holding_time); msg.ip_mask = calculate_ip_mask(cie_short->prefix_length); if(ntohs(fixed->ar_extoff)){ pos += parse_extensions(buff + ntohs(fixed->ar_extoff), &values); } if(ntohs(cie_short->holding_time)) { if (values.dll_header_present == 0) { printf("mpcd: p_recogn.c: warning: "); printf("holding time non-zero but MPOA DLL Header Extension missing\n"); return 0; } keep_alive_sm_running = 1; } msg.content.eg_info.cache_id = values.dll_ext.cache_id; msg.content.eg_info.DH_length = values.dll_ext.dh_length; memcpy(msg.content.eg_info.DLL_header, values.dll_ext.dll_header, msg.content.eg_info.DH_length); if(common->src_proto_len) msg.content.eg_info.mps_ip = common->src_protocol_address; if(common->dst_proto_len) msg.content.eg_info.eg_dst_ip = common->dst_protocol_address; msg.content.eg_info.tag = new_tag(msg.content.eg_info.cache_id); memcpy(msg.MPS_ctrl, mpc_control.MPS_CTRL_ATM_ADDR, ATM_ESA_LEN); msg.type = CACHE_IMPOS_RCVD; send_to_kernel(&msg); return send_cache_imposition_reply( buff, msg.content.eg_info.tag, 0x00, 0, MTU_DEFAULT, common->src_nbma_address ); } static int mpoa_egress_cache_purge_reply( uint8_t * buff ){ int pos = 0; struct nhrp_fixed_h *fixed = (struct nhrp_fixed_h *)buff; struct nhrp_common_h *common; struct nhrp_cie *cie; struct extension_values values; struct k_message msg; memset(&values, 0, sizeof(struct extension_values)); memset(&msg,0,sizeof(struct k_message)); pos += sizeof(struct nhrp_fixed_h); common = (struct nhrp_common_h*)(buff + pos); if(!check_incoming(ntohl(common->request_ID), MPOA_EGRESS_CACHE_PURGE_REQUEST)) return -1; pos += sizeof(struct nhrp_common_h); cie = (struct nhrp_cie *)(buff + pos); msg.ip_mask = calculate_ip_mask(cie->prefix_length); if(fixed->ar_extoff) parse_extensions(buff + ntohs(fixed->ar_extoff),&values); else { printf("mpcd: p_recogn.c: warning: "); printf("no extensions in MPOA Egress Cache Purge Reply\n"); return -1; } if (values.dll_header_present == 0) { printf("mpcd: p_recogn.c: warning: "); printf("DLL Header Extension missing in MPOA Egress Cache Purge Reply\n"); return -1; } msg.content.eg_info.cache_id = values.dll_ext.cache_id; msg.type = EGRESS_PURGE_RCVD; memcpy(msg.MPS_ctrl,mpc_control.MPS_CTRL_ATM_ADDR,ATM_ESA_LEN); return send_to_kernel(&msg); } static int mpoa_keep_alive(uint8_t *buff){ int pos = 0; uint32_t sequence_nmbr; struct nhrp_fixed_h *fixed = (struct nhrp_fixed_h *)buff; struct extension_values values; struct nhrp_common_h_no_ip *common; memset(&values, 0, sizeof(struct extension_values)); pos += sizeof(struct nhrp_fixed_h); common = (struct nhrp_common_h_no_ip *)(buff + pos); sequence_nmbr = ntohl(common->request_ID); if(memcmp(common->src_nbma_address,mpc_control.MPS_CTRL_ATM_ADDR,ATM_ESA_LEN)){ printf("mpcd: p_recogn.c: new MPS! \n" ); return -1; } if(ntohs(fixed->ar_extoff)){ parse_extensions(buff + ntohs(fixed->ar_extoff),&values); } /* if extensions were missing sequence_nmbr == 0 => MPS Death */ keep_alive_sm(values.keep_alive_lifetime, sequence_nmbr); return 1; } static int mpoa_trigger( uint8_t * buff ){ int pos = 0; struct k_message msg; struct nhrp_common_h *common; struct extension_values values; struct nhrp_fixed_h *fixed = (struct nhrp_fixed_h*)buff; memset(&values, 0, sizeof(struct extension_values)); pos += sizeof(struct nhrp_fixed_h); common = (struct nhrp_common_h *)(buff + pos); pos += sizeof(struct nhrp_common_h); memset(&msg,0,sizeof(struct k_message)); if(ntohs(fixed->ar_extoff)) { printf("mpcd: p_recogn.c: mpoa_trigger: ar$extoff in Fixed Header != 0\n" ); parse_extensions(buff+ntohs(fixed->ar_extoff),&values); } if(!common->dst_proto_len){ printf("mpcd: p_recogn.c: mpoa_trigger: no destination ip to trigger! \n"); return -1; } if(common->src_proto_len) msg.content.in_info.in_dst_ip = common->dst_protocol_address; /* * If src_proto_len == 0 dst_protocol_address is found in "place" * of dst_ptocol_address. */ else msg.content.in_info.in_dst_ip = common->src_protocol_address; memcpy(msg.MPS_ctrl,mpc_control.MPS_CTRL_ATM_ADDR,ATM_ESA_LEN); msg.type = MPOA_TRIGGER_RCVD; send_to_kernel(&msg); return 1; } static int mpoa_resolution_reply( uint8_t * buff ){ int pos = 0; struct k_message msg; struct extension_values values; struct nhrp_common_h *common; struct nhrp_cie *cie; struct nhrp_fixed_h *fixed = (struct nhrp_fixed_h*)buff; memset(&values, 0, sizeof(struct extension_values)); memset(&msg,0,sizeof(struct k_message)); pos += sizeof(struct nhrp_fixed_h); common = (struct nhrp_common_h*)(buff + pos); if(!check_incoming(ntohl(common->request_ID),MPOA_RESOLUTION_REQUEST)) return -1; pos += sizeof(struct nhrp_common_h); cie = (struct nhrp_cie*)(buff + pos); if(cie->code){ print_cie_code(cie->code); return -1; } msg.content.in_info.holding_time = ntohs(cie->holding_time); if(fixed->ar_extoff) pos += parse_extensions(buff + ntohs(fixed->ar_extoff), &values); if (values.egress_cache_tag_ext_present == 0) { printf("mpcd: p_recogn.c: warning: "); printf("received MPOA Resolution Reply "); printf("with no Egress Cache Tag Extension\n"); } if(values.tag_present && values.tag == 0) { printf("mpcd: p_recogn.c: warning: "); printf("received MPOA Resolution Reply "); printf("with Egress Cache Tag Extension where tag == 0\n"); values.tag_present = 0; } if(values.tag_present){ msg.content.in_info.tag = values.tag; } msg.type = MPOA_RES_REPLY_RCVD; msg.content.in_info.in_dst_ip = common->dst_protocol_address; memcpy(msg.content.in_info.eg_MPC_ATM_addr,cie->cli_nbma_address,ATM_ESA_LEN); memcpy(msg.MPS_ctrl,mpc_control.MPS_CTRL_ATM_ADDR, ATM_ESA_LEN); if(values.service_category_present) msg.qos.txtp.traffic_class = service_category_to_traff_class(values.service_category); else msg.qos.txtp.traffic_class = ATM_UBR; send_to_kernel(&msg); keep_alive_sm_running = 1; return MPOA_RESOLUTION_REPLY; } static int checksum_check(uint8_t *buff){ uint16_t checksum; int length; struct nhrp_fixed_h *fixed = (struct nhrp_fixed_h*)buff; checksum = fixed->ar_chksum; fixed->ar_chksum = 0; length = ntohs(fixed->ar_pktsz); if(checksum != compute_ip_csum(buff,length)) return 0; return 1; } static unsigned char service_category_to_traff_class(uint32_t service_category){ unsigned char traffic_class = 0; if(service_category & CBR) traffic_class |= ATM_CBR; else traffic_class |= ATM_UBR; return traffic_class; } int recognize_packet(uint8_t * buff){ struct nhrp_fixed_h *fixed = (struct nhrp_fixed_h *)buff; uint8_t type; if(!checksum_check(buff)){ printf("mpcd: p_recogn.c: checksum error!\n"); return -1; } if (fixed->ar_extoff > (fixed->ar_pktsz - sizeof(struct nhrp_extension))) { printf("mpcd: p_recogn.c: extension offset beyond packet limits!\n"); return -1; } type = fixed->ar_op_type; dprintf("mpcd: p_recogn.c: "); switch(type){ case NHRP_PURGE_REQUEST : dprintf("purge request received.\n"); return nhrp_purge_request(buff); case MPOA_CACHE_IMPOSITION_REQUEST : dprintf("cache imposition request recieved.\n"); return mpoa_cache_imposition_request(buff); case MPOA_EGRESS_CACHE_PURGE_REPLY : dprintf("mpoa egress cache purge reply recieved.\n"); return mpoa_egress_cache_purge_reply(buff); case MPOA_KEEP_ALIVE : dprintf("keep alive recieved. \n"); return mpoa_keep_alive(buff); case MPOA_TRIGGER : printf("mpoa trigger recieved. \n"); return mpoa_trigger(buff); case MPOA_RESOLUTION_REPLY: dprintf("mpoa resolution reply recieved. \n"); return mpoa_resolution_reply(buff); default: printf("p_recogn.c: unrecognized packet: %d\n",type); return -1; } } linux-atm-2.5.1/src/mpoad/packets.h0000644000200100001440000002435407360675443016000 0ustar chasusers#include #include #ifndef PACKETS_H #define PACKETS_H struct mpc_control{ int kernel_socket; /* socket for mpoad <--> kernel messages */ int MPS_socket; /* MPS control socket for outgoing msgs */ int MPS_listen_socket; /* listen socket for incoming control calls */ int mps_ctrl_addr_set; unsigned char MPS_CTRL_ATM_ADDR[ATM_ESA_LEN]; int mps_mac_addr_set; unsigned char MPS_MAC_ADDRESS[13]; unsigned char OWN_ATM_ADDRESS[ATM_ESA_LEN];/* Our control ATM address */ struct sockaddr_atmsvc data_listen_addr; /* Our data listen address */ int use_lecs; /* Use LECS for configuration info */ struct sockaddr_atmsvc lecs_address; unsigned char LEC_ADDRESS[ATM_ESA_LEN]; unsigned char elan_name[33]; int INTERFACE_NUMBER; /* Interface number, x for lecx */ }; /* p_factory.c */ int send_resolution_request( uint32_t rqst_id, uint16_t source_ip_present, uint32_t dest_ip, uint8_t prefix_length, uint32_t service_category ); int send_cache_imposition_reply( uint8_t * pRequest, uint32_t tag, uint8_t code, uint8_t prefix_length, uint16_t mtu, uint8_t * cli_atm_addr ); int send_egress_cache_purge_request( uint16_t no_reply, uint32_t eg_MPS_ip_addr, uint8_t prefix, uint32_t purge_ip, uint32_t cache_id ); int send_purge_request( uint32_t src_ip, uint8_t prefix_length, uint32_t purge_ip, int shortcut_fd ); int send_purge_reply( uint8_t * pBuff ); unsigned short compute_ip_csum( unsigned char *addr, int count ); /* p_recogn.c */ int recognize_packet( uint8_t * pBuff ); /* id_list.c */ int new_id( uint32_t id, uint32_t cache_id, uint8_t type ); uint32_t search_by_type( uint8_t type, uint32_t cache_id ); void clear_expired(void); int check_incoming( uint32_t id, uint8_t type ); /* tag_list.c */ uint32_t new_tag(uint32_t cache_id); int remove_tag(uint32_t tag); /* NHRP fixed header */ struct nhrp_fixed_h { uint16_t ar_afn; uint16_t ar_pro_type; uint8_t ar_pro_snap[5]; /* == 0 */ uint8_t ar_hopcnt; uint16_t ar_pktsz; uint16_t ar_chksum; uint16_t ar_extoff; uint8_t ar_op_version; /* 0x01 (NHRP) */ uint8_t ar_op_type; uint8_t ar_shtl; uint8_t ar_sstl; /* == 0 no subaddress concept */ }; /* NHRP common header */ struct nhrp_common_h { uint8_t src_proto_len; uint8_t dst_proto_len; uint16_t flags; uint32_t request_ID; uint8_t src_nbma_address[ATM_ESA_LEN]; uint32_t src_protocol_address; /* IP-address */ uint32_t dst_protocol_address; }; /* NHRP common header without source (or dest.) IP-address */ struct nhrp_common_h_short { uint8_t src_proto_len; uint8_t dst_proto_len; uint16_t flags; uint32_t request_ID; uint8_t src_nbma_address[ATM_ESA_LEN]; uint32_t dst_protocol_address; }; /* NHRP common header without source or dest IP-addresses */ struct nhrp_common_h_no_ip { uint8_t src_proto_len; uint8_t dst_proto_len; uint16_t flags; uint32_t request_ID; uint8_t src_nbma_address[ATM_ESA_LEN]; }; /* NHRP CIE */ struct nhrp_cie { uint8_t code; uint8_t prefix_length; uint16_t unused; uint16_t mtu; uint16_t holding_time; uint8_t cli_addr_tl; uint8_t cli_saddr_tl; uint8_t cli_proto_len; uint8_t preference; uint8_t cli_nbma_address[ATM_ESA_LEN]; uint32_t cli_protocol_address; }; /* NHRP CIE without IP-address */ struct nhrp_cie_no_ip { uint8_t code; uint8_t prefix_length; uint16_t unused; uint16_t mtu; uint16_t holding_time; uint8_t cli_addr_tl; uint8_t cli_saddr_tl; uint8_t cli_proto_len; uint8_t preference; uint8_t cli_nbma_address[ATM_ESA_LEN]; }; /* NHRP CIE without NBMA addresses */ struct nhrp_cie_no_nbma { uint8_t code; uint8_t prefix_length; uint16_t unused; uint16_t mtu; uint16_t holding_time; uint8_t cli_addr_tl; uint8_t cli_saddr_tl; uint8_t cli_proto_len; uint8_t preference; uint32_t cli_protocol_address; }; /* NHRP CIE without any addresses */ struct nhrp_cie_short { uint8_t code; uint8_t prefix_length; uint16_t unused; uint16_t mtu; uint16_t holding_time; uint8_t cli_addr_tl; uint8_t cli_saddr_tl; uint8_t cli_proto_len; uint8_t preference; }; /* NHRP error indication */ struct nhrp_error_indication { uint8_t src_proto_len; uint8_t dst_proto_len; uint16_t unused; uint16_t error_code; uint16_t error_offset; uint8_t src_nbma_address[ATM_ESA_LEN]; uint32_t src_protocol_address; uint32_t dst_protocol_address; }; /* NHRP extension */ struct nhrp_extension { uint16_t type; /* includes C and u bits */ uint16_t length; }; struct nhrp_extension_with_value { uint16_t type; uint16_t length; uint32_t value; }; struct dll_header_extension { uint16_t type; uint16_t length; uint32_t cache_id; uint32_t elan_id; uint8_t dh_length; uint8_t dll_header[256]; } __attribute__ ((packed)); /* without ((packed)) sizeof() was 273 */ /* struct is filled by parse_extensions() */ struct extension_values{ uint32_t dll_header_present; struct dll_header_extension dll_ext; uint32_t egress_cache_tag_ext_present; uint32_t tag_present; uint32_t tag; uint32_t service_category_present; uint32_t service_category; uint32_t keep_alive_lifetime_present; uint32_t keep_alive_lifetime; uint32_t hop_count_present; uint32_t hop_count; uint32_t error_code_present; uint32_t error_code; }; int parse_extensions(uint8_t *buff, struct extension_values *values); /* Constants for fixed header */ #define AR_AFN_NSAP 3 #define AR_AFN_E164 8 #define AR_OP_VERSION_NHRP 1 #define AR_SHTL_NSAP 0x14 #define AR_PRO_TYPE_ETHER 0x0800 #define AR_PRO_SNAP_ETHER 0 /* Constants for common header */ #define PROTO_LEN_IP 4 /* Default values */ #define MTU_DEFAULT 56325 #define MAX_PREFIX_LENGTH 0x20 /* Extension type codes */ #define NHRP_END_OF_EXTENSIONS 0x8000 /* C == 1 */ #define NHRP_RESPONDER_ADDRESS_EXTENSION 0x8003 #define NHRP_FWD_TRANSIT_NHS_REC_EXTENSION 0x8004 #define NHRP_REV_TRANSIT_NHS_REC_EXTENSION 0x8005 #define NHRP_AUTHENTICATION_EXTENSION 0x8007 #define NHRP_VENDORPRIVATE_EXTENSION 0x8008 #define MPOA_DLL_HEADER_EXTENSION 0x9000 #define MPOA_EGRESS_CACHE_TAG_EXTENSION 0x1001 /* C == 0 */ #define MPOA_ATM_SERVICE_CATEGORY_EXTENSION 0x1002 #define MPOA_KEEPALIVE_LIFETIME_EXTENSION 0x1003 #define MPOA_HOP_COUNT_EXTENSION 0x1004 #define MPOA_ORIGINAL_ERROR_CODE_EXTENSION 0x1005 /* Type codes (ar$op.type) */ #define NHRP_RESOLUTION_REQUEST 0x01 #define NHRP_RESOLUTION_REPLY 0x02 #define NHRP_REGISTRATION_REQUEST 0x03 #define NHRP_REGISTRATION_REPLY 0x04 #define NHRP_PURGE_REQUEST 0x05 #define NHRP_PURGE_REPLY 0x06 #define NHRP_ERROR_INDICATION 0x07 #define MPOA_CACHE_IMPOSITION_REQUEST 0x80 #define MPOA_CACHE_IMPOSITION_REPLY 0x81 #define MPOA_EGRESS_CACHE_PURGE_REQUEST 0x82 #define MPOA_EGRESS_CACHE_PURGE_REPLY 0x83 #define MPOA_KEEP_ALIVE 0x84 #define MPOA_TRIGGER 0x85 #define MPOA_RESOLUTION_REQUEST 0x86 #define MPOA_RESOLUTION_REPLY 0x87 /* Error codes. Used in the "Error Code"-field of an Error Indication packet. */ #define UNRECOGNIZED_EXTENSION 0x0001 #define NHRP_LOOP_DETECTED 0x0003 #define PROTOCOL_ADDRESS_UNREACHABLE 0x0006 #define PROTOCOL_ERROR 0x0007 #define NHRP_SDU_SIZE_EXCEEDED 0x0008 #define INVALID_EXTENSION 0x0009 #define INVALID_RESOLUTION_REPL_RCVD 0x000a #define AUTHENTICATION_FAILURE 0x000b #define HOP_COUNT_EXCEEDED 0x000f /* NHRP CIE codes */ #define ADMINISTRATIVELY_PROHIBITED 0x04 #define INSUFFICIENT_RESOURCES 0x05 #define NO_INET_ADDR_TO_NBMA_ADDR_BINDING_EXISTS 0x0c #define UNIQUE_INET_ADDR_ALREADY_REGISTERED 0x0e /* MPOA CIE codes */ #define SUCCESS 0x00 #define INSUFF_RES_TO_EGRESS_CACHE_ENTRTY 0x81 #define INSUFF_RES_TO_SHORTCUT 0x82 #define INSUFF_RES_TO_EITHER_ENTRY_OR_SHORTCUT 0x83 #define UNSUPPORTED_INTERN_LAYER_PROTO 0x84 #define UNSUPPORTED_MAC_LAYER_PROTO 0x85 #define NOT_AN_MPC 0x86 #define NOT_AN_MPS 0x87 #define UNSPECIFIED 0x88 /* FLAGS. The meaning of the flags differ with the type of the packet. */ #define FLAG_Q 0x8000 #define FLAG_A 0x4000 #define FLAG_D 0x2000 #define FLAG_U 0x1000 #define FLAG_S 0x0800 #define FLAG_N 0x8000 /* Lifetime of struct id's in the id_list */ #define ID_EXPIRING_TIME 600 /* ATM service categories */ #define RT_VBR 0x0001 #define NRT_VBR 0x0002 #define ABR 0x0004 #define CBR 0x0008 #endif /* PACKETS_H */ linux-atm-2.5.1/src/mpoad/poll2select.c0000644000200100001440000000255707360675443016572 0ustar chasusers/* * poll2select() -- function to convert poll() to select() * until poll() gets fixed and is usable again */ #if HAVE_CONFIG_H #include #endif #include #include #if __GLIBC__ >= 2 #include #include #else /* ugly hack to make it compile on RH 4.2 - WA */ #include #endif int poll2select(struct pollfd *fds, int fds_used, int timeout) { int i, retval, maxfd = 0; struct timeval tv, *tvp; fd_set rset, wset; FD_ZERO(&rset); FD_ZERO(&wset); for (i = 0; i < fds_used; i++) { if (fds[i].fd == -1) continue; if (fds[i].events & POLLIN) FD_SET(fds[i].fd, &rset); if (fds[i].events & POLLOUT) FD_SET(fds[i].fd, &wset); if (fds[i].fd > maxfd) maxfd = fds[i].fd; } tvp = &tv; if (timeout == -1) tvp = NULL; else { tv.tv_sec = timeout/1000; tv.tv_usec = 0; } retval = select(maxfd + 1, &rset, &wset, NULL, tvp); for (i = 0; i < fds_used; i++) { fds[i].revents = 0; if (fds[i].fd == -1) continue; if (FD_ISSET(fds[i].fd, &rset)) fds[i].revents = POLLIN; if (FD_ISSET(fds[i].fd, &wset)) fds[i].revents |= POLLOUT; } return retval; } linux-atm-2.5.1/src/mpoad/poll2select.h0000644000200100001440000000037307360675443016571 0ustar chasusers#ifndef POLL2SELECT_H #define POLL2SELECT_H /* * poll2select() -- function to convert poll() to select() * until poll() gets fixed and is usable again */ int poll2select(struct pollfd *fds, int fds_used, int timeout); #endif /* POLL2SELECT_H */ linux-atm-2.5.1/src/mpoad/tag_list.c0000644000200100001440000000304507360675443016141 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include #include #include "packets.h" /* Extern func's prototypes found from packets.h */ struct tag{ struct tag *next; struct tag *prev; uint32_t tag; uint32_t cache_id; }; static struct tag *tags = NULL; static struct tag *search_tag(uint32_t tag){ struct tag *ptag = tags; while(ptag != NULL){ if(tag == ptag->tag) return ptag; ptag = ptag->next; } return NULL; } static struct tag *search_id(uint32_t cache_id){ struct tag *ptag = tags; while(ptag != NULL){ if(cache_id == ptag->cache_id) return ptag; ptag = ptag->next; } return NULL; } static uint32_t get_tag(void){ static uint32_t tag = 0; tag = (tag + 1) % UINT_MAX; return tag; } uint32_t new_tag(uint32_t cache_id){ struct tag *new; new = search_id(cache_id); if(new != NULL) return new->tag; new = malloc(sizeof(struct tag)); memset(new,0,sizeof(struct tag)); new->tag = get_tag(); while(search_tag(new->tag) != NULL) new->tag = get_tag(); new->next = tags; if(tags != NULL) tags->prev = new; tags = new; new->cache_id = cache_id; return new->tag; } int remove_tag(uint32_t tag){ struct tag *ptag = search_tag(tag); if(ptag == NULL) return 0; printf("mpcd: tag_list.c: removing tag %u from the tag_list.\n",tag); if(ptag->prev != NULL) ptag->prev->next = ptag->next; else tags = ptag->next; if(ptag->next != NULL) ptag->next->prev = ptag->prev; free(ptag); return 1; } linux-atm-2.5.1/src/mpoad/Makefile.in0000644000200100001440000005017211304770376016231 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ sbin_PROGRAMS = mpcd$(EXEEXT) subdir = src/mpoad DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" PROGRAMS = $(sbin_PROGRAMS) am_mpcd_OBJECTS = get_vars.$(OBJEXT) io.$(OBJEXT) k_interf.$(OBJEXT) \ main.$(OBJEXT) p_factory.$(OBJEXT) p_recogn.$(OBJEXT) \ id_list.$(OBJEXT) tag_list.$(OBJEXT) poll2select.$(OBJEXT) \ lecs.$(OBJEXT) mpcd_OBJECTS = $(am_mpcd_OBJECTS) mpcd_LDADD = $(LDADD) mpcd_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(mpcd_SOURCES) DIST_SOURCES = $(mpcd_SOURCES) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ LDADD = $(top_builddir)/src/lib/libatm.la mpcd_SOURCES = get_vars.c get_vars.h io.c io.h k_interf.c k_interf.h main.c \ p_factory.c p_recogn.c id_list.c tag_list.c \ poll2select.c poll2select.h lecs.c lecs.h packets.h man_MANS = mpcd.8 EXTRA_DIST = $(man_MANS) CHANGELOG README.mpoa TODO all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/mpoad/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/mpoad/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list mpcd$(EXEEXT): $(mpcd_OBJECTS) $(mpcd_DEPENDENCIES) @rm -f mpcd$(EXEEXT) $(LINK) $(mpcd_OBJECTS) $(mpcd_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_vars.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id_list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/k_interf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lecs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/p_factory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/p_recogn.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poll2select.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tag_list.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man8: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" @list=''; test -n "$(man8dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) installdirs: for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-sbinPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-sbinPROGRAMS uninstall-man: uninstall-man8 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-sbinPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man8 install-pdf install-pdf-am install-ps \ install-ps-am install-sbinPROGRAMS install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-man uninstall-man8 \ uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/oamd/0000755000200100001440000000000011304770376013777 5ustar chasuserslinux-atm-2.5.1/src/oamd/CVS/0000755000200100001440000000000011304767140014425 5ustar chasuserslinux-atm-2.5.1/src/oamd/CVS/Root0000644000200100001440000000007411304767140015274 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/oamd/CVS/Repository0000644000200100001440000000002311304767140016522 0ustar chasuserslinux-atm/src/oamd linux-atm-2.5.1/src/oamd/CVS/Entries0000644000200100001440000000071411304767140015763 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:28 2007//TV2_5_1 /Makefile.am/1.1.2.2/Thu Apr 21 14:29:28 2005//TV2_5_1 /atmoamd.c/1.1.2.1/Sat Feb 21 15:31:40 2004//TV2_5_1 /crc10.c/1.1.2.1/Sat Feb 21 15:31:40 2004//TV2_5_1 /crc10.h/1.1.2.1/Sat Feb 21 15:31:40 2004//TV2_5_1 /io.c/1.1.2.2/Wed Jul 11 15:27:15 2007//TV2_5_1 /io.h/1.1.2.1/Sat Feb 21 15:31:40 2004//TV2_5_1 /oam.c/1.1.2.1/Sat Feb 21 15:31:40 2004//TV2_5_1 /oam.h/1.1.2.1/Sat Feb 21 15:31:40 2004//TV2_5_1 D linux-atm-2.5.1/src/oamd/CVS/Tag0000644000200100001440000000001011304767140015052 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/oamd/.cvsignore0000644000200100001440000000003310666025264015772 0ustar chasusersMakefile Makefile.in .deps linux-atm-2.5.1/src/oamd/Makefile.am0000644000200100001440000000032310231734310016013 0ustar chasuserssbin_PROGRAMS = @atmoamd@ EXTRA_PROGRAMS = atmoamd atmoamd_SOURCES = atmoamd.c io.c io.h oam.c oam.h crc10.c crc10.h atmoamd_LDADD = $(top_builddir)/src/lib/libatm.la atmoamd_DEPENDENCIES = $(zeppelin_LDADD) linux-atm-2.5.1/src/oamd/atmoamd.c0000644000200100001440000000272010015674734015565 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include "io.h" #define COMPONENT "OAMD" int timer, run_fsm, debug; static void usage(const char *name) { fprintf(stderr, "usage: %s [-b] [-d]\n", name); fprintf(stderr, "%6s %s -V\n", "", name); exit(1); } static void sig_handler(int signo) { if (signo == SIGALRM) { timer++; run_fsm = 1; signal(SIGALRM, sig_handler); alarm(1); } } int main(int argc, char **argv) { int c, background = 0; set_application("atmoamd"); set_verbosity(NULL,DIAG_INFO); while ((c = getopt(argc,argv,"bdV")) != EOF) switch (c) { case 'b': background = 1; break; case 'd': set_verbosity(NULL,DIAG_DEBUG); debug = 1; break; case 'V': printf("%s\n",VERSION); return 0; default: usage(argv[0]); } if (argc != optind) usage(argv[0]); diag(COMPONENT,DIAG_INFO,"Linux ATM OAM, version " VERSION); open_kernel(); /* run in background */ if (background) { pid_t pid; pid = fork(); if (pid < 0) diag(COMPONENT,DIAG_FATAL,"fork: %s",strerror(errno)); if (pid) { diag(COMPONENT,DIAG_DEBUG,"Backgrounding (PID %d)",pid); exit(0); } } signal(SIGALRM, sig_handler); alarm(1); poll_loop(); close_kernel(); return 0; } linux-atm-2.5.1/src/oamd/crc10.c0000644000200100001440000000564410015674734015063 0ustar chasusers#include #include "crc10.h" static unsigned short byte_crc10_table[256] = { 0x0000, 0x0233, 0x0255, 0x0066, 0x0299, 0x00aa, 0x00cc, 0x02ff, 0x0301, 0x0132, 0x0154, 0x0367, 0x0198, 0x03ab, 0x03cd, 0x01fe, 0x0031, 0x0202, 0x0264, 0x0057, 0x02a8, 0x009b, 0x00fd, 0x02ce, 0x0330, 0x0103, 0x0165, 0x0356, 0x01a9, 0x039a, 0x03fc, 0x01cf, 0x0062, 0x0251, 0x0237, 0x0004, 0x02fb, 0x00c8, 0x00ae, 0x029d, 0x0363, 0x0150, 0x0136, 0x0305, 0x01fa, 0x03c9, 0x03af, 0x019c, 0x0053, 0x0260, 0x0206, 0x0035, 0x02ca, 0x00f9, 0x009f, 0x02ac, 0x0352, 0x0161, 0x0107, 0x0334, 0x01cb, 0x03f8, 0x039e, 0x01ad, 0x00c4, 0x02f7, 0x0291, 0x00a2, 0x025d, 0x006e, 0x0008, 0x023b, 0x03c5, 0x01f6, 0x0190, 0x03a3, 0x015c, 0x036f, 0x0309, 0x013a, 0x00f5, 0x02c6, 0x02a0, 0x0093, 0x026c, 0x005f, 0x0039, 0x020a, 0x03f4, 0x01c7, 0x01a1, 0x0392, 0x016d, 0x035e, 0x0338, 0x010b, 0x00a6, 0x0295, 0x02f3, 0x00c0, 0x023f, 0x000c, 0x006a, 0x0259, 0x03a7, 0x0194, 0x01f2, 0x03c1, 0x013e, 0x030d, 0x036b, 0x0158, 0x0097, 0x02a4, 0x02c2, 0x00f1, 0x020e, 0x003d, 0x005b, 0x0268, 0x0396, 0x01a5, 0x01c3, 0x03f0, 0x010f, 0x033c, 0x035a, 0x0169, 0x0188, 0x03bb, 0x03dd, 0x01ee, 0x0311, 0x0122, 0x0144, 0x0377, 0x0289, 0x00ba, 0x00dc, 0x02ef, 0x0010, 0x0223, 0x0245, 0x0076, 0x01b9, 0x038a, 0x03ec, 0x01df, 0x0320, 0x0113, 0x0175, 0x0346, 0x02b8, 0x008b, 0x00ed, 0x02de, 0x0021, 0x0212, 0x0274, 0x0047, 0x01ea, 0x03d9, 0x03bf, 0x018c, 0x0373, 0x0140, 0x0126, 0x0315, 0x02eb, 0x00d8, 0x00be, 0x028d, 0x0072, 0x0241, 0x0227, 0x0014, 0x01db, 0x03e8, 0x038e, 0x01bd, 0x0342, 0x0171, 0x0117, 0x0324, 0x02da, 0x00e9, 0x008f, 0x02bc, 0x0043, 0x0270, 0x0216, 0x0025, 0x014c, 0x037f, 0x0319, 0x012a, 0x03d5, 0x01e6, 0x0180, 0x03b3, 0x024d, 0x007e, 0x0018, 0x022b, 0x00d4, 0x02e7, 0x0281, 0x00b2, 0x017d, 0x034e, 0x0328, 0x011b, 0x03e4, 0x01d7, 0x01b1, 0x0382, 0x027c, 0x004f, 0x0029, 0x021a, 0x00e5, 0x02d6, 0x02b0, 0x0083, 0x012e, 0x031d, 0x037b, 0x0148, 0x03b7, 0x0184, 0x01e2, 0x03d1, 0x022f, 0x001c, 0x007a, 0x0249, 0x00b6, 0x0285, 0x02e3, 0x00d0, 0x011f, 0x032c, 0x034a, 0x0179, 0x0386, 0x01b5, 0x01d3, 0x03e0, 0x021e, 0x002d, 0x004b, 0x0278, 0x0087, 0x02b4, 0x02d2, 0x00e1, }; unsigned short update_crc10_by_bytes(unsigned short crc10_accum, unsigned char *data_blk_ptr, int data_blk_size) { register int i; for (i = 0; i < data_blk_size; i++) { crc10_accum = ((crc10_accum << 8) & 0x3ff) ^ byte_crc10_table[(crc10_accum >> 2) & 0xff] ^ *data_blk_ptr++; } return crc10_accum; } unsigned short crc10(unsigned char *payload) { unsigned short crc; payload[46] = payload[47] = 0; crc = update_crc10_by_bytes(0, payload, ATM_CELL_PAYLOAD); payload[46] ^= crc >> 8; payload[47] ^= crc & 0xff; return crc; } int crc10_check(unsigned char *payload) { unsigned short old_crc, crc; old_crc = payload[47]; old_crc += payload[46] << 8; crc = crc10(payload); if (crc != old_crc) return -1; /* Failed CRC10 check */ else return 0; /* CRC10 correct */ } linux-atm-2.5.1/src/oamd/crc10.h0000644000200100001440000000045010015674734015056 0ustar chasusers/* * crc10.h CRC10 * * Written 2003 by Jorge Boncompte, DTI2 * * The CRC10 table and sum routine are from the f4loopbackd.c source */ #ifndef CRC10_H #define CRC10_H #define POLYNOMIAL 0x633 unsigned short crc10(unsigned char *payload); int crc10_check(unsigned char *payload); #endif linux-atm-2.5.1/src/oamd/io.c0000644000200100001440000000424710645173323014555 0ustar chasusers/* io.c - I/O operations */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define _LINUX_NETDEVICE_H /* glibc2 */ #include #include #include "atmd.h" #include "io.h" #include "oam.h" #define COMPONENT "IO" static int kernel; extern int run_fsm; /* ----- kernel interface -------------------------------------------------- */ void open_kernel(void) { if ((kernel = socket(PF_ATMSVC, SOCK_DGRAM, 0)) < 0) diag(COMPONENT, DIAG_FATAL, "socket: %s", strerror(errno)); if (ioctl(kernel, ATMOAMD_CTRL, 0) < 0) diag(COMPONENT, DIAG_FATAL, "ioctl ATMOAMD_CTRL: %s", strerror(errno)); } int send_kernel(struct atmoam_ctrl *ctrl) { int size; size = write(kernel, ctrl, sizeof (struct atmoam_ctrl)); if (size < 0) { diag(COMPONENT, DIAG_DEBUG, "write kernel: %s", strerror(errno)); return -errno; } return size; } void recv_kernel(void) { struct atmoam_ctrl ctrl; int size; size = read(kernel, &ctrl, sizeof (ctrl)); if (size < 0) { diag(COMPONENT, DIAG_ERROR, "read kernel: %s", strerror(errno)); return; } diag(COMPONENT, DIAG_DEBUG, "OAM %s Cell received on Intf %d VPI/VCI %d/%d (Vcc %p)", ctrl.pti == 5 ? "F5-E2E" : (ctrl.pti == 4 ? "F5-SEG" : "UNK"), ctrl.number, ctrl.vpi, ctrl.vci, *(struct atm_vcc **) &ctrl.vcc); oam_process(&ctrl); } void close_kernel(void) { close(kernel); } void poll_loop(void) { struct pollfd pollfds; pollfds.fd = kernel; pollfds.events = POLLIN; /* Que eventos queremos, solo entradas */ for (;;) { oam_state_print(); if (run_fsm) { oam_fsm(); run_fsm = 0; } switch (poll(&pollfds, 1, 10000)) { case 0: break; case -1: if (errno != EINTR) diag(COMPONENT, DIAG_ERROR, "poll loop...%s", strerror(errno)); break; default: if (pollfds.revents && POLLIN) recv_kernel(); } } } linux-atm-2.5.1/src/oamd/io.h0000644000200100001440000000065210015674734014561 0ustar chasusers/* io.h - I/O operations */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef IO_H #define IO_H #include #include /* for struct sockaddr */ #include /* for struct sockaddr_atmsvc */ #include #include void open_kernel(void); void recv_kernel(void); int send_kernel(struct atmoam_ctrl *); void close_kernel(void); void poll_loop(void); #endif linux-atm-2.5.1/src/oamd/oam.c0000644000200100001440000001413210015674734014717 0ustar chasusers#include #include #include #include #include #include #include "oam.h" #include "io.h" #include "crc10.h" #define COMPONENT "OAM" extern int timer; struct oamfsm fsm; struct oamvcc vcc; void handle_circuit_state(int state) { vcc.state = state; diag(COMPONENT, DIAG_DEBUG, "VCC STATE CHANGE: %s", vcc.state ? "DOWN" : "UP"); if (vcc.state == VCC_UP) { system("backuprdsi stop&"); } else if (vcc.state == VCC_DOWN) { system("backuprdsi start&"); } } void oam_state_print(void) { return; printf ("-------------------------------------------------------------------\n"); printf("T: %d UP: %d DOWN: %d STATE: %d VCCSTATE %d CTag: %lx\n", timer, fsm.upretry, fsm.downretry, fsm.state, vcc.state, vcc.CTag); printf("InOAM: %lu OutOAM: %lu CrcErrors: %lu CTagErrors: %lu\n", vcc.stats.InOAM, vcc.stats.OutOAM, vcc.stats.CrcErrors, vcc.stats.CTagErrors); printf("InEndLoop: %lu OutEndLoop: %lu\n", vcc.stats.F5.InEndLoop, vcc.stats.F5.OutEndLoop); printf ("-------------------------------------------------------------------\n"); } static int put_ctag(unsigned char *pdu, unsigned long ctag) { if (pdu == NULL) return -1; pdu[2] = (unsigned char) (ctag >> 24); pdu[3] = (unsigned char) (ctag >> 16); pdu[4] = (unsigned char) (ctag >> 8); pdu[5] = (unsigned char) ctag; return 0; } static unsigned long get_ctag(unsigned char *pdu) { unsigned long ctag; if (pdu == NULL) return -1; ctag = (unsigned long) pdu[5]; ctag += (unsigned long) (pdu[4] << 8); ctag += (unsigned long) (pdu[3] << 16); ctag += (unsigned long) (pdu[2] << 24); return ctag; } void oam_send(struct atmoam_ctrl *ctrl) { int error; error = send_kernel(ctrl); if (error > 0) { fsm.state = OAM_SENT; vcc.stats.OutOAM++; vcc.stats.F5.OutEndLoop++; } else if (error == -EUNATCH) { OAM_WAIT_10_S; vcc.stats.OutDrops++; } } static unsigned long oam_build_lb_cell(struct atmoam_ctrl *ctrl) { unsigned char *oamcell = (unsigned char *) &ctrl->cell; static unsigned long tag = 0; const unsigned char lpBackLocId[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; const unsigned char srcId[] = { 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A }; unsigned char *pdu = oamcell + 4; unsigned char *hdr = oamcell; unsigned short crc; // fill vpi hdr[0] = ctrl->vpi >> 4; hdr[1] = (ctrl->vpi & 0x0F) << 4; // fill vci hdr[1] |= ctrl->vci >> 12; hdr[2] = (ctrl->vci >> 4) & 0xFF; hdr[3] = 0x0A; hdr[3] |= (ctrl->vci & 0x0F) << 4; // updates the HEC // loopback function pdu[0] = 0x18; pdu[1] = 0x01; put_ctag(pdu, tag); tag++; // fill the loopback id memcpy(pdu + 6, lpBackLocId, 16); // fill the Src Id memcpy(pdu + 22, (unsigned char *) srcId, 16); // fill the unused bytes memcpy(pdu + 38, (unsigned char *) srcId, 8); // computes the CRC pdu[ATM_CELL_PAYLOAD - 2] = 0; pdu[ATM_CELL_PAYLOAD - 1] = 0; crc = crc10(pdu); pdu[ATM_CELL_PAYLOAD - 1] = (unsigned char) crc; pdu[ATM_CELL_PAYLOAD - 2] = (unsigned char) (crc >> 8); return tag - 1; } static int oam_fault(unsigned char *pdu) { struct oampayload *oampayload = (struct oampayload *) pdu; unsigned long ctag; if (OAM_FUNC(pdu) == ATM_OAM_F_LOOP) { ctag = get_ctag(pdu); diag(COMPONENT, DIAG_DEBUG, "\tReceived Fault-Mgmnt (%s) cell, CTag: 0x%lX", oampayload->LoopBackInd == 1 ? "Loopback" : "Loopback reply", ctag); if (pdu[1] == 1) { /* Celda de Loopback */ vcc.stats.F5.InEndLoop++; pdu[1] = 0; /* Clear Loopback but */ /* Recalculate CRC10 */ crc10(pdu); /* Volvemos a enviar la celda */ return 1; } if (pdu[1] == 0) { /* Loopback reply */ if (ctag == vcc.CTag) { vcc.stats.F5.InEndLoop++; OAM_INC_UPRETRY; if (fsm.upretry >= OAM_UPRETRY) { if (vcc.state == VCC_DOWN) handle_circuit_state(VCC_UP); } else { if (vcc.state == VCC_DOWN) { vcc.CTag = oam_build_lb_cell(&vcc. ctrl); oam_send(&vcc.ctrl); return 0; } } /* Desde aqui deberiamos ir a ESPERAR a 10 */ OAM_WAIT_10_S; return 0; } else { printf("Wrong Correlation Tag\n"); vcc.stats.CTagErrors++; OAM_INC_DOWNRETRY; if (fsm.downretry >= OAM_DOWNRETRY) { if (vcc.state == VCC_UP) handle_circuit_state(VCC_DOWN); } else { if (vcc.state == VCC_UP) { vcc.CTag = oam_build_lb_cell(&vcc. ctrl); oam_send(&vcc.ctrl); return 0; } } /* Desde aqui deberiamos ir a ESPERAR a 10 */ OAM_WAIT_10_S; return 0; } } } return 0; } void oam_process(struct atmoam_ctrl *ctrl) { vcc.stats.InOAM++; if (crc10_check(ctrl->cell.payload) != 0) { diag(COMPONENT, DIAG_ERROR, "Received OAM cell, failed CRC-10 check"); vcc.stats.CrcErrors++; OAM_INC_DOWNRETRY; if (fsm.downretry >= OAM_DOWNRETRY) { if (vcc.state == VCC_UP) handle_circuit_state(VCC_DOWN); } else { if (vcc.state == VCC_UP) { vcc.CTag = oam_build_lb_cell(&vcc.ctrl); oam_send(&vcc.ctrl); return; } } /* Desde aqui deberiamos ir a ESPERAR a 10 */ OAM_WAIT_10_S; return; } switch (OAM_TYPE(ctrl->cell.payload)) { case ATM_OAM_T_FAULT: if (oam_fault(ctrl->cell.payload)) send_kernel(ctrl); break; case ATM_OAM_T_PERF: break; case ATM_OAM_T_ACTDEACT: break; } } void oam_fsm(void) { switch (fsm.state) { case OAM_INIT: timer = 0; vcc.ctrl.number = 0; vcc.ctrl.vpi = 8; vcc.ctrl.vci = 32; vcc.ctrl.pti = 5; vcc.CTag = oam_build_lb_cell(&vcc.ctrl); oam_send(&vcc.ctrl); break; case OAM_SENT: OAM_INC_DOWNRETRY; if (fsm.downretry >= OAM_DOWNRETRY) { if (vcc.state == VCC_UP) handle_circuit_state(VCC_DOWN); } else { if (vcc.state == VCC_UP) { vcc.CTag = oam_build_lb_cell(&vcc.ctrl); oam_send(&vcc.ctrl); return; } } /* Desde aqui deberiamos ir a ESPERAR a 10 */ OAM_WAIT_10_S; break; case OAM_WAIT10: if (timer != 10) return; else { fsm.state = OAM_INIT; return; } } } linux-atm-2.5.1/src/oamd/oam.h0000644000200100001440000000211610015674734014723 0ustar chasusers/* * oam.h - OAM cell processing * * Written 2003 by Jorge Boncompte, DTI2 * */ #ifndef OAM_H #define OAM_H #define OAM_UPRETRY 3 #define OAM_DOWNRETRY 5 #define OAM_WAITRETRY 1 #define OAM_INIT 0 #define OAM_SENT 2 #define OAM_REPLY 3 #define OAM_WAIT10 4 #define VCC_UP 0 #define VCC_DOWN 1 #define OAM_INC_UPRETRY fsm.upretry++; fsm.downretry=0 #define OAM_INC_DOWNRETRY fsm.downretry++; fsm.upretry=0 #define OAM_WAIT_10_S timer = 0; fsm.state = OAM_WAIT10 struct oamfsm { int state; short upretry; short downretry; }; struct oamvcc { struct atmoam_ctrl ctrl; int state; unsigned long CTag; struct { unsigned long InOAM; unsigned long OutOAM; unsigned long CrcErrors; unsigned long CTagErrors; unsigned long OutDrops; struct { unsigned long InEndLoop; unsigned long InSegLoop; // unsigned long InAIS; // unsigned long InRDI; unsigned long OutEndLoop; unsigned long OutSegLoop; // unsigned long OutRDI; } F5; } stats; }; void oam_process(struct atmoam_ctrl *ctrl); void oam_fsm(void); void oam_state_print(void); #endif linux-atm-2.5.1/src/oamd/Makefile.in0000644000200100001440000004006111304770376016045 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ EXTRA_PROGRAMS = atmoamd$(EXEEXT) subdir = src/oamd DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" PROGRAMS = $(sbin_PROGRAMS) am_atmoamd_OBJECTS = atmoamd.$(OBJEXT) io.$(OBJEXT) oam.$(OBJEXT) \ crc10.$(OBJEXT) atmoamd_OBJECTS = $(am_atmoamd_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(atmoamd_SOURCES) DIST_SOURCES = $(atmoamd_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ sbin_PROGRAMS = @atmoamd@ atmoamd_SOURCES = atmoamd.c io.c io.h oam.c oam.h crc10.c crc10.h atmoamd_LDADD = $(top_builddir)/src/lib/libatm.la atmoamd_DEPENDENCIES = $(zeppelin_LDADD) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/oamd/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/oamd/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list atmoamd$(EXEEXT): $(atmoamd_OBJECTS) $(atmoamd_DEPENDENCIES) @rm -f atmoamd$(EXEEXT) $(LINK) $(atmoamd_OBJECTS) $(atmoamd_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmoamd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc10.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oam.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(sbindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-sbinPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-sbinPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-sbinPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-sbinPROGRAMS install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-sbinPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/q2931/0000755000200100001440000000000011304770376013636 5ustar chasuserslinux-atm-2.5.1/src/q2931/CVS/0000755000200100001440000000000011304767140014264 5ustar chasuserslinux-atm-2.5.1/src/q2931/CVS/Root0000644000200100001440000000007411304767140015133 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/q2931/CVS/Repository0000644000200100001440000000002411304767140016362 0ustar chasuserslinux-atm/src/q2931 linux-atm-2.5.1/src/q2931/CVS/Entries0000644000200100001440000000114711304767140015623 0ustar chasusers/.cvsignore/1.1.2.1/Mon Aug 3 20:36:56 2009//TV2_5_1 /Makefile.am/1.1.2.3/Fri Aug 28 12:47:39 2009//TV2_5_1 /TODO/1.1.2.1/Mon Aug 3 20:36:56 2009//TV2_5_1 /header.c/1.1.2.1/Fri Aug 28 12:47:39 2009//TV2_5_1 /mknl.pl/1.1.2.1/Mon Aug 3 20:36:56 2009//TV2_5_1 /msg.fmt/1.1.2.1/Mon Aug 3 20:36:56 2009//TV2_5_1 /op.h/1.1.2.1/Mon Aug 3 20:36:56 2009//TV2_5_1 /qlib.c/1.1.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /qlib.h/1.1.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /qtest.c/1.1.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /script.awk/1.1.2.1/Fri Aug 28 12:47:39 2009//TV2_5_1 /uni.h/1.1.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 D linux-atm-2.5.1/src/q2931/CVS/Tag0000644000200100001440000000001011304767140014711 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/q2931/.cvsignore0000644000200100001440000000016211235645150015627 0ustar chasusersMakefile Makefile.in .deps .libs default.nl q.out.c q.out.h qd.dump.c qd.out.c qd.out.h q.test.c qd.test.c q.dump linux-atm-2.5.1/src/q2931/Makefile.am0000644000200100001440000000274011245750753015676 0ustar chasusersnoinst_PROGRAMS = q.out.o qd.dump.o check_PROGRAMS = q.test q_test_SOURCES = qtest.c uni.h q_test_DEPENDENCIES = q.test.c #TESTS = $(check_PROGRAMS) EXTRA_DIST = incl.pl mknl.pl msg.fmt TODO CLEANFILES = q.out.h q.out.c q.test.c qd.out.h qd.out.c qd.dump.c qd.test.c \ default.nl NLS = atm_ai_msg atm_ai_ie atm_loc atm_cv atm_pu atm_na atm_cond atm_ie \ atm_msg atm_np atm_ton atm_sat atm_prs atm_scrn atm_vpa atm_poe \ q2931_cs atm_td atm_bc atm_tc atm_stc atm_upcc q2931_proto atm_flag \ atm_aalp atm_fd atm_tag atm_l2 atm_l3 atm_tt atm_mc atm_hl atm_imd \ atm_tdl atm_tni atm_nip atm_shi atm_oci atm_unfm atm_ofi atm_irs \ atm_it atm_lit atm_lsi atm_tcs atm_css atm_eqo atm_eqp atm_aap \ atm_asp atm_tor SYMFILES = $(srcdir)/uni.h $(shell $(CC) $(CFLAGS) -E $(srcdir)/header.c | $(AWK) -f $(srcdir)/script.awk) default.nl: mknl.pl $(SYMFILES) cat $(SYMFILES) | @PERL@ $(srcdir)/mknl.pl $(NLS) >default.nl || \ { rm -f default.nl; echo 1; } q.out.h q.out.c q.test.c: msg.fmt default.nl $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) - < $(srcdir)/msg.fmt | ../qgen/qgen qd.out.h qd.out.c qd.dump.c: msg.fmt default.nl $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) - < $(srcdir)/msg.fmt | ../qgen/qgen -D q.out.o: q.out.c q.out.h qlib.c qlib.h op.h uni.h qd.dump.o: qd.dump.c qd.out.c qlib.c qlib.h op.h uni.h #qd.dump.standalone.o: qd.dump.c qd.out.c qlib.c qlib.h # $(CC) $(DEFS) $(DEFAULT_INCLUDES) -DSTANDALONE $(INCLUDES) $(CFLAGS) -c qd.dump.c \ # -o qd.dump.standalone.o linux-atm-2.5.1/src/q2931/TODO0000644000200100001440000000122411235645150014317 0ustar chasusers - handle repeated IEs - q_assign should remove old value (i.e. zero destination) - bit numbering is wrong; should be - should be library (well, need at least more flexible name selection) - copies of adjacent fields should be merged - copies of partial bytes should be byte-wide if rest is only zeroes - should be able to have multiple selectors in one byte - case/default needs better compile-time check - parser shouldn't copy unnamed fields - optimize - code needs a lot of cleaning Restrictions ------------ - there's only very limited error checking - no support for arrays (repeated IEs) - copy operations are not optimized linux-atm-2.5.1/src/q2931/header.c0000644000200100001440000000003211245750753015226 0ustar chasusers#include linux-atm-2.5.1/src/q2931/mknl.pl0000755000200100001440000000147211235645150015135 0ustar chasusers#!/usr/bin/perl print "# THIS IS A MACHINE-GENERATED FILE. DO NOT EDIT !\n" || die "write: $!"; while ($line = ) { chop($line); next unless $line =~ /^#define\s/; while ($line =~ m|/\*| && $line !~ m|\*/|) { $line .= ; } $line =~ s/\s+/ /g; if (!defined($curr) || $line !~ /^#define ${curr}_/) { undef $curr; for (@ARGV) { ($tmp = $_) =~ tr/a-z/A-Z/; next unless $line =~ /^#define ${tmp}_/; $curr = $tmp; print "\n:$_\n" || die "write: $!"; last; } } next unless defined $curr; next unless $line =~ m|^#define (\S+) (\S+)( (/\*\s*(.*\S)\s*\*/))?|; # if (defined $3) { # print "$2=$1 $4\n" || die "write: $!"; # } if (defined $3) { print "$2=$2 \\\"$5\\\"\n" || die "write: $!"; } else { print "$2=$1\n" || die "write: $!"; } } linux-atm-2.5.1/src/q2931/msg.fmt0000644000200100001440000003552711235645150015142 0ustar chasusers/* msg.fmt - Signaling message format decription for UNI 3.0, 3.1, and 4.0 */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ #ifdef HAVE_CONFIG_H #include #endif #undef linux /* grr ... */ include "atmsap.h" include "uni.h" #define VAR_STD_HDR(name,defl) \ _ext <1@8,more> = 1 \ name##_cs "q2931_cs" <2@6,more> = defl \ _flag "atm_flag" <1@5,more> = ATM_FLAG_NO \ _action_ind "atm_ai_ie" <3@1> = 0 /* only 2 bits in UNI 3.0 */ \ _ie_len <16> = recover RECOV_IND_IE length #define ITU_STD_HDR VAR_STD_HDR(,Q2931_CS_ITU) #define NET_STD_HDR VAR_STD_HDR(,Q2931_CS_NET) def ie_aal = { ITU_STD_HDR { aal_type <8> = case { 5 { _id "atm_aalp" <8> = multi { ATM_AALP_FW_MAX_SDU { fw_max_sdu <16> } ATM_AALP_BW_MAX_SDU { bw_max_sdu <16> } #if defined(UNI30) || defined(ALLOW_UNI30) || defined(DYNAMIC_UNI) ATM_AALP_AAL_MODE { aal_mode <8> # UNI 3.0 only } #endif ATM_AALP_SSCS { sscs_type <8> } } } } } } #define TRAFFIC_DESCRIPTOR_PCR(p) \ ATM_TD_FW_PCR_0 { p##fw_pcr_0 <24> } \ ATM_TD_BW_PCR_0 { p##bw_pcr_0 <24> } \ ATM_TD_FW_PCR_01 { p##fw_pcr_01 <24> } \ ATM_TD_BW_PCR_01 { p##bw_pcr_01 <24> } \ #define TRAFFIC_DESCRIPTOR_VBR(p) \ ATM_TD_FW_SCR_0 { p##fw_scr_0 <24> } \ ATM_TD_BW_SCR_0 { p##bw_scr_0 <24> } \ ATM_TD_FW_SCR_01 { p##fw_scr_01 <24> } \ ATM_TD_BW_SCR_01 { p##bw_scr_01 <24> } \ ATM_TD_FW_MBS_0 { p##fw_mbs_0 <24> } \ ATM_TD_BW_MBS_0 { p##bw_mbs_0 <24> } \ ATM_TD_FW_MBS_01 { p##fw_mbs_01 <24> } \ ATM_TD_BW_MBS_01 { p##bw_mbs_01 <24> } \ #define TRAFFIC_DESCRIPTOR_BE(p) \ ATM_TD_BEST_EFFORT { p##best_effort <0> } \ #if defined(UNI40) || defined(DYNAMIC_UNI) #define TRAFFIC_DESCRIPTOR_ABR(p) \ ATM_TD_FW_MCR_01 { p##fw_mcr_01 <24> } \ ATM_TD_BW_MCR_01 { p##bw_mcr_01 <24> } \ #else #define TRAFFIC_DESCRIPTOR_ABR(p) /* not yet */ #endif #define TRAFFIC_DESCRIPTOR(p) \ TRAFFIC_DESCRIPTOR_PCR(p) \ TRAFFIC_DESCRIPTOR_VBR(p) \ TRAFFIC_DESCRIPTOR_BE(p) #ifdef NOT_YET TRAFFIC_DESCRIPTOR_ABR(p) #endif def ie_td = { # UNI 3.0 calls this "User Cell Rate" ITU_STD_HDR { _id "atm_td" <8> = multi { TRAFFIC_DESCRIPTOR() ATM_TD_TM_OPT { # @@@ should this also go into the TD macro ? #if defined(UNI40) || defined(DYNAMIC_UNI) fw_fdisc "atm_fd" <1@8,more> = ATM_FD_NO bw_fdisc "atm_fd" <1@7,more> = ATM_FD_NO #endif bw_tag "atm_tag" <1@2,more> = ATM_TAG_NO fw_tag "atm_tag" <1@1> = ATM_TAG_NO } } } } def ie_bbcap = { ITU_STD_HDR { bearer_class "atm_bc" <5@1,more> _ext <1@8> = case { 0 { _ext <1@8,more> = 1 trans_cap "atm_tc" <7@1> } default 1 {} } _ext <1@8,more> = 1 susc_clip "atm_stc" <2@6,more> = ATM_STC_NO upcc "atm_upcc" <2@1> = ATM_UPCC_P2P } } def ie_bhli = { ITU_STD_HDR { _ext <1@8,more> = 1 hli_type <7@1> = case { /* Note: cannot use ATM_HL_* here, because those values are incremented by one to keep zero available for ATM_HL_NONE */ 0 { # ISO iso_hli <-64> } 1 { # User Specific user_hli <-64> } #if defined(UNI30) || defined(ALLOW_UNI30) || defined(DYNAMIC_UNI) 2 { # High layer profile - UNI 3.0 only hlp <32> } #endif 3 { # Vendor-Specific Application identifier hli_oui <24> app_id <32> } #if defined(UNI40) || defined(DYNAMIC_UNI) 4 { # Reference to ITU-T SG 1 B-ISDN Teleservice Recommendation tobedefined <8> } #endif } } } def ie_blli = { ITU_STD_HDR { _lid <2@6,more> = multi { 1 { _ext <1@8,more> = 1 uil1_proto <5@1> } 2 { uil2_proto "atm_l2" <5@1,more> = case { ATM_L2_X25_LL,ATM_L2_X25_ML,ATM_L2_HDLC_ARM, ATM_L2_HDLC_NRM,ATM_L2_HDLC_ABM,ATM_L2_Q922, ATM_L2_ISO7776 { # CCITT encoding _ext <1@8> = case { 0 { l2_mode "atm_imd" <2@6,more> = ATM_IMD_NORMAL q933 <2@1,more> = 0 _ext <1@8> = case { 0 { window_size <7@1,more> _ext <1@8> = 1 } default 1 {} } } default 1 {} } } ATM_L2_USER { # User specified _ext <1@8> = 0 user_l2 <7@1,more> _ext <1@8> = 1 } default ATM_L2_ISO1745,ATM_L2_Q291,ATM_L2_LAPB, ATM_L2_ISO8802,ATM_L2_X75 { # No additional data _ext <1@8> = 1 } } } 3 { uil3_proto "atm_l3" <5@1,more> = case { ATM_L3_X25,ATM_L3_ISO8208,ATM_L3_X223 { # CCITT coding _ext <1@8> = case { 0 { l3_mode "atm_imd" <2@6,more> = ATM_IMD_NORMAL _ext <1@8> = case { 0 { def_pck_size <4@1,more> _ext <1@8> = case { 0 { _ext <1@8> = 1 pck_win_size <7@1> } default 1 {} } } default 1 {} } } default 1 {} } } #if defined(UNI40) || defined(DYNAMIC_UNI) ATM_L3_H310 { # ITU-T Rec. H.310 _ext <1@8> = case { 0 { term_type "atm_tt" <4@1,more> = ATM_TT_RXTX _ext <1@8> = case { 0 { _ext <1@8,more> = 1 fw_mpx_cap "atm_mc" <3@4,more> = ATM_MC_NONE bw_mpx_cap "atm_mc" <3@1> = ATM_MC_NONE } default 1 {} } } default 1 {} } } #endif ATM_L3_TR9577 { # ISO/IEC TR9577 _ext <1@8> = case { 0 { _ext <1@8,more> = 0 ipi_high <7@1> = case { 0x40 { # SNAP hack _ext <1@8,more> = 1 _ipi_low <1@7> = case { # ugly 0 { _ext <1@8,more> = 1 _snap_id <2@6> = 0 oui <24> pid <16> } default 1 {} } } default 0x0 { # ugly _ext <1@8,more> = 1 ipi_low <1@7> } } } default 1 {} } } ATM_L3_USER { # User specified _ext <1@8> = 0 user_l3 <7@1,more> _ext <1@8> = 1 } } } } } } def ie_call_state = { ITU_STD_HDR { call_state <6@1> } } def ie_cdpn = { ITU_STD_HDR { _ext <1@8,more> = 1 _plan "atm_np" <4@1,more> = case { ATM_NP_E164 { _type "atm_ton" <3@5> = ATM_TON_INTRNTNL cdpn_e164 <-96> } ATM_NP_AEA { # ATM Endsystem Address _type "atm_ton" <3@5> = ATM_TON_UNKNOWN cdpn_esa <-160> } } } } def ie_cdps = { ITU_STD_HDR { _ext <1@8,more> = 1 #ifdef UNI30 _type "atm_sat" <3@5,more> = ATM_SAT_AEA #endif #if defined(UNI31) || defined(DYNAMIC_UNI) cdps_type "atm_sat" <3@5,more> = ATM_SAT_AEA #endif _oddeven <1@4> = 0 cdps <-160> } } def ie_cgpn = { # @@@ extend language to allow same trick as for cdpn ITU_STD_HDR { cgpn_plan "atm_np" <4@1,more> cgpn_type "atm_ton" <3@5,more> _ext <1@8> = case { 0 { _ext <1@8,more> = 1 pres_ind "atm_prs" <2@6,more> = ATM_PRS_ALLOW scr_ind "atm_scrn" <2@1> = ATM_SCRN_UP_NS } default 1 {} } cgpn <-160> } } def ie_cgps = { ITU_STD_HDR { _ext <1@8,more> = 1 #ifdef UNI30 _type "atm_sat" <3@5,more> = ATM_SAT_AEA #endif #if defined(UNI31) || defined(DYNAMIC_UNI) cgps_type "atm_sat" <3@5,more> = ATM_SAT_AEA #endif _oddeven <1@4> = 0 cgps <-160> } } def ie_cause = { VAR_STD_HDR(cause,Q2931_CS_ITU) { _ext <1@8,more> = 1 location "atm_loc" <4@1> = ATM_LOC_USER _ext <1@8,more> = 1 cause "atm_cv" <7@1> = case { ATM_CV_UNALLOC,ATM_CV_NO_ROUTE_DEST,ATM_CV_QOS_UNAVAIL { # Note 2 break _ext <1@8,more> = 1 pu "atm_pu" <1@4,more> = ATM_PU_USER na "atm_na" <1@3,more> = ATM_NA_NORMAL cond2 "atm_cond" <2@1> = ATM_COND_UNKNOWN } ATM_CV_CALL_REJ { # Note 3 break _ext <1@8,more> = 1 cond3 "atm_cond" <2@1,more> = ATM_COND_UNKNOWN reason <5@3> = case { ATM_RSN_USER { user_diag <-216> } ATM_RSN_IE_MISS,ATM_RSN_IE_INSUFF { ie_id3 "atm_ie" <8> } } } ATM_CV_NUM_CHANGED { # Note 4 break new_dest <-224> # good luck ... } ATM_CV_REJ_CLIR { # Note 5 break invalid <8> # not supported } ATM_CV_ACC_INF_DISC,ATM_CV_INCOMP_DEST,ATM_CV_MAND_IE_MISSING, ATM_CV_UNKNOWN_IE,ATM_CV_INVALID_IE { # Note 6 break ie_id6 <-224> } #if defined(DYNAMIC_UNI) || defined(ALLOW_UNI30) ATM_CV_UCR_UNAVAIL_OLD,ATM_CV_UCR_UNAVAIL_NEW { # Note 8 #else #ifdef UNI30 ATM_CV_UCR_UNAVAIL_OLD { # Note 8 #else ATM_CV_UCR_UNAVAIL_NEW { # Note 8 #endif #endif break ucr_id <-224> } ATM_CV_NO_SUCH_CHAN { # Note 9 break unav_vpci <16> unav_vci <16> } ATM_CV_UNKNOWN_MSG_TYPE,ATM_CV_INCOMP_MSG { # Note 10 break bad_msg_type "atm_msg" <8> } ATM_CV_TIMER_EXP { # Note 11 break timer <24> } default 0 {} } } } def ie_conn_id = { ITU_STD_HDR { _ext <1@8,more> = 1 _vp_ass "atm_vpa" <2@4,more> = ATM_VPA_EXPL /* explicit */ _pref_exc "atm_poe" <3@1> = 0 vpi <16> vci <16> } } #if defined(UNI40) || defined(DYNAMIC_UNI) def ie_e2e_tdl = { ITU_STD_HDR { _id "atm_tdl" <8> = multi { ATM_TDL_CUM { cum_delay <16> } ATM_TDL_E2EMAX { max_delay <16> } ATM_TDL_NGI {} } } } #endif def ie_qos = { #if defined(UNI30) && !defined(DYNAMIC_UNI) NET_STD_HDR { #else /* * Depending on what values are put into qos_fw and qos_bw, this may * still be invalid. But at least the defaults should be okay. Note * that defining UNI30 and UNI31 together yields only the UNI30 * behaviour. We assume that everybody who implements UNI 3.1 today * has a similar kludge in their networking code, so we should get * away with that. */ VAR_STD_HDR(qos,Q2931_CS_NET) { #endif qos_fw <8> = 0 qos_bw <8> = 0 } } def ie_bbrep = { ITU_STD_HDR { _ext <1@8,more> = 1 rep_ind <4@1> = 2 } } def ie_restart = { ITU_STD_HDR { _ext <1@8,more> = 1 rst_class <3@1> } } def ie_bbs_comp = { ITU_STD_HDR { _ext <1@8,more> = 1 bbsc_ind <7@1> = 0x21 } } def ie_tns = { ITU_STD_HDR { _ext <1@8,more> = 1 _net_type "atm_tni" <3@5,more> = ATM_TNI_NNI /* @@@ default ? */ _carrier_id "atm_nip" <4@1> = ATM_NIP_CARRIER /* @@@ default ? */ net_id <-32> } } #if defined(UNI40) || defined(DYNAMIC_UNI) def ie_notify = { ITU_STD_HDR { notification <-32> # @@@ how many actually ? } } def ie_oam_td = { ITU_STD_HDR { _ext <1@8,more> = 1 shaping "atm_shi" <2@6,more> = ATM_SHI_NONE compliance "atm_oci" <1@5,more> = ATM_OCI_OPT fault "atm_unfm" <3@1> = ATM_UNFM_NONE _ext <1@8,more> = 1 fwd_ofi "atm_ofi" <3@5,more> = ATM_OFI_0_0 bwd_ofi "atm_ofi" <3@1> = ATM_OFI_0_0 } } def ie_git = { NET_STD_HDR { # @@@ UNI 4.0 does not specify the coding _dummy <1@8> = 0 # bit is "spare", although not indicated in spec id_std_app "atm_irs" <7@1> = case { ATM_IRS_DSMCC,ATM_IRS_H245 { _type "atm_it" <8> = ATM_IT_SESSION _length <8> = length { session_id <-160> } _type "atm_it" <8> = ATM_IT_RESOURCE _length <8> = length { resource_id <-32> } } default 0 { unrecognized_git_identifiers <-224> # 33-5 bytes } } } } def ie_lij_id = { NET_STD_HDR { # @@@ UNI 4.0 does not specify the coding _ext <1@8,more> = 1 lij_id_type "atm_lit" <7@1> = ATM_LIT_ROOT lij_id <32> } } def ie_lij_prm = { NET_STD_HDR { # @@@ UNI 4.0 does not specify the coding _ext <1@8,more> = 1 lij_scr_ind "atm_lsi" <2@1> } } def ie_leaf_sn = { NET_STD_HDR { # @@@ UNI 4.0 does not specify the coding leaf_sn <32> } } def ie_scope_sel = { NET_STD_HDR { # @@@ UNI 4.0 does not specify the coding _ext <1@8,more> = 1 scope_type "atm_tcs" <4@1> = ATM_TCS_ORGANIZATIONAL scope_sel "atm_css" <8> } } def ie_alt_td = { ITU_STD_HDR { _id "atm_td" <8> = multi { TRAFFIC_DESCRIPTOR(alt) } } } def ie_min_td = { NET_STD_HDR { # @@@ UNI 4.0 does not specify the coding _id "atm_td" <8> = multi { TRAFFIC_DESCRIPTOR_PCR(min) TRAFFIC_DESCRIPTOR_ABR(min) } } } def ie_eqos = { NET_STD_HDR { eqos_origin "atm_eqo" <8> _id "atm_eqp" <8> = multi { ATM_EQP_ACC_FW_CDV { acc_fw_cdv <24> } ATM_EQP_ACC_BW_CDV { acc_bw_cdv <24> } ATM_EQP_CUM_FW_CDV { cum_fw_cdv <24> } ATM_EQP_CUM_BW_CDV { cum_bw_cdv <24> } ATM_EQP_ACC_FW_CLR { acc_fw_clr <8> } ATM_EQP_ACC_BW_CLR { acc_bw_clr <8> } } } } def ie_abr_add_prm = { NET_STD_HDR { _id "atm_aap" <8> = multi { ATM_AAP_FW_REC { abr_fw_add_rec <32> } ATM_AAP_BW_REC { abr_bw_add_rec <32> } } } } def ie_abr_set_prm = { NET_STD_HDR { # @@@ UNI 4.0 does not specify the coding _id "atm_asp" <8> = multi { ATM_ASP_FW_ICR { abr_fw_icr <24> } ATM_ASP_BW_ICR { abr_bw_icr <24> } ATM_ASP_FW_TBE { abr_fw_tbe <24> } ATM_ASP_BW_TBE { abr_bw_tbe <24> } ATM_ASP_CRF_RTT { atm_crf_rtt <24> } ATM_ASP_FW_RIF { atm_fw_rif <8> } ATM_ASP_BW_RIF { atm_bw_rif <8> } ATM_ASP_FW_RDF { atm_fw_rdf <8> } ATM_ASP_BW_RDF { atm_bw_rdf <8> } } } } #endif def ie_ep_ref = { ITU_STD_HDR { _ep_type <8> = 0 ep_ref <16> } } def ie_ep_state = { ITU_STD_HDR { ep_state <6@1> } } #if defined(Q2963_1) || defined(DYNAMIC_UNI) def ie_bbrt = { ITU_STD_HDR { type_of_report "atm_tor" <8> } } #endif { _pdsc "q2931_proto" <8> = Q2931_PROTO_DSC _cr_len <8> = 3 call_ref <24> msg_type "atm_msg" <8> _ext <1@8,more> = 1 _flag "atm_flag" <1@5,more> = ATM_FLAG_NO _action_ind "atm_ai_msg" <2@1> = 0 msg_len <16> = length { _ie_id "atm_ie" <8> = multi { aal: ATM_IE_AAL ie_aal td: ATM_IE_TD ie_td bbcap: ATM_IE_BBCAP ie_bbcap bhli: ATM_IE_BHLI ie_bhli blli1: ATM_IE_BLLI ie_blli blli2: ATM_IE_BLLI ie_blli blli3: ATM_IE_BLLI ie_blli call_state: ATM_IE_CALL_STATE ie_call_state cdpn: ATM_IE_CDPN ie_cdpn cdps: ATM_IE_CDPS ie_cdps cgpn: ATM_IE_CGPN ie_cgpn cgps: ATM_IE_CGPS ie_cgps cause: ATM_IE_CAUSE ie_cause cause2: ATM_IE_CAUSE ie_cause conn_id: ATM_IE_CONN_ID ie_conn_id #if defined(UNI40) || defined(DYNAMIC_UNI) e2e_tdl: ATM_IE_E2E_TDL ie_e2e_tdl #endif qos: ATM_IE_QOS ie_qos bbrep: ATM_IE_BBREP ie_bbrep restart: ATM_IE_RESTART ie_restart bbs_comp: ATM_IE_BBS_COMP ie_bbs_comp tns: ATM_IE_TNS ie_tns #if defined(UNI40) || defined(DYNAMIC_UNI) notify: ATM_IE_NOTIFY ie_notify oam_td: ATM_IE_OAM_TD ie_oam_td git: ATM_IE_GIT ie_git git2: ATM_IE_GIT ie_git git3: ATM_IE_GIT ie_git lij_id: ATM_IE_LIJ_ID ie_lij_id lij_prm: ATM_IE_LIJ_PRM ie_lij_prm leaf_sn: ATM_IE_LEAF_SN ie_leaf_sn scope_sel: ATM_IE_SCOPE_SEL ie_scope_sel alt_td: ATM_IE_ALT_TD ie_alt_td min_td: ATM_IE_MIN_TD ie_min_td eqos: ATM_IE_EQOS ie_eqos abr_add_prm:ATM_IE_ABR_ADD_PRM ie_abr_add_prm abr_set_prm:ATM_IE_ABR_SET_PRM ie_abr_set_prm #endif ep_ref: ATM_IE_EPR ie_ep_ref ep_state: ATM_IE_EP_STATE ie_ep_state #if defined(Q2963_1) || defined(DYNAMIC_UNI) bbrt: ATM_IE_BBRT ie_bbrt #endif default 0 { VAR_STD_HDR(_,0) abort RECOV_ASE_UNKNOWN_IE } } } } linux-atm-2.5.1/src/q2931/op.h0000644000200100001440000000206711235645150014424 0ustar chasusers/* op.h - message processor opcodes */ /* Written 1995,1996 by Werner Almesberger, EPFL-LRC */ #ifndef OP_H #define OP_H /* construction */ #define OP_INVALID 0 /* crash here */ #define OP_COPY 1 /* copy ,, */ #define OP_COPYVAR 2 /* copy ,, */ #define OP_BEGIN_LEN 3 /* begin_length ,, */ #define OP_END_LEN 4 /* end_length */ #if 0 #define OP_CASE 4 /* case , { ,,... { ,..., jump }, ... } */ #endif #define OP_JUMP 5 /* jump */ #define OP_END 6 /* end */ #define OP_IFGROUP 7 /* ifgroup , */ /* parsing */ #define OP_MULTI 8 /* multi ,case,... */ #define OP_CASE 9 /* case ,,,, { , ,,... { ,...,jump }, ... } */ #define OP_IFEND 10 /* ifend */ #define OP_DUMP 11 /* dump ; dumper only */ #define OP_BEGIN_REC 12 /* begin_recovery ,, */ #define OP_END_REC 13 /* end_recovery */ #define OP_ABORT 14 /* abort */ #endif linux-atm-2.5.1/src/q2931/qlib.c0000644000200100001440000004706011235645151014733 0ustar chasusers/* qlib.c - run-time library */ /* Written 1995-1997 by Werner Almesberger, EPFL-LRC */ #ifdef HAVE_CONFIG_H #include #endif #ifdef DUMP_MODE static int q_dump = 0; #else int q_dump = 0; #endif #ifndef STANDALONE #define DUMP qd_dump #else #define DUMP printf #include #include #include #include "qlib.h" #include "op.h" int debug = 0; void PREFIX(report)(int severity,const char *msg,...) { va_list ap; if (!debug && severity > Q_ERROR) return; va_start(ap,msg); vprintf(msg,ap); printf("\n"); va_end(ap); if (severity == Q_FATAL) exit(1); } #endif #define LENGTH_STACK 10 #define LENGTH_R_STACK 5 typedef struct { int pos,size; unsigned char *start; } LEN_BUF; typedef struct _rstack { int *pc; int sp; unsigned char *pos; unsigned char *end; struct _rstack *next; } RSTACK; static int q_test(unsigned char *table,int pos) { return !!(table[pos >> 3] & (1 << (pos & 7))); } static void q_set(unsigned char *table,int pos) { table[pos >> 3] |= 1 << (pos & 7); } static void q_clear(unsigned char *table,int pos) { table[pos >> 3] &= ~(1 << (pos & 7)); } /* slightly ugly */ static void q_put(unsigned char *table,int pos,int size,unsigned long value) { int end; PREFIX(report)(Q_DEBUG,"put %d %d %ld",pos,size,value); end = pos+size; if (((pos | size) & 7) && ((pos ^ (end-1)) & ~7)) PREFIX(report)(Q_FATAL,"unsupported alignment (put %d,%d)",pos,size); if (size <= 8) { unsigned char *here; int shift; here = &table[pos >> 3]; shift = pos & 7; *here = (*here & ~(((1 << size)-1) << shift)) | value << shift; } else { table = table+end/8-1; while (size > 0) { *table-- = value; value >>= 8; size -= 8; } } } static unsigned long q_get(unsigned char *table,int pos,int size) { unsigned long value; int end; PREFIX(report)(Q_DEBUG,"get %d %d ...",pos,size); end = pos+size; if (((pos | size) & 7) && ((pos ^ (end-1)) & ~7)) PREFIX(report)(Q_FATAL,"unsupported alignment (get %d,%d)",pos,size); if (size <= 8) value = (table[pos >> 3] >> (pos & 7)) & ((1 << size)-1); else { table += pos >> 3; value = 0; while (size > 0) { value = (value << 8) | *table++; size -= 8; } } PREFIX(report)(Q_DEBUG," %ld",value); return value; } static void q_copy(unsigned char *src,int pos,unsigned char *dst,int size) { src += pos >> 3; pos &= 7; if (pos+size <= 8) *dst |= *src & (((1 << size)-1) << pos); else { if (pos) { *dst++ |= *src++ & (0xff << pos); size -= 8-pos; } while (size >= 8) { *dst++ = *src++; size -= 8; } if (size > 0) *dst |= *src & ((1 << size)-1); } } void PREFIX(start)(void) { q_init_global(); } static int q_init(Q_DSC *dsc) { size_t bytes; int i; /* initialize verything in case anything goes wrong during allocations. */ dsc->errors = NULL; dsc->field_present = NULL; dsc->group_present = NULL; dsc->data = NULL; dsc->required = NULL; dsc->length = NULL; dsc->field_map = NULL; dsc->group_map = NULL; dsc->data = malloc((size_t) Q_DATA_BYTES); dsc->error = 1; if (!dsc->data) { perror("out of memory"); return -1; } memcpy(dsc->data,q_initial,Q_DATA_BYTES); bytes = (Q_FIELDS+7) >> 3; dsc->required = malloc(bytes); if (!dsc->required) { perror("out of memory"); return -1; } memset(dsc->required,0,bytes); dsc->field_present = malloc(bytes); if (!dsc->field_present) { perror("out of memory"); return -1; } memset(dsc->field_present,0,bytes); bytes = (Q_GROUPS+(sizeof(unsigned long)*8-1)) >> 3; dsc->group_present = malloc(bytes); if (!dsc->group_present) { perror("out of memory"); return -1; } memset(dsc->group_present,0,bytes); if (!Q_VARLEN_FIELDS) dsc->length = NULL; else { dsc->length = malloc(sizeof(int)*Q_VARLEN_FIELDS); if (!dsc->length) { perror("out of memory"); return -1; } memset(dsc->length,0,sizeof(int)*Q_VARLEN_FIELDS); } dsc->field_map = malloc(sizeof(int)*Q_FIELDS); if (!dsc->field_map) { perror("out of memory"); return -1; } for (i = 0; i < Q_FIELDS; i++) dsc->field_map[i] = i; dsc->group_map = malloc(sizeof(int)*Q_GROUPS); if (!dsc->group_map) { perror("out of memory"); return -1; } for (i = 0; i < Q_GROUPS; i++) dsc->group_map[i] = i; dsc->error = 0; return 0; } #ifndef DUMP_MODE static void use_group(Q_DSC *dsc,int group) { int *scan; while (group != -1) { q_set((unsigned char *) dsc->group_present,group); for (scan = groups[group].required; scan && *scan != -1; scan++) q_set(dsc->required,*scan); group = groups[group].parent; } } void q_assign(Q_DSC *dsc,int field,unsigned long value) { int *walk; if (field < 0 || field >= Q_FIELDS) PREFIX(report)(Q_FATAL,"invalid field value (%d)",field); field = dsc->field_map[field]; if (!fields[field].values) { if (q_test(dsc->field_present,field)) /* probably an error ... */ PREFIX(report)(Q_ERROR,"changing field %d",field); q_set(dsc->field_present,field); q_put(dsc->data,fields[field].pos,fields[field].size,value); use_group(dsc,fields[field].parent); } else { if (q_test(dsc->field_present,field)) PREFIX(report)(Q_FATAL,"can't change field %d",field); q_set(dsc->field_present,field); q_put(dsc->data,fields[field].pos,fields[field].size,value); for (walk = fields[field].values; walk[1] != -1; walk += 2) if (*walk == value || *walk == -2) { use_group(dsc,walk[1]); return; } PREFIX(report)(Q_ERROR,"invalid value (%d in field %d)",value,field); dsc->error = 1; } } void q_write(Q_DSC *dsc,int field,const void *buf,int size) { if (field < 0 || field >= Q_FIELDS) PREFIX(report)(Q_FATAL,"invalid field value (%d)",field); field = dsc->field_map[field]; if (fields[field].pos & 7) PREFIX(report)(Q_FATAL,"invalid use of q_write (%d)",field); if (fields[field].actual >= 0) { if (size > fields[field].size/8) { PREFIX(report)(Q_ERROR,"%d bytes too big for %d byte field %d", size,fields[field].size/8,field); dsc->error = 1; return; } dsc->length[fields[field].actual] = size; } else if ((fields[field].pos | fields[field].size) & 7) PREFIX(report)(Q_FATAL,"field %d is neither var-len nor " "well-shaped",field); memcpy(dsc->data+(fields[field].pos/8),buf,(size_t) size); q_set(dsc->field_present,field); use_group(dsc,fields[field].parent); } int q_present(const Q_DSC *dsc,int field) { if (field < 0) { if (field < -Q_GROUPS) PREFIX(report)(Q_FATAL,"invalid group number (%d)",field); if (!dsc->group_present) return 0; field = dsc->group_map[-field-1]; return q_test((unsigned char *) dsc->group_present,field); } else { if (field >= Q_FIELDS) PREFIX(report)(Q_FATAL,"invalid field number (%d)",field); if (!dsc->field_present) return 0; field = dsc->field_map[field]; if (q_test(dsc->field_present,field)) return 1; return q_test((unsigned char *) dsc->group_present, fields[field].parent); } } unsigned long q_fetch(const Q_DSC *dsc,int field) { if (field < 0 || field >= Q_FIELDS) PREFIX(report)(Q_FATAL,"invalid field value (%d)",field); field = dsc->field_map[field]; return q_get(dsc->data,fields[field].pos,fields[field].size); } int q_length(const Q_DSC *dsc,int field) { if (field < 0 || field >= Q_FIELDS) PREFIX(report)(Q_FATAL,"invalid field value (%d)",field); field = dsc->field_map[field]; if (fields[field].pos & 7) PREFIX(report)(Q_FATAL,"invalid use of q_length (%d)",field); if (fields[field].actual < 0) PREFIX(report)(Q_FATAL,"field %d is not var-len",field); return dsc->length[fields[field].actual]; } int q_read(Q_DSC *dsc,int field,void *buf,int size) { int len; len = 0; /* for gcc */ if (field < 0 || field >= Q_FIELDS) PREFIX(report)(Q_FATAL,"invalid field value (%d)",field); field = dsc->field_map[field]; if (fields[field].pos & 7) PREFIX(report)(Q_FATAL,"invalid use of q_read (%d)",field); if (fields[field].actual >= 0) len = dsc->length[fields[field].actual]; else if (!(fields[field].size & 7)) len = fields[field].size >> 3; else PREFIX(report)(Q_FATAL,"field %d is not byte-sized (%d bits)", field,fields[field].size); if (size < len) { PREFIX(report)(Q_ERROR,"%d bytes too big for %d byte buffer (field " "%d)",len,size,field); dsc->error = 1; return -1; } memcpy(buf,dsc->data+(fields[field].pos/8),len); return len; } void q_instance(Q_DSC *dsc,int group) { int i; if (group >= 0 || group < -Q_GROUPS) PREFIX(report)(Q_FATAL,"invalid group number (%d)",group); if (groups[-group-1].start == -1) PREFIX(report)(Q_FATAL,"group %d is unique",group); for (i = 0; i < groups[-group-1].length; i++) dsc->field_map[groups[-group-1].start+i] = groups[-group-1].start+i+ groups[-group-1].offset; } static int q_compose(Q_DSC *dsc,unsigned char *buf,int size) { LEN_BUF stack[LENGTH_STACK]; unsigned char *pos; int *pc; int j,i,sp; for (i = 0; i < Q_FIELDS; i++) if (q_test(dsc->required,i) && !q_test(dsc->field_present,i)) PREFIX(report)(Q_ERROR,"required field %d is missing",i); memset(buf,0,(size_t) size); if (q_dump) for (j = 0; j < 100; j += 20) { fprintf(stderr,"%3d:",j); for (i = 0; i < 20; i++) fprintf(stderr," %02X",dsc->data[i+j]); putc('\n',stderr); } pos = buf; pc = construct; sp = 0; while (1) { PREFIX(report)(Q_DEBUG,"%d(%d):",pc-construct,pos-buf); switch (*pc++) { case OP_COPY: if (size < *pc) { PREFIX(report)(Q_ERROR,"not enough space (%d < %d)",size, *pc); dsc->error = 1; return -1; } PREFIX(report)(Q_DEBUG,"copy %d %d %d",pc[1],pos-buf,pc[2]); q_copy(dsc->data,pc[1],pos,pc[2]); if (q_dump) { for (i = 0; i < 50; i++) fprintf(stderr,"%02X ",buf[i]); putc('\n',stderr); } pos += *pc; size -= *pc; pc += 3; break; case OP_COPYVAR: if (size < dsc->length[*pc]) { PREFIX(report)(Q_ERROR,"not enough space (%d < %d)",size, dsc->length[*pc]); dsc->error = 1; return -1; } memcpy(pos,dsc->data+pc[1]/8,dsc->length[*pc]); pos += dsc->length[*pc]; size -= dsc->length[*pc]; pc += 3; break; case OP_BEGIN_LEN: if (size < *pc) { PREFIX(report)(Q_ERROR,"not enough space (%d < %d)",size, *pc); dsc->error = 1; return -1; } if (sp == LENGTH_STACK) { PREFIX(report)(Q_ERROR,"length stack overflow"); dsc->error = 1; return -1; } stack[sp].pos = pc[1]; /* not used */ stack[sp].size = pc[2]; stack[sp].start = pos; pos += *pc; /* allocate length here */ size -= *pc; sp++; pc += 3; break; case OP_END_LEN: if (!sp--) PREFIX(report)(Q_FATAL,"length stack underflow"); q_put(stack[sp].start,0,stack[sp].size, (size_t) ((pos-stack[sp].start)-((stack[sp].size+7) >> 3))); break; case OP_IFGROUP: if (q_test((unsigned char *) dsc->group_present,*pc++)) pc++; else pc += *pc+1; break; #if 0 case OP_CASE: { int len; for (len = *pc++; len; len--) if (!q_test((unsigned char *) dsc->group_present,*pc++)) pc++; else { pc += *pc+1; break; } if (!len) PREFIX(report)(Q_FATAL,"multi failed (pc %d)", pc-construct); } break; #endif case OP_JUMP: pc += *pc+1; break; case OP_END: return pos-buf; default: PREFIX(report)(Q_FATAL,"unrecognized opcode %d",pc[-1]); return -1; /* for gcc */ } } } #endif static const char *q_err_msg[] = { "???","not enough space (%d left)", "case failed (value 0x%x)","application-specific error (code %d)" }; /* * Rather messy ... too bad C doesn't have function-local functions ... */ static void handle_error(Q_DSC *dsc,int size,unsigned char *buf, unsigned char **stack,RSTACK *r_stack,int **pc,int *sp,int *rp, unsigned char **pos,unsigned char **end,Q_ERR_TYPE type,int value) { Q_ERR_DSC *error,**last; PREFIX(report)(Q_ERROR,q_err_msg[type],value); PREFIX(report)(Q_ERROR,"[ PC=%d SP=%d RP=%d, pos=%d end=%d ]",*pc-parse, *sp,*rp,*pos-buf,*end-buf); error = malloc(sizeof(Q_ERR_DSC)); if (!error) { perror("out of memory"); exit(0); } error->type = type; for (last = &dsc->errors; *last; last = &(*last)->next); *last = error; error->next = NULL; if (!pc) return; error->pc = *pc-parse; error->offset = *pos-buf; error->value = value; if (*rp) { (*rp)--; error->id = r_stack[*rp].pc[0]; error->start = r_stack[*rp].pos-buf; *sp = r_stack[*rp].sp; *pos = r_stack[*rp].end; error->length = *pos-r_stack[*rp].pos; error->group = r_stack[*rp].pc[1]; *pc = parse+r_stack[*rp].pc[2]; } else { error->id = 0; error->start = 0; error->length = size; error->group = 0; *sp = 0; *pc = parse+sizeof(parse)/sizeof(*parse)-1; *pos = buf+size; } } #define ERROR(type,value) \ handle_error(dsc,size,buf,stack,r_stack,&pc,&sp,&rp,&pos,&end,type,value) static int _q_parse(Q_DSC *dsc,unsigned char *buf,int size) { RSTACK r_stack[LENGTH_R_STACK]; unsigned char *stack[LENGTH_STACK]; unsigned char *pos,*end; int *pc; int i,sp,rp; end = buf+size; pos = buf; pc = parse; sp = rp = 0; while (1) { PREFIX(report)(Q_DEBUG,"%d(%d):",pc-parse,pos-buf); switch (*pc++) { #ifdef DUMP_MODE case OP_DUMP: { unsigned long value; int len; for (i = dump_fields[*pc].level; i; i--) DUMP(" "); DUMP("%s =",dump_fields[*pc++].name); len = *pc == OP_COPYVAR ? (end-pos)*8 : pc[3]; if (len <= 32) { const SYM_NAME *sym; value = q_get(pos,pc[2] & 7,len); if (!(sym = dump_fields[pc[-1]].sym)) DUMP(" %ld (0x%lx)\n",value,value); else { while (sym->name) if (sym->value == value) break; else sym++; if (sym->name) DUMP(" %s\n",sym->name); else DUMP(" %ld (0x%lx)\n",value,value); } } else { for (i = 0; i < len/8; i++) DUMP(" %02x",pos[i]); DUMP("\n"); } } break; #endif case OP_COPY: if (pos+*pc > end) { ERROR(qet_space,end-pos); continue; } PREFIX(report)(Q_DEBUG,"copy %d %d %d",pc[1],pos-buf,pc[2]); q_copy(pos,pc[1] & 7,dsc->data+(pc[1] >> 3),pc[2]); if (q_dump) { for (i = 0; i < 20; i++) fprintf(stderr,"%02X ",dsc->data[i]); putc('\n',stderr); } pos += *pc; pc += 3; break; case OP_COPYVAR: { int len; len = end-pos; if (len > pc[2]) len = pc[2]; memcpy(dsc->data+pc[1]/8,pos,(size_t) len); PREFIX(report)(Q_DEBUG,"len %d for %d",len,*pc); dsc->length[*pc] = len; pos += len; pc += 3; break; } case OP_BEGIN_LEN: if (pos+*pc > end) { ERROR(qet_space,end-pos); continue; } if (sp == LENGTH_STACK) PREFIX(report)(Q_FATAL,"length stack overflow"); stack[sp] = end; end = pos+q_get(pos,pc[1] & 7,pc[2])+*pc; if (end > stack[sp]) PREFIX(report)(Q_FATAL,"length has grown"); pos += *pc; sp++; pc += 3; break; case OP_BEGIN_REC: PREFIX(report)(Q_DEBUG,"begin_rec pc %d sp %d pos %d end %d", pc-parse,sp,pos-buf,end-buf); if (rp == LENGTH_R_STACK) PREFIX(report)(Q_FATAL,"recovery stack overflow"); r_stack[rp].pc = pc; r_stack[rp].sp = sp; r_stack[rp].pos = pos; r_stack[rp].end = end; rp++; pc += 3; break; case OP_END_LEN: if (!sp--) PREFIX(report)(Q_FATAL,"length stack underflow"); end = stack[sp]; break; case OP_END_REC: PREFIX(report)(Q_DEBUG,"end_rec"); if (!rp--) PREFIX(report)(Q_FATAL,"recovery stack underflow"); break; case OP_CASE: { int len,value,group; if (pos+*pc > end) { ERROR(qet_space,end-pos); continue; } value = q_get(pos,pc[1] & 7,pc[2]); pos += *pc; pc += 3; for (len = *pc++; len; len--) if (*pc != value && *pc != -1) pc += 3; else { pc++; if (*pc != -1 && q_test((unsigned char *) dsc->group_present,*pc)) { pc += 2; continue; } for (group = *pc++; group != -1; group = groups[group].parent) q_set((unsigned char *) dsc->group_present, group); pc += *pc+1; break; } if (!len) { ERROR(qet_case,value); continue; } } break; case OP_JUMP: pc += *pc+1; break; case OP_IFEND: PREFIX(report)(Q_DEBUG,"ifend - %d/%d",pos-buf,end-buf); if (pos == end) pc += *pc; pc++; break; case OP_ABORT: ERROR(qet_abort,*pc); continue; case OP_END: return dsc->errors ? -1 : 0; default: PREFIX(report)(Q_FATAL,"unrecognized opcode %d",pc[-1]); return -1; /* for gcc */ } } } #define GROUP_STACK_SIZE 100 /* make sure it's big enough ... */ static void fixups(Q_DSC *dsc) { int gs[GROUP_STACK_SIZE]; Q_ERR_DSC *walk; int gp,i,j; for (walk = dsc->errors; walk; walk = walk->next) { gs[gp = 0] = walk->group; q_clear((unsigned char *) dsc->group_present,walk->group); for (i = walk->group+1; i < Q_GROUPS; i++) { while (groups[i].parent != gs[gp]) if (!gp--) break; if (gp < 0) break; gs[++gp] = i; q_clear((unsigned char *) dsc->group_present,i); } for (j = 0; j < Q_FIELDS; j++) if (fields[j].parent == walk->group) break; while (j < Q_FIELDS && fields[j].parent < i) { q_clear(dsc->field_present,j); j++; } } } static int q_parse(Q_DSC *dsc,unsigned char *buf,int size) { int error; int j,i; int *p; if (q_dump) for (j = 0; j < 100; j += 20) { fprintf(stderr,"%3d:",j); for (i = 0; i < 20; i++) fprintf(stderr," %02X",dsc->data[i+j]); putc('\n',stderr); } error = _q_parse(dsc,buf,size); if (error) { fixups(dsc); return error; } if (q_dump) { putc('\n',stderr); for (j = 0; j < 100; j += 20) { fprintf(stderr,"%3d:",j); for (i = 0; i < 20; i++) fprintf(stderr," %02X",dsc->data[i+j]); putc('\n',stderr); } for (i = 0; i < Q_GROUPS; i++) if (q_test((unsigned char *) dsc->group_present,i)) for (p = groups[i].required; p && *p != -1; p++) fprintf(stderr,"%d: %ld / 0x%lx\n",*p, q_get(dsc->data,fields[*p].pos,fields[*p].size), q_get(dsc->data,fields[*p].pos,fields[*p].size)); } return 0; } int PREFIX(open)(Q_DSC *dsc,void *buf,int size) { int error; dsc->buffer = NULL; error = q_init(dsc); if (error) { handle_error(dsc,size,buf,NULL,NULL,NULL,NULL,NULL,NULL,NULL,qet_init, 0); return error; } return q_parse(dsc,buf,size); } #ifndef DUMP_MODE int q_create(Q_DSC *dsc,void *buf,int size) { dsc->buffer = buf; dsc->buf_size = size; return q_init(dsc); } #endif int PREFIX(close)(Q_DSC *dsc) { int size; size = 0; /* for gcc */ #ifndef DUMP_MODE if (dsc->buffer && !dsc->error) size = q_compose(dsc,dsc->buffer,dsc->buf_size); #endif if (dsc->data) free(dsc->data); if (dsc->required) free(dsc->required); if (dsc->field_present) free(dsc->field_present); if (dsc->group_present) free(dsc->group_present); if (dsc->length) free(dsc->length); if (dsc->field_map) free(dsc->field_map); if (dsc->group_map) free(dsc->group_map); while (dsc->errors) { Q_ERR_DSC *next; next = dsc->errors->next; free(dsc->errors); dsc->errors = next; } return dsc->error ? -1 : dsc->buffer ? size : 0; } #ifdef STANDALONE int main(int argc,const char **argv) { unsigned char msg[5000]; /* should be large enough for that */ Q_DSC dsc; int len,c; debug = argc != 1; len = 0; while (scanf("%x",&c) == 1) msg[len++] = c; qd_start(); qd_open(&dsc,msg,len); qd_close(&dsc); return 0; } #endif linux-atm-2.5.1/src/q2931/qlib.h0000644000200100001440000001151111235645151014730 0ustar chasusers/* qlib.h - run-time library */ /* Written 1995-1997 by Werner Almesberger, EPFL-LRC */ #ifndef QLIB_H #define QLIB_H #ifdef DUMP_MODE #define PREFIX(x) qd_##x #else #define PREFIX(x) q_##x #endif /* * Severity codes used by the run-time library. Surprisingly, they happen to * have the same numerical values as their corresponding atmsigd counterparts. */ #define Q_DEBUG 3 #define Q_ERROR 0 #define Q_FATAL -1 #ifndef DUMP_MODE extern int q_dump; #endif extern void q_report(int severity,const char *msg,...); #ifdef DUMP_MODE #ifndef STANDALONE extern void qd_dump(const char *fmt,...); #endif extern void qd_report(int severity,const char *msg,...); #endif typedef enum { qet_catch_zero, qet_space, /* length of message area exceeds length of surroundings */ qet_case, /* case value not found */ qet_abort, /* user abort */ qet_init /* fatal initialization error. DO NOT PROCEED ! */ } Q_ERR_TYPE; typedef struct _q_err_dsc { Q_ERR_TYPE type; /* error type code */ int pc; /* PC when error was discovered */ int offset; /* offset into message when error was discovered */ int value; /* additional value (optional) */ int id; /* user-assigned id */ int start; /* recovery area */ int length; int group; /* group that failed (for fixups) */ struct _q_err_dsc *next; } Q_ERR_DSC; typedef struct { unsigned char *data; unsigned char *required; unsigned char *field_present; unsigned long *group_present; int *length; int *field_map; int *group_map; /* @@@ useless overhead until we allow nested structures */ void *buffer; int buf_size; int error; Q_ERR_DSC *errors; } Q_DSC; /* * *_START intializes global data structures and needs to be invoked before any * other function of qlib. */ void PREFIX(start)(void); /* * *_OPEN opens an existing Q.2931 message (pointed to be BUF and of size * SIZE), parses its contents, and initializes the descriptor for further use * by Q_PRESENT, etc. *_OPEN returns zero on success, -1 if any problem has * been discovered with the message. In the latter case, the error list on * DSC.errors should be examined. Note that parts of the message may still be * valid and can be accessed with the usual functions. (Actually, because * invalid or unrecognized fields will simply be treated as absent, code that * tests for presence of mandatory elements does not need to examine the * error list. Not that, however, an error report of type QET_INIT carries * incomplete information and must not be examined beyond the TYPE element. * Also, _all_ calls to Q_PRESENT will return zero in this case.) The * descriptor must be closed with *_CLOSE even if *_OPEN fails. */ int PREFIX(open)(Q_DSC *dsc,void *buf,int size); /* * Q_CREATE initializes the descriptor DSC points to. It also registers the * message area (to be used by Q_CLOSE) starting at BUF and of size SIZE in the * descriptor. Q_CREATE returns zero on success, -1 on failure. *_CLOSE does * not need to be called if Q_CREATE fails. */ int q_create(Q_DSC *dsc,void *buf,int size); /* * Deallocates resources from the specified descriptor. If the descriptor was * initialized by Q_CREATE and if no error occurred, the message is composed * and *_CLOSE returns its size in bytes. In all other cases, *_CLOSE returns * zero on success, -1 on failure. Note that *_CLOSE also clears the error * list. */ int PREFIX(close)(Q_DSC *dsc); /* * Q_ASSIGN sets the specified field to VALUE. Q_ASSIGN can only be used with * fixed-length fields of a size less than sizeof(unsigned long)*8 bits. Note * that the values of fields with associated groups can't be changed. */ void q_assign(Q_DSC *dsc,int field,unsigned long value); /* * Like Q_ASSIGN, but for all fields (without associated groups) whose size is * a multiple of one byte. */ void q_write(Q_DSC *dsc,int field,const void *buf,int size); /* * Checks the presence of the specified field (QF_*) or group (QG_*). Returns * one if the field or group is present, zero otherwise. */ int q_present(const Q_DSC *dsc,int field); /* * Returns the value of the specified fields. Be warned that Q_FETCH does not * check if the fields is present or if its content fits in an unsigned long. */ unsigned long q_fetch(const Q_DSC *dsc,int field); /* * Like Q_FETCH, but for byte-aligned fields of arbitrary size (as long as it's * a multiple of one byte). BUF points to a buffer and SIZE is its size. Q_READ * returns how many bytes were written to that buffer. */ int q_read(Q_DSC *dsc,int field,void *buf,int size); /* * Returns the size (in bytes) of the specified variable-length field. */ int q_length(const Q_DSC *dsc,int field); /* * Enables all instances which are controlled by the specified group. * It is an error to use a group that controls no instances. */ void q_instance(Q_DSC *dsc,int group); #endif linux-atm-2.5.1/src/q2931/qtest.c0000644000200100001440000000142011235645151015132 0ustar chasusers#if HAVE_CONFIG_H #include #endif #include #include int main(void) { int error,i,j,u; error = 0; for (i = 0; fields[i]; i++) for (j = i+1; fields[j]; j++) if (!strcmp(fields[i],fields[j])) { fprintf(stderr,"collision: field \"%s\"\n",fields[i]); error = 1; } for (i = 0; groups[i]; i++) for (j = i+1; groups[j]; j++) if (!strcmp(groups[i],groups[j])) { fprintf(stderr,"collision: group \"%s\"\n",groups[i]); error = 1; } for (u = 0; unique[u]; u++) for (i = 0; unique[u][i] != -1; i++) for (j = i+1; unique[u][j] != -1; j++) if (unique[u][i] == unique[u][j]) { fprintf(stderr,"collision: value %d in collection %d\n", unique[u][i],u); error = 1; } return error; } linux-atm-2.5.1/src/q2931/script.awk0000644000200100001440000000012411245750753015644 0ustar chasusers/^# 1 "[^"]*\/linux\/atmsap.h" / { print substr($3, 2, length($3) - 2); nextfile; } linux-atm-2.5.1/src/q2931/uni.h0000644000200100001440000005176511235645151014613 0ustar chasusers/* uni.h - Various Q.2931/Q.2971/Q.2963.1/UNI 3.x/UNI 4.0 constants */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ /* * Note: some values don't appear in UNI 3.0 or 3.1 but are taken from Q.2931 * and related ITU documents. */ #ifndef UNI_H #define UNI_H /* Maximum message size */ #define MAX_Q_MSG 1000 /* Protocol discriminator */ #define Q2931_PROTO_DSC 9 /* Q.2931 user-network call/connection control message */ /* Coding Standards */ #define Q2931_CS_ITU 0 /* ITU-T standardized */ #define Q2931_CS_NET 3 /* Standard defined for the network */ /* Message types */ #define ATM_MSG_NATIONAL 0x00 /* National specific message escape */ #define ATM_MSG_SETUP 0x05 /* SETUP */ #define ATM_MSG_ALERTING 0x01 /* ALERTING */ #define ATM_MSG_CALL_PROC 0x02 /* CALL PROCEEDING */ #define ATM_MSG_CONNECT 0x07 /* CONNECT */ #define ATM_MSG_CONN_ACK 0x0f /* CONNECT ACKNOWLEDGE */ #define ATM_MSG_RESTART 0x46 /* RESTART */ #define ATM_MSG_RELEASE 0x4d /* RELEASE */ #define ATM_MSG_REST_ACK 0x4e /* RESTART ACKNOWLEDGE */ #define ATM_MSG_REL_COMP 0x5a /* RELEASE COMPLETE */ #define ATM_MSG_NOTIFY 0x6e /* NOTIFY */ #define ATM_MSG_STATUS_ENQ 0x75 /* STATUS ENQUIRY */ #define ATM_MSG_STATUS 0x7d /* STATUS */ #define ATM_MSG_ADD_PARTY 0x80 /* ADD PARTY */ #define ATM_MSG_ADD_PARTY_ACK 0x81 /* ADD PARTY ACKNOWLEDGE */ #define ATM_MSG_ADD_PARTY_REJ 0x82 /* ADD PART REJECT */ #define ATM_MSG_PARTY_ALERT 0x85 /* PARTY ALERTING */ #define ATM_MSG_DROP_PARTY 0x83 /* DROP PARTY */ #define ATM_MSG_DROP_PARTY_ACK 0x84 /* DROP PARTY ACKNOWLEDGE */ #define ATM_MSG_MODIFY_REQ 0x88 /* MODIFY REQUEST */ #define ATM_MSG_MODIFY_ACK 0x89 /* MODIFY ACKNOWLEDGE */ #define ATM_MSG_MODIFY_REJ 0x8a /* MODIFY REJECT */ #define ATM_MSG_CONN_AVAIL 0x8b /* CONNECTION AVAILABLE */ #define ATM_MSG_LEAF_FAILURE 0x90 /* LEAF SETUP FAILURE */ #define ATM_MSG_LEAF_REQUEST 0x91 /* LEAF SETUP REQUEST */ #define ATM_MSG_RESERVED 0xff /* reserved for EVEN MORE msg types */ /* Information element identifiers */ #define ATM_IE_CAUSE 0x08 /* Cause */ #define ATM_IE_CALL_STATE 0x14 /* Call state */ #define ATM_IE_NOTIFY 0x27 /* Notification indicator */ #define ATM_IE_E2E_TDL 0x42 /* End-to-end transit delay */ #define ATM_IE_EPR 0x54 /* Endpoint reference */ #define ATM_IE_EP_STATE 0x55 /* Endpoint state */ #define ATM_IE_AAL 0x58 /* ATM adaption layer parameters */ #define ATM_IE_TD 0x59 /* ATM traffic descriptor */ #define ATM_IE_CONN_ID 0x5a /* Connection identifier */ #define ATM_IE_OAM_TD 0x5b /* OAM traffic descriptor */ #define ATM_IE_QOS 0x5c /* Quality of service parameter */ #define ATM_IE_BHLI 0x5d /* Broadband high layer information */ #define ATM_IE_BBCAP 0x5e /* Broadband bearer capability */ #define ATM_IE_BLLI 0x5f /* Broadband low-layer information */ #define ATM_IE_BBS_COMP 0x62 /* Broadband sending complete */ #define ATM_IE_BBREP 0x63 /* Broadband repeat indicator */ #define ATM_IE_CGPN 0x6c /* Calling party number */ #define ATM_IE_CGPS 0x6d /* Calling party subaddress */ #define ATM_IE_CDPN 0x70 /* Called party number */ #define ATM_IE_CDPS 0x71 /* Called party subaddress */ #define ATM_IE_TNS 0x78 /* Transit network selection */ #define ATM_IE_RESTART 0x79 /* Restart indicator */ #define ATM_IE_GIT 0x7f /* Generic identifier transport */ #define ATM_IE_ALT_TD 0x81 /* Alternate ATM traffic descriptor */ #define ATM_IE_MIN_TD 0x80 /* Minimum acceptable ATM traffic desc. */ #define ATM_IE_ABR_SET_PRM 0x84 /* ABR setup parameters */ #define ATM_IE_BBRT 0x89 /* Broadband report type */ #define ATM_IE_ABR_ADD_PRM 0xe4 /* ABR additional parameters */ #define ATM_IE_LIJ_ID 0xe8 /* Leaf initiated join call identifer */ #define ATM_IE_LIJ_PRM 0xe9 /* Leaf initiated join parameters */ #define ATM_IE_LEAF_SN 0xea /* Leaf sequence number */ #define ATM_IE_SCOPE_SEL 0xeb /* Connection Scope Selection */ #define ATM_IE_EQOS 0xec /* Extended QOS parameters */ /* Cause: Location */ #define ATM_LOC_USER 0 /* user */ #define ATM_LOC_PRV_LOC 1 /* private network serving the local user */ #define ATM_LOC_PUB_LOC 2 /* public network serving the local user */ #define ATM_LOC_TRANS_NET 3 /* transit network */ #define ATM_LOC_PRV_RMT 4 /* public network serving the remote user */ #define ATM_LOC_PUB_RMT 5 /* private network serving the remote user */ #define ATM_LOC_INT_NET 7 /* international network */ #define ATM_LOC_BEYOND_IWP 10 /* network beyond interworking point */ /* Cause: Cause values */ /* ----------------------------------- normal event */ #define ATM_CV_UNALLOC 1 /* unallocated (unassigned) number */ #define ATM_CV_NO_ROUTE_TNS 2 /* no route to specified transit network */ #define ATM_CV_NO_ROUTE_DEST 3 /* no route to destination */ #if defined(UNI30) || defined(DYNAMIC_UNI) #define ATM_CV_CI_UNACC 10 /* VPCI/VCI unacceptable */ #endif #if defined(UNI31) || defined(UNI40) || defined(DYNAMIC_UNI) #define ATM_CV_NORMAL_CLEAR 16 /* normal call clearing */ #endif #define ATM_CV_USER_BUSY 17 /* user busy */ #define ATM_CV_NO_USER_RESP 18 /* no user responding */ #define ATM_CV_CALL_REJ 21 /* call rejected */ #define ATM_CV_NUM_CHANGED 22 /* number changed */ #define ATM_CV_REJ_CLIR 23 /* user rejects all calls with calling line identification restriction (CLIR)*/ #define ATM_CV_DEST_OOO 27 /* destination out of order */ #define ATM_CV_INV_NUM_FMT 28 /* invalid number format (address incomplete) */ #define ATM_CV_RESP_STAT_ENQ 30 /* response to STATUS ENQUIRY */ #define ATM_CV_NORMAL_UNSPEC 31 /* normal, unspecified */ /* ----------------------------------- resource unavailable */ #define ATM_CV_CI_UNAVAIL 35 /* requested VPCI/VCI unavailable */ #if defined(UNI31) || defined(UNI40) || defined(DYNAMIC_UNI) #define ATM_CV_CI_FAIL 36 /* VPCI/VCI assignment failure */ #define ATM_CV_UCR_UNAVAIL_NEW 37 /* user cell rate not available (>3.0)*/ #endif #define ATM_CV_NET_OOO 38 /* network out of order - unused */ #define ATM_CV_TEMP_FAIL 41 /* temporary failure */ #define ATM_CV_ACC_INF_DISC 43 /* access information discarded */ #define ATM_CV_NO_CI 45 /* no VPCI/VCI available */ #define ATM_CV_RES_UNAVAIL 47 /* resource unavailable, unspecified */ /* ----------------------------------- service or option not available */ #define ATM_CV_QOS_UNAVAIL 49 /* Quality of Service unavailable */ #if defined(UNI30) || defined(ALLOW_UNI30) || defined(DYNAMIC_UNI) #define ATM_CV_UCR_UNAVAIL_OLD 51 /* user cell rate not available (3.0) */ #endif #define ATM_CV_BBCAP_NOT_AUTH 57 /* bearer capability not authorized */ #define ATM_CV_BBCAP_UNAVAIL 58 /* bearer capability not presently available */ #define ATM_CV_UNAVAILABLE 63 /* service or option not available, unspecified */ /* ----------------------------------- service or option not implemented */ #define ATM_CV_BBCAP_NOT_IMPL 65 /* bearer capability not implemented */ #define ATM_CV_UNSUPP_TRAF_PRM 73 /* unsupported combination of traffic parameters */ #if defined(UNI31) || defined(UNI40) || defined(DYNAMIC_UNI) #define ATM_CV_AAL_UNSUPP_NEW 78 /* AAL param. cannot be supported (>3.0) */ #endif /* ----------------------------------- invalid message */ #define ATM_CV_INV_CR 81 /* invalid call reference value */ #define ATM_CV_NO_SUCH_CHAN 82 /* identified channel does not exist */ #define ATM_CV_INCOMP_DEST 88 /* incompatible destination */ #define ATM_CV_INV_EPR 89 /* invalid endpoint reference */ #define ATM_CV_INV_TNS 91 /* invalid transit network selection */ #define ATM_CV_TOO_MANY_APR 92 /* too many pending add party requests */ #if defined(UNI30) || defined(DYNAMIC_UNI) #define ATM_CV_AAL_UNSUPP_OLD 93 /* AAL param. cannot be supported (3.0) */ #endif /* ----------------------------------- protocol error */ #define ATM_CV_MAND_IE_MISSING 96 /* mandatory information element is missing */ #define ATM_CV_UNKNOWN_MSG_TYPE 97 /* message type non-existent or not implemented */ #define ATM_CV_UNKNOWN_IE 99 /* information element non-existent or not implemented */ #define ATM_CV_INVALID_IE 100 /* invalid information element contents */ #define ATM_CV_INCOMP_MSG 101 /* message not compatible with call state*/ #define ATM_CV_TIMER_EXP 102 /* recovery on timer expiry */ #define ATM_CV_BAD_MSG_LEN 104 /* incorrect message length */ #define ATM_CV_PROTOCOL_ERROR 111 /* protocol error, unspecified */ /* Cause: P-U values */ #define ATM_PU_PROVIDER 0 /* Network service - Provider */ #define ATM_PU_USER 1 /* Network service - User */ /* Cause: N-A values */ #define ATM_NA_NORMAL 0 /* Normal */ #define ATM_NA_ABNORMAL 1 /* Abnormal */ /* Cause: Condition */ #define ATM_COND_UNKNOWN 0 /* Unknown */ #define ATM_COND_PERMANENT 1 /* Permanent */ #define ATM_COND_TRANSIENT 2 /* Transient */ /* Cause: Reject reason */ #define ATM_RSN_USER 0 /* User specific */ #define ATM_RSN_IE_MISS 1 /* Information element missing */ #define ATM_RSN_IE_INSUFF 2 /* Information element contents are not sufficient */ /* Restart Indicator class values */ #define ATM_RST_IND_VC 0 /* Indicated virtual channel */ #define ATM_RST_ALL_VC 2 /* All virtual channels controlled by the Layer 3 entity which sends the RESTART message */ /* Action Indicator for messages */ #define ATM_AI_MSG_CLEAR 0 /* clear call */ #define ATM_AI_MSG_DSC_IGN 1 /* discard and ignore */ #define ATM_AI_MSG_DSC_STAT 2 /* discard and report status */ #define ATM_AI_MSG_RSV 3 /* reserved */ /* Action Indicator for IEs */ #define ATM_AI_IE_CLEAR 0 /* clear call */ #define ATM_AI_IE_DSCIE_PRC 1 /* discard IE and proceed */ #define ATM_AI_IE_DSCIE_STAT 2 /* discard IE, procees, and report status */ #define ATM_AI_IE_DSCMSG_IGN 5 /* discard message, and ignore */ #define ATM_AI_IE_DSCMSG_STAT 6 /* discard message, and report status */ /* Type of number */ #define ATM_TON_UNKNOWN 0 /* unknown */ #define ATM_TON_INTRNTNL 1 /* international number */ #define ATM_TON_NATIONAL 2 /* national number */ #define ATM_TON_NETWORK 3 /* network specific number */ #define ATM_TON_SUBSCRIBER 4 /* subscriber number */ #define ATM_TON_ABBRV 6 /* abbreviated number */ /* Numbering/addressing plan */ #define ATM_NP_UNKNOWN 0 /* unknown */ #define ATM_NP_E164 1 /* ISDN numbering plan (E.164) */ #define ATM_NP_AEA 2 /* ATM endsystem address */ #define ATM_NP_PRIVATE 9 /* private numbering plan */ /* Type of sub-address */ #define ATM_SAT_NSAP 0 /* NSAP (Rec. X.213 ISO/IEC 8348) */ #define ATM_SAT_AEA 1 /* ATM endsystem address */ #define ATM_SAT_USER 2 /* user-specified */ /* Presentation indicator */ #define ATM_PRS_ALLOW 0 /* presentation allowed */ #define ATM_PRS_RESTRICT 1 /* presentation restricted */ #define ATM_PRS_NOTAVL 2 /* number not available */ /* Screening indicator */ #define ATM_SCRN_UP_NS 0 /* user-provided, not screened */ #define ATM_SCRN_UP_VP 1 /* user-provided, verified and passed */ #define ATM_SCRN_UP_VF 2 /* user-provided, verified and failed */ #define ATM_SCRN_NP 3 /* network provided */ /* VP-associated signalling */ #define ATM_VPA_VPA 0 /* VP-associated signalling */ #define ATM_VPA_EXPL 1 /* explicit indication of VPCI */ /* Preferred/exclusive */ #define ATM_POE_EXC_EXC 0 /* exclusive VPCI; exclusive VCI */ #define ATM_POE_EXC_ANY 1 /* exclusive VPCI; any VCI */ #if defined(UNI40) || defined(DYNAMIC_UNI) #define ATM_POE_EXC_NO 2 /* exclusive VPCI; no VCI (used for VPCs) */ #endif /* Traffic descriptor tags */ #define ATM_TD_FW_PCR_0 0x82 /* Forward peak cell rate (CLP=0) */ #define ATM_TD_BW_PCR_0 0x83 /* Backward peak cell rate (CLP=0) */ #define ATM_TD_FW_PCR_01 0x84 /* Forward peak cell rate (CLP=0+1) */ #define ATM_TD_BW_PCR_01 0x85 /* Backward peak cell rate (CLP=0+1) */ #define ATM_TD_FW_SCR_0 0x88 /* Forward sustained cell rate (CLP=0) */ #define ATM_TD_BW_SCR_0 0x89 /* Backward sustained cell rate (CLP=0) */ #define ATM_TD_FW_SCR_01 0x90 /* Forward sustained cell rate (CLP=0+1) */ #define ATM_TD_BW_SCR_01 0x91 /* Backward sustained cell rate (CLP=0+1)*/ #define ATM_TD_FW_MCR_01 0x92 /* Forward ABR min. cell rate (CLP=0+1) */ #define ATM_TD_BW_MCR_01 0x93 /* Backward ABR min. cell rate (CLP=0+1) */ #define ATM_TD_FW_MBS_0 0xa0 /* Forward maximum burst size (CLP=0) */ #define ATM_TD_BW_MBS_0 0xa1 /* Backward maximum burst size (CLP=0) */ #define ATM_TD_FW_MBS_01 0xb0 /* Forward maximum burst size (CLP=0+1) */ #define ATM_TD_BW_MBS_01 0xb1 /* Backward maximum burst size (CLP=0+1) */ #define ATM_TD_BEST_EFFORT 0xbe /* Best effort indicator */ #define ATM_TD_TM_OPT 0xbf /* Traffic management options */ /* Frame discard forward/backward */ #define ATM_FD_NO 0 /* No Frame discard allowed */ #define ATM_FD_YES 1 /* Frame discard allowed */ /* Tagging forward/backward */ #define ATM_TAG_NO 0 /* Tagging not requested */ #define ATM_TAG_YES 1 /* Tagging requested */ /* Bearer class */ #define ATM_BC_BCOB_A 1 /* BCOB-A */ #define ATM_BC_BCOB_C 3 /* BCOB-C */ #define ATM_BC_BCOB_X 16 /* BCOB-X */ #define ATM_BC_TVP 24 /* Transparent VP service */ /* ATM Transfer Capability */ #define ATM_TC_CBR 0x05 /* CBR */ #define ATM_TC_CBR_CLR 0x07 /* CBR with CLR commitment on CLP=0+1 */ #define ATM_TC_VBR_RT 0x09 /* Real time VBR */ #define ATM_TC_VBR_RT_CLR 0x13 /* Real time VBR w/ CLR comm. on CLP=0+1 */ #define ATM_TC_VBR_NRT 0x0a /* Non-real time VBR */ #define ATM_TC_VBR_NRT_CLR 0x0b /* Non-real time VBR w/ CLR com. CLP=0+1 */ #define ATM_TC_ABR 0x0c /* ABR */ #define ATM_TC_VBR_NRT_R00 0x00 /* Non-real time VBR (reception only) */ #define ATM_TC_VBR_RT_R01 0x01 /* Real time VBR (reception only) */ #define ATM_TC_VBR_NRT_R02 0x02 /* Non-real time VBR (reception only) */ #define ATM_TC_CBR_R04 0x04 /* CBR (reception only) */ #define ATM_TC_CBR_R06 0x06 /* CBR (reception only) */ #define ATM_TC_VBR_NRT_R08 0x08 /* Non-real time VBR (reception only) */ #define ATM_TC_RSV_20 0x20 /* Reserved for backward compatibility */ #define ATM_TC_RSV_21 0x21 /* Reserved for backward compatibility */ #define ATM_TC_RSV_22 0x22 /* Reserved for backward compatibility */ #define ATM_TC_RSV_24 0x24 /* Reserved for backward compatibility */ #define ATM_TC_RSV_25 0x25 /* Reserved for backward compatibility */ #define ATM_TC_RSV_26 0x26 /* Reserved for backward compatibility */ #define ATM_TC_RSV_28 0x28 /* Reserved for backward compatibility */ #define ATM_TC_RSV_29 0x29 /* Reserved for backward compatibility */ #define ATM_TC_RSV_2A 0x2a /* Reserved for backward compatibility */ #define ATM_TC_RSV_40 0x40 /* Reserved for backward compatibility */ #define ATM_TC_RSV_41 0x41 /* Reserved for backward compatibility */ #define ATM_TC_RSV_42 0x42 /* Reserved for backward compatibility */ #define ATM_TC_RSV_44 0x44 /* Reserved for backward compatibility */ #define ATM_TC_RSV_45 0x45 /* Reserved for backward compatibility */ #define ATM_TC_RSV_46 0x46 /* Reserved for backward compatibility */ #define ATM_TC_RSV_48 0x48 /* Reserved for backward compatibility */ #define ATM_TC_RSV_49 0x49 /* Reserved for backward compatibility */ #define ATM_TC_RSV_4A 0x4a /* Reserved for backward compatibility */ #define ATM_TC_RSV_60 0x60 /* Reserved for backward compatibility */ #define ATM_TC_RSV_61 0x61 /* Reserved for backward compatibility */ #define ATM_TC_RSV_62 0x62 /* Reserved for backward compatibility */ #define ATM_TC_RSV_64 0x64 /* Reserved for backward compatibility */ #define ATM_TC_RSV_65 0x65 /* Reserved for backward compatibility */ #define ATM_TC_RSV_66 0x66 /* Reserved for backward compatibility */ #define ATM_TC_RSV_68 0x68 /* Reserved for backward compatibility */ #define ATM_TC_RSV_69 0x69 /* Reserved for backward compatibility */ #define ATM_TC_RSV_6A 0x6a /* Reserved for backward compatibility */ #ifdef OBSOLETE_DEFINITIONS_FOLLOW /* Traffic type */ ATM_TT_NO_IND 0 /* no indication */ ATM_TT_CBR 1 /* constant bit rate */ ATM_TT_VBR 2 /* variable bit rate */ /* Timing requirements */ ATM_TR_NO_IND 0 /* no indication */ ATM_TR_E2E_REQ 1 /* end-to-end timing required */ ATM_TR_E2E_NRQ 2 /* end-to-end timing not required */ #endif /* Susceptibility to clipping */ #define ATM_STC_NO 0 /* not susceptible to clipping */ #define ATM_STC_YES 1 /* susceptible to clipping */ /* User-plane connection configuration */ #define ATM_UPCC_P2P 0 /* point-to-point */ #define ATM_UPCC_P2M 1 /* point-to-multipoint */ /* Instruction field flags */ #define ATM_FLAG_NO 0 /* instruction field not significant */ #define ATM_FLAG_YES 1 /* follow explicit instructions */ /* AAL parameter tags */ #define ATM_AALP_FW_MAX_SDU 0x8c /* Forward maximum CPCS-SDU size */ #define ATM_AALP_BW_MAX_SDU 0x81 /* Backward maximum CPCS-SDU size */ #define ATM_AALP_AAL_MODE 0x83 /* AAL mode (UNI 3.0 only) */ #define ATM_AALP_SSCS 0x84 /* SSCS type */ /* Transit delay identifiers */ #define ATM_TDL_CUM 0x01 /* Cumulative transit delay value */ #define ATM_TDL_E2EMAX 0x03 /* Maximum end-to-end transit delay value*/ #define ATM_TDL_NGI 0x0a /* Network generated indicator */ /* Transit network identification */ #define ATM_TNI_USER 0x00 /* User-specified */ #define ATM_TNI_NNI 0x02 /* National network identification */ #define ATM_TNI_INI 0x04 /* International network identification */ /* Network identification plan */ #define ATM_NIP_UNKNOWN 0x00 /* Unknown */ #define ATM_NIP_CARRIER 0x01 /* Carrier identification code */ #define ATM_NIP_DATA 0x03 /* Data network id. code (X.121) */ /* Shaping indicator */ #define ATM_SHI_NONE 0x00 /* No user specified requirement */ #define ATM_SHI_NOAGG 0x01 /* Aggr. shaping of user & OAM not all. */ /* Compliance indicator */ #define ATM_OCI_OPT 0x00 /* Use of e2e OAM F5 flow is optional */ #define ATM_OCI_MAND 0x01 /* Use of e2e OAM F5 flow is mandatory */ /* User-network fault management indicator */ #define ATM_UNFM_NONE 0x00 /* No user-orig. fault mg. indications */ #define ATM_UNFM_1CPS 0x01 /* Use of u-o fm. ind. w/ rate 1 cps */ /* End-to-end OAM F5 flow indicator */ #define ATM_OFI_0_0 0x00 /* 0% of cell rate (CLP=0+1) in ATM TD */ #define ATM_OFI_0_1 0x01 /* 0.1% of cell rate (CLP=0+1) in ATM TD */ #define ATM_OFI_1_0 0x04 /* 1% of cell rate (CLP=0+1) in ATM TD */ /* Identifier related standard/application */ #define ATM_IRS_DSMCC 0x01 /* DSM-CC ISO/IEC 13818-6 */ #define ATM_IRS_H245 0x02 /* Recommendation H.245 */ /* Identifier type */ #define ATM_IT_SESSION 0x01 /* Session */ #define ATM_IT_RESOURCE 0x02 /* Resource */ /* Leaf call identifier type */ #define ATM_LIT_ROOT 0x00 /* Root assigned */ /* (LIJ) screening indication */ #define ATM_LSI_NJ_NR 0x00 /* Network Join Without Root Notif. */ /* Type of connection scope */ #define ATM_TCS_ORGANIZATIONAL 0x00 /* Organizational */ /* Connection scope selection */ #define ATM_CSS_RSV_00 0x00 /* Reserved */ #define ATM_CSS_LOCAL 0x01 /* Local network */ #define ATM_CSS_LOCAL_P1 0x02 /* Local network plus one */ #define ATM_CSS_LOCAL_P2 0x03 /* Local network plus two */ #define ATM_CSS_SITE_M1 0x04 /* Site minus one */ #define ATM_CSS_SITE 0x05 /* Intra-site */ #define ATM_CSS_SITE_P1 0x06 /* Site plus one */ #define ATM_CSS_ORG_M1 0x07 /* Organization minus one */ #define ATM_CSS_ORG 0x08 /* Intra-organization */ #define ATM_CSS_ORG_P1 0x09 /* Organization plus one */ #define ATM_CSS_COM_M1 0x0a /* Community minus one */ #define ATM_CSS_COM 0x0b /* Intra-community */ #define ATM_CSS_COM_P1 0x0c /* Community plus one */ #define ATM_CSS_REG 0x0d /* Regional */ #define ATM_CSS_INTER 0x0e /* Inter-regional */ #define ATM_CSS_GLOBAL 0x0f /* Global */ /* Origin (of extended QOS) */ #define ATM_EQO_USER 0x00 /* Originating user */ #define ATM_EQO_NET 0x01 /* Intermediate network */ /* Extended QOS parameters */ #define ATM_EQP_ACC_FW_CDV 0x94 /* Acceptable fwd peak-to-peak CDV */ #define ATM_EQP_ACC_BW_CDV 0x95 /* Acceptable bwd peak-to-peak CDV */ #define ATM_EQP_CUM_FW_CDV 0x96 /* Cumulative fwd peak-to-peak CDV */ #define ATM_EQP_CUM_BW_CDV 0x97 /* Cumulative bwd peak-to-peak CDV */ #define ATM_EQP_ACC_FW_CLR 0xa2 /* Acceptable fwd cell loss ratio */ #define ATM_EQP_ACC_BW_CLR 0xa3 /* Acceptable bwd cell loss ratio */ /* ABR additional parameters */ #define ATM_AAP_FW_REC 0xc2 /* Forward additional parameters record */ #define ATM_AAP_BW_REC 0xc3 /* Backward additional parameters record */ /* ABR setup parameters */ #define ATM_ASP_FW_ICR 0xc2 /* Forward ABR initial cell rate, CLP01 */ #define ATM_ASP_BW_ICR 0xc3 /* Backward ABR initial cell rate, CLP01 */ #define ATM_ASP_FW_TBE 0xc4 /* Fwd ABR transient buffer exposure */ #define ATM_ASP_BW_TBE 0xc5 /* Bwd ABR transient buffer exposure */ #define ATM_ASP_CRF_RTT 0xc6 /* Cumulative RM fixed round trip time */ #define ATM_ASP_FW_RIF 0xc8 /* Forward rate increase factor */ #define ATM_ASP_BW_RIF 0xc9 /* Backward rate increase factor */ #define ATM_ASP_FW_RDF 0xca /* Forward rate decrease factor */ #define ATM_ASP_BW_RDF 0xcb /* Backward rate decrease factor */ /* Type of report (Q.2963.1) */ #define ATM_TOR_MOD_CONF 0x01 /* Modification confirmation */ /* The following constants tag message parser errors. */ #define RECOV_IND_IE 1 /* IE problem */ /* The following constants tag application-specific errors. */ #define RECOV_ASE_UNKNOWN_IE 1 /* unknown IE */ #endif linux-atm-2.5.1/src/q2931/Makefile.in0000644000200100001440000004014011304770376015702 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = q.out.o$(EXEEXT) qd.dump.o$(EXEEXT) check_PROGRAMS = q.test$(EXEEXT) subdir = src/q2931 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) q_out_o_SOURCES = q.out.c q_out_o_OBJECTS = q.out.$(OBJEXT) q_out_o_LDADD = $(LDADD) am_q_test_OBJECTS = qtest.$(OBJEXT) q_test_OBJECTS = $(am_q_test_OBJECTS) q_test_LDADD = $(LDADD) qd_dump_o_SOURCES = qd.dump.c qd_dump_o_OBJECTS = qd.dump.$(OBJEXT) qd_dump_o_LDADD = $(LDADD) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = q.out.c $(q_test_SOURCES) qd.dump.c DIST_SOURCES = q.out.c $(q_test_SOURCES) qd.dump.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ q_test_SOURCES = qtest.c uni.h q_test_DEPENDENCIES = q.test.c #TESTS = $(check_PROGRAMS) EXTRA_DIST = incl.pl mknl.pl msg.fmt TODO CLEANFILES = q.out.h q.out.c q.test.c qd.out.h qd.out.c qd.dump.c qd.test.c \ default.nl NLS = atm_ai_msg atm_ai_ie atm_loc atm_cv atm_pu atm_na atm_cond atm_ie \ atm_msg atm_np atm_ton atm_sat atm_prs atm_scrn atm_vpa atm_poe \ q2931_cs atm_td atm_bc atm_tc atm_stc atm_upcc q2931_proto atm_flag \ atm_aalp atm_fd atm_tag atm_l2 atm_l3 atm_tt atm_mc atm_hl atm_imd \ atm_tdl atm_tni atm_nip atm_shi atm_oci atm_unfm atm_ofi atm_irs \ atm_it atm_lit atm_lsi atm_tcs atm_css atm_eqo atm_eqp atm_aap \ atm_asp atm_tor SYMFILES = $(srcdir)/uni.h $(shell $(CC) $(CFLAGS) -E $(srcdir)/header.c | $(AWK) -f $(srcdir)/script.awk) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/q2931/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/q2931/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list q.test$(EXEEXT): $(q_test_OBJECTS) $(q_test_DEPENDENCIES) @rm -f q.test$(EXEEXT) $(LINK) $(q_test_OBJECTS) $(q_test_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/q.out.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qd.dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qtest.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am default.nl: mknl.pl $(SYMFILES) cat $(SYMFILES) | @PERL@ $(srcdir)/mknl.pl $(NLS) >default.nl || \ { rm -f default.nl; echo 1; } q.out.h q.out.c q.test.c: msg.fmt default.nl $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) - < $(srcdir)/msg.fmt | ../qgen/qgen qd.out.h qd.out.c qd.dump.c: msg.fmt default.nl $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) - < $(srcdir)/msg.fmt | ../qgen/qgen -D q.out.o: q.out.c q.out.h qlib.c qlib.h op.h uni.h qd.dump.o: qd.dump.c qd.out.c qlib.c qlib.h op.h uni.h #qd.dump.standalone.o: qd.dump.c qd.out.c qlib.c qlib.h # $(CC) $(DEFS) $(DEFAULT_INCLUDES) -DSTANDALONE $(INCLUDES) $(CFLAGS) -c qd.dump.c \ # -o qd.dump.standalone.o # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/qgen/0000755000200100001440000000000011304770376014011 5ustar chasuserslinux-atm-2.5.1/src/qgen/CVS/0000755000200100001440000000000011304767140014437 5ustar chasuserslinux-atm-2.5.1/src/qgen/CVS/Root0000644000200100001440000000007411304767140015306 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/qgen/CVS/Repository0000644000200100001440000000002311304767140016534 0ustar chasuserslinux-atm/src/qgen linux-atm-2.5.1/src/qgen/CVS/Entries0000644000200100001440000000131611304767140015774 0ustar chasusers/.cvsignore/1.1.2.1.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile.am/1.2.2.4.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /common.c/1.2.4.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /common.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /file.c/1.2.4.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /file.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /first.c/1.2.4.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /qgen.c/1.2.4.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /qgen.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /ql_l.l/1.2.4.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /ql_y.y/1.2.4.2/Mon Aug 3 20:36:57 2009//TV2_5_1 /second.c/1.2.4.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /third.c/1.2.4.1/Mon Aug 3 20:36:57 2009//TV2_5_1 D linux-atm-2.5.1/src/qgen/CVS/Tag0000644000200100001440000000001011304767140015064 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/qgen/.cvsignore0000644000200100001440000000007311235645151016004 0ustar chasusersMakefile Makefile.in .deps .libs qgen ql_l.c ql_y.c ql_y.h linux-atm-2.5.1/src/qgen/Makefile-0.790000644000200100001440000000363507360675443016061 0ustar chasusersLIBS=-lfl # lex may want -ll here OBJS=common.o file.o first.o lex.yy.o qgen.o second.o third.o y.tab.o TRASH=q.out.h q.out.c q.test.c qd.out.h qd.out.c qd.test.c qd.dump.c default.nl # q40.out.h q40.out.c q40.test.c PGMS=qgen q.out.o qd.dump.o q.dump #qtest # q40.out.o NLS=atm_ai_msg atm_ai_ie atm_loc atm_cv atm_pu atm_na atm_cond atm_ie atm_msg \ atm_np atm_ton atm_sat atm_prs atm_scrn atm_vpa atm_poe q2931_cs atm_td \ atm_bc atm_tc atm_stc atm_upcc q2931_proto atm_flag atm_aalp atm_fd atm_tag \ atm_l2 atm_l3 atm_tt atm_mc atm_hl atm_imd atm_tdl atm_tni atm_nip atm_shi \ atm_oci atm_unfm atm_ofi atm_irs atm_it atm_lit atm_lsi atm_tcs atm_css \ atm_eqo atm_eqp atm_aap atm_asp atm_tor SYMFILES=uni.h $(shell perl incl.pl $(CFLAGS) linux/atmsap.h) NOLIBATMDEP=yes include ../Rules.make qgen: $(OBJS) $(CC) $(LDFLAGS) -o qgen $(OBJS) $(LIBS) q.out.h q.out.c q.test.c: qgen msg.fmt default.nl $(CC) $(STANDARDS) -E - default.nl || \ { rm -f default.nl; echo 1; } q.out.o: q.out.c q.out.h qlib.c qlib.h $(CC) $(CFLAGS) -c $(STANDARDS) q.out.c q.test: q.test.c qtest.c $(CC) $(CFLAGS) -o q.test $(STANDARDS) q.test.c q.dump: qd.dump.c q.out.h qd.out.c qlib.h qlib.c $(CC) $(CFLAGS) -DSTANDALONE -o q.dump \ $(STANDARDS) qd.dump.c common.o qd.dump.o: qd.dump.c qd.out.c qlib.h qlib.c $(CC) $(CFLAGS) -c $(STANDARDS) qd.dump.c qtest: q.test ./q.test linux-atm-2.5.1/src/qgen/Makefile.am0000644000200100001440000000040211235645151016034 0ustar chasusersnoinst_PROGRAMS = qgen qgen_SOURCES = common.c common.h file.c file.h first.c ql_y.y ql_l.l qgen.c \ qgen.h second.c third.c qgen_LDADD = -lfl CC = @CC_FOR_BUILD@ CFLAGS = @CFLAGS_FOR_BUILD@ #TESTS = $(check_PROGRAMS) EXTRA_DIST = ql_y.h ql_y.c ql_l.c linux-atm-2.5.1/src/qgen/common.c0000644000200100001440000000120011235645151015431 0ustar chasusers/* common.c - Common functions */ /* Written 1995 by Werner Almesberger, EPFL-LRC */ #include #include #include #include #include #include "common.h" void *alloc(size_t size) { void *n; n = malloc(size); if (n) return n; perror("malloc"); exit(1); } char *stralloc(const char *str) { char *n; n = strdup(str); if (n) return n; perror("malloc"); exit(1); } void die(const char *fmt,...) { va_list ap; fflush(stdout); va_start(ap,fmt); vfprintf(stderr,fmt,ap); va_end(ap); fputc('\n',stderr); exit(1); } linux-atm-2.5.1/src/qgen/common.h0000644000200100001440000000052207360675443015457 0ustar chasusers/* common.h - Common definitions */ /* Written 1995,1996 by Werner Almesberger, EPFL-LRC */ #ifndef COMMON_H #define COMMON_H #include #define alloc_t(t) ((t *) alloc(sizeof(t))) extern int debug; extern int dump; void *alloc(size_t size); char *stralloc(const char *str); void die(const char *fmt,...); #endif linux-atm-2.5.1/src/qgen/file.c0000644000200100001440000000740411235645151015074 0ustar chasusers/* file.c - (source) file IO */ /* Written 1995,1996 by Werner Almesberger, EPFL-LRC */ #include #include #include #include #include #include #include "common.h" #include "file.h" #define DEFAULT_BUF_SIZE 256 typedef struct { const char *data; const char *extra; } CODE_ITEM; int pc; static FILE *h_file,*c_file,*test_file,*dump_file; static CODE_ITEM *buf; static int buf_size; void to_h(const char *fmt,...) { va_list ap; va_start(ap,fmt); if (vfprintf(h_file,fmt,ap) == EOF) { perror("write"); exit(1); } va_end(ap); } void to_c(const char *fmt,...) { va_list ap; va_start(ap,fmt); if (vfprintf(c_file,fmt,ap) == EOF) { perror("write"); exit(1); } va_end(ap); } void to_test(const char *fmt,...) { va_list ap; va_start(ap,fmt); if (vfprintf(test_file,fmt,ap) == EOF) { perror("write"); exit(1); } va_end(ap); } void to_dump(const char *fmt,...) { va_list ap; va_start(ap,fmt); if (vfprintf(dump_file,fmt,ap) == EOF) { perror("write"); exit(1); } va_end(ap); } void open_files(const char *prefix) { char name[100]; /* maximum name */ sprintf(name,"%s.out.h",prefix); h_file = fopen(name,"w"); if (!h_file) { perror("creat"); exit(1); } sprintf(name,"%s.out.c",prefix); c_file = fopen(name,"w"); if (!c_file) { perror("creat"); exit(1); } sprintf(name,"%s.test.c",prefix); test_file = fopen(name,"w"); if (!test_file) { perror("creat"); exit(1); } if (dump) { sprintf(name,"%s.dump.c",prefix); dump_file = fopen(name,"w"); if (!dump_file) { perror("creat"); exit(1); } } } void close_files(void) { if (fclose(h_file) == EOF) { perror("fclose"); exit(1); } if (fclose(c_file) == EOF) { perror("fclose"); exit(1); } if (fclose(test_file) == EOF) { perror("fclose"); exit(1); } if (dump) if (fclose(dump_file) == EOF) { perror("fclose"); exit(1); } } void begin_code(void) { pc = 0; buf_size = DEFAULT_BUF_SIZE; buf = alloc(sizeof(CODE_ITEM)*buf_size); } static void put_item(const char *item) { if (pc >= buf_size) { buf_size *= 2; buf = realloc(buf,sizeof(CODE_ITEM)*buf_size); if (!buf) die("out of memory"); } buf[pc].data = item; buf[pc++].extra = NULL; } static void append_last(const char *str) { buf[pc-1].extra = str; } static char *itos(int val) { char buffer[21]; /* enough for 64 bits ... */ sprintf(buffer,"%d",val); return stralloc(buffer); } void code(const char *fmt,...) { va_list ap; va_start(ap,fmt); while (*fmt) if (*fmt++ == '%') { switch (*fmt++) { case 'd': put_item(itos(va_arg(ap,int))); break; case 's': put_item(va_arg(ap,const char *)); break; default: die("invalid format character %c",fmt[-1]); } } else { const char *here; here = strchr(--fmt,'%'); if (!here) append_last(fmt); else { char buffer[200]; /* ugly */ if (here[1] != 's') die("bad format in extension"); strncpy(buffer,fmt,(size_t) (here-fmt)); strcpy(buffer+(here-fmt),va_arg(ap,const char *)); strcat(buffer,here+2); append_last(stralloc(buffer)); } break; } va_end(ap); } int end_code(void) { int indent,i; indent = 1; for (i = 0; i < pc; i++) { if (indent) { to_c(" "); indent = 0; } to_c(buf[i].data); if (buf[i].extra && *buf[i].extra == '\n') to_c(","); else to_c(", "); if (buf[i].extra) { to_c(buf[i].extra); indent = !!strchr(buf[i].extra,'\n'); if (indent) to_c("/*%4d*/",i+1); } } return pc; } void patch(int old_pc,int value) { /* may leak memory */ buf[old_pc].data = itos(value); } linux-atm-2.5.1/src/qgen/file.h0000644000200100001440000000070507360675443015111 0ustar chasusers/* file.h - (source) file IO */ /* Written 1995,1996 by Werner Almesberger, EPFL-LRC */ #ifndef FILE_H #define FILE_H extern int pc; void open_files(const char *prefix); void to_h(const char *fmt,...); void to_c(const char *fmt,...); void to_test(const char *fmt,...); void to_dump(const char *fmt,...); void close_files(void); void begin_code(void); void code(const char *fmt,...); int end_code(void); void patch(int old_pc,int value); #endif linux-atm-2.5.1/src/qgen/first.c0000644000200100001440000001267611235645151015313 0ustar chasusers/* first.c - Phase I, input data preprocessing */ /* Written 1995-1997 by Werner Almesberger, EPFL-LRC */ #include #include #include "common.h" #include "qgen.h" #include "file.h" int field = 0; int group = 0; int offset = 0; int varlen_fields = 0; static unsigned char mask = 0; static int seq = 0; #define ALLOC(field) ({ \ if (mask & beg_mask) \ die("bit collision (%s: 0x%02X+0x%02X)",walk->id,mask,beg_mask); \ field->pos += offset; \ if (next <= 8) { \ mask |= end_mask; \ walk->jump = 0; \ } \ else { \ mask = end_mask; \ walk->jump = (next-1) >> 3; \ } \ if (walk->flush && walk->size) { \ if (!mask) die("nothing to flush (%s)",walk->id); \ walk->jump++; \ mask = 0; \ } }) static void process(FIELD *start,int defines) { FIELD *walk; TAG *scan; unsigned char beg_mask,end_mask,orig_mask; int tmp,shift,next; for (walk = start; walk; walk = walk->next) { walk->field = field; /* record it even if this isn't a real field (we need to know the first field number later in second.c and this way we don't have to search for it) */ if (walk->structure) { int start_field,start_group; start_field = field; start_group = group; process(walk->my_block,walk->structure->instances > 0); if (walk->structure->instances > 1) { walk->structure->instances = -1; walk->structure->first_field = start_field; walk->structure->fields = field-start_field; walk->structure->groups = group-start_group; } continue; } walk->seq = seq++; /* number of fields, always increases */ if (*walk->id != '_') { if (defines) to_h("#define QF_%s %d\n",walk->id,field); to_test(" \"%s\",\n",walk->id); field++; } if (mask && walk->brk) die("mask 0x%02x at break (%s)\n",mask,walk->id); /* compute position and adjust masks */ tmp = walk->size > 7 ? 0xff : (1 << walk->size)-1; beg_mask = tmp << walk->pos; tmp = 0xff & ~((1 << (8-(walk->size & 7)))-1); if (walk->size && !tmp) tmp = 0xff; next = walk->pos+walk->size; shift = 8-(next & 7); if (shift == 8) shift = 0; end_mask = tmp >> shift; if (debug) printf("mask 0x%02X, beg 0x%02X, end 0x%02X, offset %d, flush %d, " "%s\n",mask,beg_mask,end_mask,offset,walk->flush,walk->id); /* handle values */ if (!walk->value) { if (walk->var_len == -2) walk->var_len = varlen_fields++; ALLOC(walk); offset += walk->jump*8; } else switch (walk->value->type) { case vt_id: ALLOC(walk); to_c(" q_put(q_initial,%d,%d,%s); /* %s */\n",walk->pos, walk->size,walk->value->id,walk->id); offset += walk->jump*8; break; case vt_case: if (*walk->id != '_') { ALLOC(walk); offset += walk->jump*8; #if 0 /* bad idea */ for (scan = walk->value->tags; scan; scan = scan->next) if (scan->deflt) { to_c(" q_put(q_initial,%d,%d,%s); " "/* %s */\n",walk->pos,walk->size, scan->value,walk->id); } #endif } /* fall through */ #if 0 if (*walk->id != '_') { ALLOC(walk); offset += walk->jump*8; orig_mask = mask; for (scan = walk->value->tags; scan; scan = scan->next) { if (scan->id && defines) to_h("#define QG_%s %d\n",scan->id,-group-1); scan->group = group++; scan->pos = walk->pos; mask = orig_mask; to_c(" q_put(q_initial,%d,%d,%s); /* %s */\n", walk->pos,walk->size,scan->value,walk->id); process(scan->block,defines); if (mask) offset += 8; } break; } #endif /* fall through */ case vt_multi: orig_mask = mask; for (scan = walk->value->tags; scan; scan = scan->next) { if (scan->id && defines) to_h("#define QG_%s %d\n",scan->id,-group-1); scan->group = group++; scan->pos = walk->pos; if (debug) printf("| %s/%s (walk->flush = %d)\n",walk->id, scan->value,walk->flush); if (*walk->id != '_') mask = orig_mask; else { ALLOC(scan); if (debug) printf("| jump = %d (mask 0x%02x)\n", walk->jump,mask); offset += walk->jump*8; to_c(" q_put(q_initial,%d,%d,%s); /* %s */\n", scan->pos,walk->size,scan->value,walk->id); } process(scan->block,defines); if (*walk->id != '_' && mask) die("EF129"); } break; case vt_length: ALLOC(walk); offset += walk->jump*8; process(walk->value->block,defines); break; default: abort(); } } } void first(FIELD *def) { def->group = group++; to_h("/*\n * Identifiers to access numbers of fields and of named\n"); to_h(" * groups (unnamed groups don't need that). Field numbers are\n"); to_h(" * zero-based. Group numbers are negative and -1-based.\n */\n\n"); to_c("static unsigned char q_initial[Q_DATA_BYTES];\n\n"); to_c("/*\n * Initialization of constant data. Could also do this in\n"); to_c(" * the translator and output the resulting byte stream.\n */\n\n"); to_c("static void q_init_global(void)\n{\n"); to_c(" memset(q_initial,0,sizeof(q_initial));\n"); to_test("static const char *fields[] = {\n"); process(def,1); to_test(" NULL\n};\n\n"); to_c("}\n\n"); if (mask) offset += 8; to_h("\n/*\n * Sizes of various tables which are allocated at run-time.\n"); to_h(" */\n"); to_h("\n#define Q_DATA_BYTES %d\n",offset/8); to_h("#define Q_GROUPS %d\n",group); to_h("#define Q_FIELDS %d\n",field); to_h("#define Q_VARLEN_FIELDS %d\n\n",varlen_fields); } linux-atm-2.5.1/src/qgen/qgen.c0000644000200100001440000000551711235645151015112 0ustar chasusers/* qgen.c - constructor/parser generator for Q.2931-like data structures */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #include #include #include #include "common.h" #include "file.h" #include "qgen.h" extern int yyparse(void); extern FIELD *def; extern int group,field,offset,varlen_fields; extern int constr_size,parser_size; extern int sym_tables,symbols; int debug = 0; int dump = 0; int main(int argc,char **argv) { const char *prefix; if (argc == 2 && !strcmp(argv[1],"-d")) debug = 1; if (argc == 2 && !strcmp(argv[1],"-D")) dump = 1; prefix = getenv("PREFIX"); if (!prefix) prefix = dump ? "qd" : "q"; open_files(prefix); to_h("/* THIS IS A MACHINE-GENERATED FILE. DO NOT EDIT ! */\n\n"); to_c("/* THIS IS A MACHINE-GENERATED FILE. DO NOT EDIT ! */\n\n"); to_c("#if HAVE_CONFIG_H\n"); to_c("#include \n"); to_c("#endif\n\n"); to_test("/* THIS IS A MACHINE-GENERATED FILE. DO NOT EDIT ! */\n\n"); to_test("#if HAVE_CONFIG_H\n"); to_test("#include \n"); to_test("#endif\n\n"); if (dump) { to_dump("/* THIS IS A MACHINE-GENERATED FILE. DO NOT EDIT ! */\n\n"); to_dump("#if HAVE_CONFIG_H\n"); to_dump("#include \n"); to_dump("#endif\n\n"); } to_c("/* (optional) user includes go here */\n\n"); to_test("/* (optional) user includes go here */\n\n"); if (dump) to_dump("/* (optional) user includes go here */\n\n"); if (yyparse()) return 1; to_test("\n#ifndef NULL\n#define NULL ((void *) 0)\n#endif\n\n"); if (dump) to_dump("\n#ifndef NULL\n#define NULL ((void *) 0)\n#endif\n\n"); to_h("#ifndef Q_OUT_H\n#define Q_OUT_H\n\n"); to_c("\n#include \n#include \n"); to_c("#include \n#include \n\n"); to_c("#include \"op.h\"\n"); to_c("#include \"%s.out.h\"\n",prefix); to_c("#include \"qlib.h\"\n\n"); to_c("\n\nstatic void q_put(unsigned char *table,int pos,int size," "unsigned long value);\n\n"); first(def); second(def); third(def); to_h("#endif\n"); to_c("\n/*\n * Sorry, this is necessary ...\n */\n\n"); to_c("#include \"qlib.c\"\n"); to_test("\n/*\n * Sorry, this is necessary ...\n */\n\n"); to_test("#include \"qtest.c\"\n"); if (dump) { to_dump("\n/*\n * Sorry, this is necessary ...\n */\n\n"); to_dump("#define DUMP_MODE\n\n"); to_dump("#include \"%s.out.c\"\n",prefix); } close_files(); fprintf(stderr," %d groups, %d fields (%d var-len), construction area is " "%d bytes,\n",group,field,varlen_fields,(offset+7)/8); fprintf(stderr," %d words in constructor, %d words in parser", constr_size,parser_size); if (!dump) fprintf(stderr,".\n"); else fprintf(stderr,",\n %d symbolic names in %d tables.\n",symbols, sym_tables); return 0; } linux-atm-2.5.1/src/qgen/qgen.h0000644000200100001440000000665407360675443015135 0ustar chasusers/* qgen.h - constructor/parser generator for Q.2931-like data structures */ /* Written 1995-1997 by Werner Almesberger, EPFL-LRC */ #ifndef QGEN_H #define QGEN_H typedef enum { vt_id,vt_case,vt_multi,vt_length } VALUE_TYPE; typedef struct _macro { /* --- the following fields are initialized by the parser */ const char *id; struct _field *block; int instances; /* this is later modified in the first pass (> 1 becomes -1) */ struct _macro *next; /* --- the following fields are initialized in the first phase */ int first_field; /* number of the first field in the first instance */ int fields; /* number of fields covered by this structure */ int groups; /* number of groups covered by this structure */ } STRUCTURE; typedef struct _name { /* --- the following fields are initialized by the parser */ const char *value; const char *name; struct _name *next; } NAME; typedef struct _name_list { /* --- the following fields are initialized by the parser */ const char *list_name; NAME *list; int id; /* initialized to -1 = unassigned */ struct _name_list *next; } NAME_LIST; typedef struct { /* --- the following fields are initialized by the parser */ VALUE_TYPE type; const char *recovery; /* only valid if vt_length; NULL if not used */ const char *abort_id; /* non-NULL to request application-specific error */ const char *id; /* for value-only and for default tag */ struct _field *block; /* length */ struct _tag *tags; /* case or multi */ /* --- the following fields are initialized in the first phase */ /* id of default tag */ } VALUE; typedef struct _field { /* --- the following fields are initialized by the parser */ const char *id; NAME_LIST *name_list; int size; int var_len; int pos; /* modified in the first phase */ int flush; VALUE *value; int brk; /* != 0: may break before this field */ struct _field *next; STRUCTURE *structure; /* NULL if this entry isn't a structure */ struct _field *my_block; /* this instance of the structure's body (undefined if structure == NULL) */ /* --- the following fields are initialized in the first phase */ int field; /* field number */ int jump; /* move by that many bytes before writing that field */ int group; /* group number, only in first element of group */ int seq; /* sequence number - for dumping */ /* --- the following fields are initialized in the second phase */ int has_required; /* --- the following fields are initialized in the third phase */ int patch; } FIELD; typedef struct _id_list { /* --- the following fields are initialized by the parser */ const char *value; struct _id_list *next; /* --- the following fields are initialized in the third phase */ int patch; } VALUE_LIST; typedef struct _tag { /* --- the following fields are initialized by the parser */ const char *id; /* group id */ VALUE_LIST *more; /* only for named selectors */ const char *value; FIELD *block; const char *abort_id; /* non-NULL to request application-specific error */ struct _tag *next; int deflt; /* --- the following fields are initialized in the first phase */ int group; int pos; /* --- the following fields are initialized in the third phase */ int patch; } TAG; void first(FIELD *def); void second(FIELD *def); void third(FIELD *def); #endif linux-atm-2.5.1/src/qgen/ql_l.l0000644000200100001440000000273711235645151015121 0ustar chasusers%{ /* ql.l - Q.2931 data structures description language */ /* Written 1995,1996 by Werner Almesberger, EPFL-LRC */ #include #include #include "common.h" #include "qgen.h" #include "ql_y.h" typedef struct _tree { struct _tree *left,*right; const char str[0]; } TREE; static TREE *tree = NULL; static int lineno = 1; static const char *ident(const char *str) { TREE **walk; int diff; walk = &tree; while (*walk) { if (!(diff = strcmp(str,(*walk)->str))) return (*walk)->str; if (diff < 0) walk = &(*walk)->left; else walk = &(*walk)->right; } *walk = alloc(sizeof(TREE)+strlen(str)+1); (*walk)->left = (*walk)->right = NULL; strcpy((char *) (*walk)->str,str); return (*walk)->str; } %} %% break return TOK_BREAK; case return TOK_CASE; def return TOK_DEF; default return TOK_DEFAULT; length return TOK_LENGTH; multi return TOK_MULTI; recover return TOK_RECOVER; abort return TOK_ABORT; [_a-zA-Z0-9]+ { yylval.str = ident(yytext); return TOK_ID; } \n?[\t ]* lineno += *yytext == '\n'; include[\ \t]+\"[^\"\n\t]+\" | include[\ \t]+\<[^\<\>\n\t]+\> { yylval.str = ident(yytext); return TOK_INCLUDE; } \"[^\"\n\t]+\" { *strrchr(yytext,'"') = 0; yylval.str = ident(yytext+1); return TOK_STRING; } [#;][^\n]*\n lineno++; . return *yytext; %% void yyerror(char *s) { fprintf(stderr,"line %d: %s near \"%s\"\n",lineno,s,yytext); exit(1); } linux-atm-2.5.1/src/qgen/ql_y.y0000644000200100001440000002231411235645151015144 0ustar chasusers%{ /* ql.y - Q.2931 data structures description language */ /* Written 1995-1997 by Werner Almesberger, EPFL-LRC */ #include #include #include #include #include #include "common.h" #include "qgen.h" #include "file.h" #define MAX_TOKEN 256 #define DEFAULT_NAMELIST_FILE "default.nl" FIELD *def = NULL; static STRUCTURE *structures = NULL; static const char *abort_id; /* indicates abort flag */ void yyerror(const char *s); int yylex(void); static NAME_LIST *get_name_list(const char *name) { static NAME_LIST *name_lists = NULL; FILE *file; NAME_LIST *list; NAME *last,*this; char line[MAX_TOKEN+1]; char path[PATH_MAX+1]; char *start,*here,*walk; int searching,found; for (list = name_lists; list; list = list->next) if (list->list_name == name) return list; sprintf(path,"%s.nl",name); if (!(file = fopen(path,"r")) && !(file = fopen(strcpy(path, DEFAULT_NAMELIST_FILE),"r"))) yyerror("can't open list file"); list = alloc_t(NAME_LIST); list->list_name = name; list->list = last = NULL; list->id = -1; list->next = name_lists; name_lists = list; searching = 1; found = 0; while (fgets(line,MAX_TOKEN,file)) { for (start = line; *start && isspace(*start); start++); if (!*start || *start == '#') continue; if ((here = strchr(start,'\n'))) *here = 0; for (walk = strchr(start,0)-1; walk > start && isspace(*walk); walk--) *walk = 0; if (*start == ':') { if (!(searching = strcmp(start+1,name))) { if (found) yyerror("multiple entries"); else found = 1; } continue; } if (searching) continue; if (!(here = strchr(start,'='))) yyerror("invalid name list"); *here++ = 0; for (walk = here-2; walk > start && isspace(*walk); walk--) *walk = 0; while (*here && isspace(*here)) here++; this = alloc_t(NAME); this->value = stralloc(start); this->name = stralloc(here); this->next = NULL; if (last) last->next = this; else list->list = this; last = this; } (void) fclose(file); if (!found) yyerror("no symbol list entry found"); return list; } static FIELD *copy_block(FIELD *orig_field) { FIELD *copy,**new_field; copy = NULL; new_field = © while (orig_field) { *new_field = alloc_t(FIELD); **new_field = *orig_field; if (orig_field->value) { (*new_field)->value = alloc_t(VALUE); *(*new_field)->value = *orig_field->value; switch (orig_field->value->type) { case vt_length: (*new_field)->value->block = copy_block(orig_field->value->block); break; case vt_case: case vt_multi: { TAG *orig_tag,**new_tag; new_tag = &(*new_field)->value->tags; for (orig_tag = orig_field->value->tags; orig_tag; orig_tag = orig_tag->next) { VALUE_LIST *orig_value,**new_value; *new_tag = alloc_t(TAG); **new_tag = *orig_tag; new_value = &(*new_tag)->more; for (orig_value = orig_tag->more; orig_value; orig_value = orig_value->next) { *new_value = alloc_t(VALUE_LIST); **new_value = *orig_value; new_value = &(*new_value)->next; } (*new_tag)->block = copy_block(orig_tag->block); new_tag = &(*new_tag)->next; } } } } if (orig_field->structure) yyerror("sorry, can't handle nested structures"); new_field = &(*new_field)->next; orig_field = orig_field->next; } return copy; } %} %union { const char *str; int num; FIELD *field; VALUE *value; VALUE_LIST *list; TAG *tag; NAME_LIST *nlist; }; %token TOK_BREAK TOK_CASE TOK_DEF TOK_DEFAULT TOK_LENGTH TOK_MULTI %token TOK_RECOVER TOK_ABORT %token TOK_ID TOK_INCLUDE TOK_STRING %type rep_block block fields field field_cont %type opt_break opt_pos decimal opt_more %type opt_val value %type tags rep_tags %type list %type opt_id opt_recover %type opt_name_list %% all: includes structures block { STRUCTURE *walk; def = $3; for (walk = structures; walk; walk = walk->next) if (!walk->instances) fprintf(stderr,"unused structure: %s\n",walk->id); } ; includes: | TOK_INCLUDE includes { to_c("#%s\n",$1); to_test("#%s\n",$1); if (dump) to_dump("#%s\n",$1); } ; structures: | structures structure ; structure: TOK_DEF TOK_ID '=' block { STRUCTURE *n; n = alloc_t(STRUCTURE); n->id = $2; n->block = $4; n->instances = 0; n->next = structures; structures = n; } ; rep_block: { abort_id = NULL; } block { $$ = $2; } ; block: TOK_ID { STRUCTURE *walk; for (walk = structures; walk; walk = walk->next) if (walk->id == $1) break; if (!walk) yyerror("no such structure"); walk->instances++; $$ = alloc_t(FIELD); $$->id = NULL; $$->name_list = NULL; $$->value = NULL; $$->brk = 0; $$->structure = walk; $$->my_block = copy_block(walk->block); $$->next = NULL; abort_id = NULL; } | '{' fields '}' { $$ = $2; abort_id = NULL; } | TOK_ABORT TOK_ID { $$ = NULL; abort_id = $2; } ; fields: { $$ = NULL; } | field fields { $$ = $1; $1->next = $2; } ; field: opt_break TOK_ID opt_name_list '<' field_cont { TAG *walk; $$ = $5; $$->name_list = $3; $$->brk = $1; $$->id = $2; if ($$->var_len == -2) { if (*$$->id == '_') yyerror("var-len field must be named"); } else if (*$$->id == '_' && !$$->value) yyerror("unnamed fields must have value"); if (*$$->id == '_' && $$->value && $$->value->type == vt_case) for (walk = $$->value->tags; walk; walk = walk->next) if (walk->more) yyerror("value list only allowed in named case " "selections"); if (*$$->id != '_' && $$->value && $$->value->type == vt_multi) yyerror("multi selectors must be unnamed"); } ; opt_break: { $$ = 0; } | TOK_BREAK { $$ = 1; } ; field_cont: '-' decimal '>' { $$ = alloc_t(FIELD); $$->size = $2; $$->var_len = -2; /* hack */ if ($2 & 7) yyerror("var-len field must have integral size"); $$->pos = 0; $$->flush = 1; $$->value = NULL; $$->structure = NULL; $$->next = NULL; } | decimal opt_pos opt_more '>' opt_val { $$ = alloc_t(FIELD); $$->size = $1; $$->var_len = -1; $$->pos = $2; $$->flush = !$3; if ($$->pos == -1) { if ($$->size & 7) yyerror("position required for small fields"); else $$->pos = 0; } $$->value = $5; $$->structure = NULL; $$->next = NULL; } ; opt_pos: { $$ = -1; } | '@' decimal { $$ = $2-1; if ($$ < 0 || $$ > 7) yyerror("invalid position"); } ; decimal: TOK_ID { char *end; $$ = strtoul($1,&end,10); if (*end) yyerror("no a decimal number"); } ; opt_more: { $$ = 0; } | ',' TOK_ID { if (strcmp($2,"more")) yyerror("\"more\" expected"); $$ = 1; } ; opt_val: { $$ = NULL; } | '=' value { $$ = $2; } ; value: TOK_ID { $$ = alloc_t(VALUE); $$->type = vt_id; $$->id = $1; } | TOK_CASE '{' tags '}' { $$ = alloc_t(VALUE); $$->type = vt_case; $$->id = NULL; $$->tags = $3; } | TOK_MULTI '{' rep_tags '}' { $$ = alloc_t(VALUE); $$->type = vt_multi; $$->tags = $3; } | opt_recover TOK_LENGTH block { $$ = alloc_t(VALUE); $$->type = vt_length; $$->recovery = $1; $$->block = $3; $$->abort_id = abort_id; } ; opt_recover: { $$ = NULL; } | TOK_RECOVER TOK_ID { $$ = $2; } ; opt_name_list: { $$ = NULL; } | TOK_STRING { $$ = get_name_list($1); } ; tags: { $$ = NULL; } | TOK_DEFAULT TOK_ID opt_id list block { $$ = alloc_t(TAG); $$->deflt = 1; if ($3) { $$->id = $2; $$->value = $3; } else { $$->id = NULL; $$->value = $2; } $$->more = $4; $$->block = $5; $$->next = NULL; $$->abort_id = abort_id; } | TOK_ID opt_id list block { $$ = alloc_t(TAG); $$->abort_id = abort_id; } tags { $$ = $5; $$->deflt = 0; if ($2) { $$->id = $1; $$->value = $2; } else { $$->id = NULL; $$->value = $1; } $$->more = $3; $$->block = $4; $$->next = $6; } ; rep_tags: { $$ = NULL; } | TOK_DEFAULT TOK_ID opt_id list rep_block { $$ = alloc_t(TAG); $$->deflt = 1; if ($3) { $$->id = $2; $$->value = $3; } else { $$->id = NULL; $$->value = $2; } $$->more = $4; $$->block = $5; $$->next = NULL; } | TOK_ID opt_id list rep_block { $$ = alloc_t(TAG); $$->abort_id = abort_id; } rep_tags { $$ = $5; $$->deflt = 0; if ($2) { $$->id = $1; $$->value = $2; } else { $$->id = NULL; $$->value = $1; } $$->more = $3; $$->block = $4; $$->next = $6; } ; opt_id: { $$ = NULL; } | ':' TOK_ID { $$ = $2; } ; list: { $$ = NULL; } | ',' TOK_ID list { $$ = alloc_t(VALUE_LIST); $$->value = $2; $$->next = $3; } ; linux-atm-2.5.1/src/qgen/second.c0000644000200100001440000002052611235645151015430 0ustar chasusers/* second.c - Phase II, table generation */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #include #include "common.h" #include "qgen.h" #include "file.h" int sym_tables = 0,symbols = 0; static int unique; static void dump_required(FIELD *start,FIELD *leader,int group) { FIELD *walk; for (walk = start; walk; walk = walk->next) { if (walk->structure) { dump_required(walk->my_block,leader,group); continue; } if (walk->brk) break; if (!walk->value) { if (!leader->has_required) { to_c("static int required_%d[] = {\n",group); leader->has_required = 1; } to_c(" %d, /* %s */\n",walk->field,walk->id); } else if (walk->value->type == vt_length) dump_required(walk->value->block,leader,group); } if (leader == start && leader && leader->has_required) to_c(" -1\n};\n\n"); } static void find_required(FIELD *start) { FIELD *walk; TAG *scan; for (walk = start; walk; walk = walk->next) { if (walk->structure) { find_required(walk->my_block); continue; } if (walk->value) switch (walk->value->type) { case vt_id: break; case vt_case: case vt_multi: for (scan = walk->value->tags; scan; scan = scan->next) if (scan->block) { scan->block->has_required = 0; dump_required(scan->block,scan->block,scan->group); find_required(scan->block); } break; case vt_length: find_required(walk->value->block); break; default: abort(); } } } static void groups(FIELD *start,int group) { FIELD *walk; TAG *scan; for (walk = start; walk; walk = walk->next) { if (walk->structure) { groups(walk->my_block,group); continue; } if (walk->value) switch (walk->value->type) { case vt_id: break; case vt_case: case vt_multi: for (scan = walk->value->tags; scan; scan = scan->next) { int start_field,length,offset; if (scan->block && scan->block->structure && scan->block->structure->instances < 0) { start_field = scan->block->structure->first_field; length = scan->block->structure->fields; offset = scan->block->my_block->field- scan->block->structure->first_field; } else { start_field = -1; length = offset = 0; } if (scan->id) to_test(" \"%s\",\n",scan->id); if (scan->block && scan->block->has_required) if (scan->block->id) to_c(" { %d, required_%d, %d, %d, %d }, " "/* %s */\n",group,scan->group,start_field, length,offset,scan->block->id); else to_c(" { %d, required_%d, %d, %d, %d },\n", group,scan->group,start_field,length,offset); else to_c(" { %d, NULL, %d, %d, %d },\n",group, start_field,length,offset); groups(scan->block,scan->group); } break; case vt_length: groups(walk->value->block,group); break; default: abort(); } } } static void values(FIELD *start) { FIELD *walk; TAG *scan; VALUE_LIST *tag; for (walk = start; walk; walk = walk->next) { if (walk->structure) { values(walk->my_block); } if (walk->value) switch (walk->value->type) { case vt_id: break; case vt_case: if (*walk->id != '_') { to_c("static int values_%d[] = { /* %s */\n", walk->field,walk->id); for (scan = walk->value->tags; scan; scan = scan->next) { to_c(" %s, %d,\n",scan->value,scan->group); for (tag = scan->more; tag; tag = tag->next) to_c(" %s, %d,\n",tag->value,scan->group); if (scan->deflt) to_c(" -2, %d,\n",scan->group); /* could also skip while entry, but maybe we'll want to use the tags later */ } to_c(" -1, -1\n};\n\n"); } /* fall through */ case vt_multi: for (scan = walk->value->tags; scan; scan = scan->next) values(scan->block); break; case vt_length: values(walk->value->block); break; default: abort(); } } } static void fields(FIELD *start,int group) { FIELD *walk; TAG *scan; VALUE_LIST *tag; for (walk = start; walk; walk = walk->next) { if (walk->structure) { fields(walk->my_block,group); continue; } if (*walk->id != '_') { if (walk->value && walk->value->type == vt_case) to_c(" { %d, %d, %d, values_%d, %d }, /* %s */\n",group, walk->pos,walk->size,walk->field,walk->var_len,walk->id); else to_c(" { %d, %d, %d, NULL, %d }, /* %s */\n",group, walk->pos,walk->size,walk->var_len,walk->id); } if (walk->value) switch (walk->value->type) { case vt_id: break; case vt_case: case vt_multi: for (scan = walk->value->tags; scan; scan = scan->next) fields(scan->block,scan->group); to_test("static int unique_%d[] = { /* %s */\n",unique++, walk->id); for (scan = walk->value->tags; scan; scan = scan->next) { to_test(" %s,\n",scan->value); for (tag = scan->more; tag; tag = tag->next) to_test(" %s,\n",tag->value); } to_test(" -1\n};\n\n"); break; case vt_length: fields(walk->value->block,group); break; default: abort(); } } } static void symbolic_names(FIELD *start) { FIELD *walk; NAME *name; TAG *scan; VALUE_LIST *tag; for (walk = start; walk; walk = walk->next) { if (walk->structure) { symbolic_names(walk->my_block); continue; } if (walk->name_list ? walk->name_list->id == -1 : !!walk->value) { if (walk->name_list) { to_dump("static SYM_NAME dump_sym_%d[] = { /* %s */\n", walk->seq,walk->name_list->list_name); sym_tables++; walk->name_list->id = walk->seq; for (name = walk->name_list->list; name; name = name->next) { to_dump(" { %s, \"%s\" },\n",name->value,name->name); symbols++; } } else { to_dump("static SYM_NAME dump_sym_%d[] = {\n",walk->seq); sym_tables++; switch (walk->value->type) { case vt_id: to_dump(" { %s, \"%s\" },\n",walk->value->id, walk->value->id); symbols++; break; case vt_case: case vt_multi: for (scan = walk->value->tags; scan; scan = scan->next) { to_dump(" { %s, \"%s\" },\n",scan->value, scan->value); symbols++; for (tag = scan->more; tag; tag = tag->next) { to_dump(" { %s, \"%s\" },\n",tag->value, tag->value); symbols++; } } break; case vt_length: break; default: abort(); } } to_dump(" { 0, NULL }\n};\n\n"); } if (walk->value) switch (walk->value->type) { case vt_id: break; case vt_case: case vt_multi: for (scan = walk->value->tags; scan; scan = scan->next) symbolic_names(scan->block); break; case vt_length: symbolic_names(walk->value->block); break; default: abort(); } } } void second(FIELD *def) { int i; def->has_required = 0; to_c("\n/*\n"); to_c(" * If a group contains required fields, these are listed in the\n"); to_c(" * following arrays. Each list ends with -1. The variable names\n"); to_c(" * end with the group number.\n */\n\n"); dump_required(def,def,0); find_required(def); to_c("\n/*\n * Various information about groups.\n */\n\n"); to_c("typedef struct {\n int parent;\n int *required;\n"); to_c(" int start;\n int length;\n int offset;\n} GROUP;\n\n"); to_c("static GROUP groups[] = {\n"); if (def->has_required) to_c(" { -1, required_0 },\n"); else to_c(" { -1, NULL },\n"); to_test("static const char *groups[] = {\n"); groups(def,0); to_test(" NULL\n};\n\n"); to_c("};\n\n\n"); to_c("/*\n * Named case selectors only have a limited set of valid\n"); to_c(" * values. They are listed in the following arrays, each followed\n"); to_c(" * by the number of the group it enables.\n */\n\n"); values(def); to_c("\n/*\n * Various information about fields.\n */\n\n"); to_c("typedef struct {\n int parent;\n int pos,size;\n"); to_c(" int *values;\n int actual;\n} FIELD;\n\n"); to_c("static FIELD fields[] = {\n"); fields(def,0); to_c("};\n\n"); to_test("static int *unique[] = {\n"); for (i = 0; i < unique; i++) to_test(" unique_%d,\n",i); to_test(" NULL\n};\n\n"); if (dump) { to_dump("typedef struct {\n unsigned long value;\n"); to_dump(" const char *name;\n} SYM_NAME;\n\n"); symbolic_names(def); } } linux-atm-2.5.1/src/qgen/third.c0000644000200100001440000001602611235645151015267 0ustar chasusers/* third.c - Phase III, code generation */ /* Written 1995-1997 by Werner Almesberger, EPFL-LRC */ #include #include #include "common.h" #include "qgen.h" #include "file.h" typedef struct _break { int pc; struct _break *next; } BREAK; int constr_size,parser_size; static BREAK *brks = NULL; static void construct(FIELD *start) { FIELD *walk; TAG *scan; int patch_here; patch_here = 0; /* for gcc */ for (walk = start; walk; walk = walk->next) { if (walk->structure) { construct(walk->my_block); continue; } if (!walk->value) if (walk->var_len == -1) code("%s%d%d%d/* %s */\n","OP_COPY",walk->jump,walk->pos, walk->size,walk->id); else code("%s%d%d%d/* %s */\n","OP_COPYVAR",walk->var_len, walk->pos,walk->size/8,walk->id); else switch (walk->value->type) { case vt_id: code("%s%d%d%d/* %s */\n","OP_COPY",walk->jump,walk->pos, walk->size,walk->id); break; case vt_case: if (*walk->id != '_') code("%s%d%d%d/* %s */\n","OP_COPY",walk->jump, walk->pos,walk->size,walk->id); for (scan = walk->value->tags; scan; scan = scan->next) { if (debug) printf("C %s/%s(%d): %d\n",walk->id,scan->value, scan->group,scan->deflt); if (!scan->deflt) { code("%s%d%s\n","OP_IFGROUP",scan->group,"?"); patch_here = pc-1; } if (*walk->id == '_') code("%s%d%d%d/* %s */\n","OP_COPY",walk->jump, scan->pos,walk->size,scan->value); construct(scan->block); if (scan->next) { code("%s%s\n","OP_JUMP","?"); scan->patch = pc-1; } if (!scan->deflt) patch(patch_here,pc-patch_here-1); } for (scan = walk->value->tags; scan && scan->next; scan = scan->next) patch(scan->patch,pc-scan->patch-1); break; case vt_multi: for (scan = walk->value->tags; scan; scan = scan->next) { if (debug) printf("M %s/%s(%d)\n",walk->id,scan->value, scan->group); code("%s%d%s\n","OP_IFGROUP",scan->group,"?"); scan->patch = pc-1; code("%s%d%d%d/* %s */\n","OP_COPY",walk->jump, scan->pos,walk->size,scan->value); construct(scan->block); patch(scan->patch,pc-scan->patch-1); } break; case vt_length: code("%s%d%d%d/* %s */\n","OP_BEGIN_LEN",walk->jump, walk->pos,walk->size,walk->id); construct(walk->value->block); code("%s\n","OP_END_LEN"); break; default: abort(); } } } static void parser(FIELD *start,int level,int group) { FIELD *walk; TAG *scan; VALUE_LIST *tag; int count,patch_here; BREAK *brk,*tmp_brks,*next; patch_here = 0; /* for gcc */ for (walk = start; walk; walk = walk->next) { if (walk->structure) { parser(walk->my_block,level,group); continue; } if (walk->brk) { code("%s%s\n","OP_IFEND","?"); brk = alloc_t(BREAK); brk->pc = pc-1; brk->next = brks; brks = brk; } if (dump) { if ((!walk->value || walk->value->type != vt_multi) && walk->size) code("%s%d\n","OP_DUMP",walk->seq); if (walk->value || walk->name_list) to_dump(" { %d, dump_sym_%d, \"%s\" },\n",level, walk->name_list ? walk->name_list->id : walk->seq,walk->id); else to_dump(" { %d, NULL, \"%s\" },\n",level,walk->id); } if (!walk->value) { if (walk->var_len != -1) code("%s%d%d%d/* %s */\n","OP_COPYVAR",walk->var_len,walk->pos, walk->size/8,walk->id); else if (*walk->id != '_' || walk->jump || dump) code("%s%d%d%d/* %s */\n","OP_COPY",walk->jump,walk->pos, walk->size,walk->id); } else switch (walk->value->type) { case vt_id: if (*walk->id != '_' || walk->jump || dump) code("%s%d%d%d/* %s */\n","OP_COPY",walk->jump, walk->pos,walk->size,walk->id); break; case vt_multi: code("%s%s/* %s */\n","OP_IFEND","?",walk->id); walk->patch = pc-1; if (dump) code("%s%d\n","OP_DUMP",walk->seq); /* fall through */ case vt_case: if (*walk->id != '_' || dump) code("%s%d%d%d/* %s */\n","OP_COPY",0,walk->pos, walk->size,walk->id); /* don't move */ count = 0; for (scan = walk->value->tags; scan; scan = scan->next) { count++; for (tag = scan->more; tag; tag = tag->next) count++; } code("%s%d%d%d%d/* %s */\n","OP_CASE",walk->jump, walk->pos,walk->size,count,walk->id); for (scan = walk->value->tags; scan; scan = scan->next) { code("%s%d%s\n",scan->deflt ? "-1" : scan->value, scan->group,"?"); scan->patch = pc-1; for (tag = scan->more; tag; tag = tag->next) { code("%s%d%s\n",tag->value,scan->group,"?"); tag->patch = pc-1; } } for (scan = walk->value->tags; scan; scan = scan->next) { patch(scan->patch,pc-scan->patch-1); for (tag = scan->more; tag; tag = tag->next) patch(tag->patch,pc-tag->patch-1); if (!scan->block && scan->abort_id) code("%s%s\n","OP_ABORT",scan->abort_id); parser(scan->block,level+1,scan->group); if (scan->next) { code("%s%s\n","OP_JUMP","?"); scan->patch = pc-1; } } for (scan = walk->value->tags; scan && scan->next; scan = scan->next) patch(scan->patch,pc-scan->patch-1); if (walk->value->type == vt_multi) { code("%s%d\n","OP_JUMP",walk->patch-pc-3); patch(walk->patch,pc-walk->patch-1); } break; case vt_length: code("%s%d%d%d/* %s */\n","OP_BEGIN_LEN",walk->jump, walk->pos,walk->size,walk->id); if (walk->value->recovery) { code("%s%s%d%d\n","OP_BEGIN_REC",walk->value->recovery, group,"?"); patch_here = pc-1; } tmp_brks = brks; if (!walk->value->block && walk->value->abort_id) code("%s%s\n","OP_ABORT",walk->value->abort_id); parser(walk->value->block,level+1,group); if (walk->value->recovery) { code("%s\n","OP_END_REC"); patch(patch_here,pc); } for (brk = brks; brk; brk = next) { next = brk->next; patch(brk->pc,pc-brk->pc-1); free(brk); } brks = tmp_brks; code("%s /* %s */\n","OP_END_LEN",walk->id); break; default: abort(); } } } void third(FIELD *def) { if (dump) constr_size = 0; else { to_c("\n/*\n"); to_c(" * \"Microcode\" used to construct messages. It copies all\n"); to_c(" * fields from the construction area to the resulting message."); to_c("\n */\n\n"); to_c("static int construct[] = {\n"); begin_code(); construct(def); constr_size = end_code()+1; to_c(" OP_END\n};\n\n"); } to_c("\n/*\n * \"Microcode\" used to parse messages. It detects the\n"); to_c(" * presence of fields and copies them from the message to the\n"); to_c(" * construction area.\n */\n\n"); to_c("static int parse[] = {\n"); if (dump) { to_dump("typedef struct {\n int level;\n const SYM_NAME *sym;\n"); to_dump(" const char *name;\n"); to_dump("} DUMP_FIELD;\n\n"); to_dump("static DUMP_FIELD dump_fields[] = {\n"); } begin_code(); parser(def,0,0); parser_size = end_code()+1; to_c(" OP_END\n};\n\n"); if (dump) to_dump("};\n\n"); } linux-atm-2.5.1/src/qgen/Makefile.in0000644000200100001440000003630411304770376016064 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = qgen$(EXEEXT) subdir = src/qgen DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ql_l.c \ ql_y.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_qgen_OBJECTS = common.$(OBJEXT) file.$(OBJEXT) first.$(OBJEXT) \ ql_y.$(OBJEXT) ql_l.$(OBJEXT) qgen.$(OBJEXT) second.$(OBJEXT) \ third.$(OBJEXT) qgen_OBJECTS = $(am_qgen_OBJECTS) qgen_DEPENDENCIES = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) YLWRAP = $(top_srcdir)/ylwrap YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) SOURCES = $(qgen_SOURCES) DIST_SOURCES = $(qgen_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC_FOR_BUILD@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS_FOR_BUILD@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ qgen_SOURCES = common.c common.h file.c file.h first.c ql_y.y ql_l.l qgen.c \ qgen.h second.c third.c qgen_LDADD = -lfl #TESTS = $(check_PROGRAMS) EXTRA_DIST = ql_y.h ql_y.c ql_l.c all: all-am .SUFFIXES: .SUFFIXES: .c .l .lo .o .obj .y $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/qgen/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/qgen/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list qgen$(EXEEXT): $(qgen_OBJECTS) $(qgen_DEPENDENCIES) @rm -f qgen$(EXEEXT) $(LINK) $(qgen_OBJECTS) $(qgen_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/first.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ql_l.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ql_y.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/second.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/third.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< .l.c: $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f ql_l.c -rm -f ql_y.c clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/saal/0000755000200100001440000000000011304770376013777 5ustar chasuserslinux-atm-2.5.1/src/saal/CVS/0000755000200100001440000000000011304767140014425 5ustar chasuserslinux-atm-2.5.1/src/saal/CVS/Root0000644000200100001440000000007411304767140015274 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/saal/CVS/Repository0000644000200100001440000000002311304767140016522 0ustar chasuserslinux-atm/src/saal linux-atm-2.5.1/src/saal/CVS/Entries0000644000200100001440000000116211304767140015761 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:29 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /pdu.c/1.2.4.1/Wed Aug 5 00:53:32 2009//TV2_5_1 /pdu.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /queue.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /queue.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /saal.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /saal.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /sscf.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /sscf.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /sscop.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /sscop.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 D linux-atm-2.5.1/src/saal/CVS/Tag0000644000200100001440000000001011304767140015052 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/saal/.cvsignore0000644000200100001440000000003310666025265015773 0ustar chasusersMakefile Makefile.in .deps linux-atm-2.5.1/src/saal/Makefile-0.790000644000200100001440000000025607360675443016043 0ustar chasusersLIBS= OBJS=pdu.o saal.o sscf.o sscop.o queue.o do_all: libsaal.a include ../Rules.make ../saal/libsaal.a: libsaal.a libsaal.a: $(OBJS) ar rcs libsaal.a $(OBJS) linux-atm-2.5.1/src/saal/Makefile.am0000644000200100001440000000020107360675443016032 0ustar chasusersnoinst_LIBRARIES = libsaal.a libsaal_a_SOURCES = pdu.h queue.h saal.h sscf.h sscop.h pdu.c queue.c saal.c \ sscf.c sscop.c linux-atm-2.5.1/src/saal/pdu.c0000644000200100001440000001461011236154014014722 0ustar chasusers/* pdu.c - SSCOP (Q.2110) PDU reader */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include "pdu.h" #ifndef NULL #define NULL 0 #endif const char *pdu_name[] = { "???","BGN","BGAK","END","ENDAK","RS","RSAK", "BGREJ","SD","ER","POLL","STAT","USTAT","UD","MD","ERAK" }; void (*pdu_maa)(void *arg,char code,int count) = NULL; void (*pdu_diag)(int severity,const char *fmt,...) = NULL; void print_pdu(const char *label,unsigned char type,void *data, const int *length,const int *s,const int *ps,const int *r,const int *mr, const int *sq) { int len; char *list; switch (type) { case SSCOP_SD: pdu_diag(SP_DEBUG,"%s SD(S=%d,len=%d)",label,*s,*length); break; case SSCOP_POLL: pdu_diag(SP_DEBUG,"%s POLL(PS=%d,S=%d)",label,*ps,*s); break; case SSCOP_STAT: if (*length & 3) { pdu_diag(SP_WARN,"%s STAT PDU has wrong size (%d)",label, *length); break; } len = *length/4; pdu_diag(SP_DEBUG,"%s STAT(PS=%d,MR=%d,R=%d,items=%d:",label,*ps, *mr,*r,len); list = (char *) data; while (len > 1) { pdu_diag(SP_DEBUG,"%s %d..%d",label,read_netl(list), read_netl(list+4)); list += 8; len -= 2; } if (!len) pdu_diag(SP_DEBUG,"%s )",label); else pdu_diag(SP_DEBUG,"%s %d)",label,read_netl(list)); break; case SSCOP_USTAT: if (*length != 8) { pdu_diag(SP_WARN,"%s USTAT PDU has wrong size (%d)",label, *length); break; } list = (char *) data; pdu_diag(SP_DEBUG,"%s USTAT(MR=%d,R=%d,%d..%d)",label,*mr,*r, read_netl(list),read_netl(list+4)); break; case SSCOP_UD: pdu_diag(SP_DEBUG,"%s UD(len=%d)",label,*length); break; case SSCOP_MD: pdu_diag(SP_DEBUG,"%s MD(len=%d)",label,*length); break; case SSCOP_BGN: pdu_diag(SP_DEBUG,"%s BGN(SQ=%d,MR=%d,len=%d)",label,*sq,*mr, *length); break; case SSCOP_BGAK: pdu_diag(SP_DEBUG,"%s BGAK(MR=%d,len=%d)",label,*mr,*length); break; case SSCOP_BGREJ: pdu_diag(SP_DEBUG,"%s BGREJ(len=%d)",label,*length); break; case SSCOP_END: pdu_diag(SP_DEBUG,"%s END(S=%d,len=%d)",label,*s,*length); break; case SSCOP_ENDAK: pdu_diag(SP_DEBUG,"%s ENDAK()",label); break; case SSCOP_RS: pdu_diag(SP_DEBUG,"%s RS(SQ=%d,MR=%d,len=%d)",label,*sq,*mr, *length); break; case SSCOP_RSAK: pdu_diag(SP_DEBUG,"%s RSAK(MR=%d)",label,*mr); break; case SSCOP_ER: pdu_diag(SP_DEBUG,"%s ER(MR=%d)",label,*mr); break; case SSCOP_ERAK: pdu_diag(SP_DEBUG,"%s ERAK(MR=%d)",label,*mr); break; default: pdu_diag(SP_ERROR,"%s unknown PDU type %d\n",label,type); } } int decompose_pdu(void *maa_arg,void *msg,int size,unsigned char *type, int *length,int *s,int *ps,int *r,int *mr,int *sq) { void *last; unsigned char pad; int n; /* * *length is undefined if PDU has no variable-length data part */ if (size < 4 || (size & 3)) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN,"invalid message length (%d)", size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } last = (char *) msg+size-4; *type = SSCOP_TYPE(last); pad = SSCOP_PAD(last); n = SSCOP_N(last); *length = size-4-pad; switch (*type) { case SSCOP_SD: *s = n; break; case SSCOP_POLL: if (size != 8) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN, "POLL PDU has bad length (%d)",size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *s = n; *ps = SSCOP_N(msg); break; case SSCOP_STAT: if (size < 12) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN, "STAT PDU too short (%d)",size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } if (*length & 3) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN, "STAT PDU has bad length (%d)",length); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *r = n; *mr = SSCOP_N((char *) last-4); *ps = SSCOP_N((char *) last-8); *length -= 8; break; case SSCOP_USTAT: if (size != 16) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN, "USTAT PDU has bad length (%d)",size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *r = n; *mr = SSCOP_N((char *) last-4); *length -= 4; break; case SSCOP_UD: case SSCOP_MD: break; case SSCOP_BGN: if (size < 8) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN,"BGN PDU too short (%d)", size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *mr = n; *sq = SSCOP_SQ(last); *length -= 4; break; case SSCOP_BGAK: if (size < 8) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN, "BGAK PDU too short (%d)",size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *mr = n; *length -= 4; break; case SSCOP_BGREJ: if (size < 8) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN, "BGREJ PDU too short (%d)",size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *length -= 4; break; case SSCOP_END: if (size < 8) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN,"END PDU too short (%d)", size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *s = !!SSCOP_S(last); *length -= 4; break; case SSCOP_ENDAK: if (size != 8) { pdu_diag(SP_DEBUG,"ENDAK PDU has bad length (%d)",size); if (pdu_maa) pdu_maa(maa_arg,'U',0); if (size < 4) return -1; /* make it work with Fore */ } break; case SSCOP_RS: if (size < 8) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN,"RS PDU too short (%d)", size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *mr = n; *sq = SSCOP_SQ(last); *length -= 4; break; case SSCOP_RSAK: if (size != 8) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN, "RSAK PDU has bad length (%d)",size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *mr = n; break; case SSCOP_ER: if (size != 8) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN, "ER PDU has bad length (%d)",size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *mr = n; *sq = SSCOP_SQ(last); break; case SSCOP_ERAK: if (size != 8) { pdu_diag(pdu_maa ? SP_DEBUG : SP_WARN, "ERAK PDU has bad length (%d)",size); if (pdu_maa) pdu_maa(maa_arg,'U',0); return -1; } *mr = n; break; default: pdu_diag(SP_ERROR,"unknown PDU type %d (0x%x)",*type,*type); return -1; } return 0; } linux-atm-2.5.1/src/saal/pdu.h0000644000200100001440000000457707360675443014763 0ustar chasusers/* pdu.h - SSCOP (Q.2110) PDU reader */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef PDU_H #define PDU_H #include #include /* SSCOP PDU types, Q.2110 section 7.1 */ #define SSCOP_BGN 1 /* Request Initialization */ #define SSCOP_BGAK 2 /* Request Acknowledgement */ #define SSCOP_BGREJ 7 /* Connection Reject */ #define SSCOP_END 3 /* Disconnect Command */ #define SSCOP_ENDAK 4 /* Disconnect Acknowledgement */ #define SSCOP_RS 5 /* Resynchronization Command */ #define SSCOP_RSAK 6 /* Resynchronization Acknowledgement */ #define SSCOP_ER 9 /* Recovery Command */ #define SSCOP_ERAK 15 /* Recovery Acknowledgement */ #define SSCOP_SD 8 /* Sequence Connection-mode Data */ #define SSCOP_POLL 10 /* Transmitter State Information with request ... */ #define SSCOP_STAT 11 /* Solicited Receiver State Information */ #define SSCOP_USTAT 12 /* Unsolicited Receiver State Information */ #define SSCOP_UD 13 /* Unnumbered User Data */ #define SSCOP_MD 14 /* Unnumbered Management Data */ /* Trailer format macros */ #define SSCOP_TRAIL(type,pad,n) (htonl((n) | ((type) << 24) | ((pad) << 30))) #define SSCOP_S_BIT 0x10000000 #define SSCOP_TYPE(last) ((read_netl(last) >> 24) & 15) #define SSCOP_PAD(last) (read_netl(last) >> 30) #define SSCOP_N(last) (read_netl(last) & 0xffffff) #define SSCOP_S(last) (read_netl(last) & SSCOP_S_BIT) #define SSCOP_SQ(last) (read_netl((char *) last-4) & 0xff) extern const char *pdu_name[]; /* Helper macros for PDU construction and decomposition */ #define PDU_VARS \ unsigned char type; \ int length; \ int s,ps,r,mr,sq #define DECOMPOSE_PDU(maa_arg,msg,size) decompose_pdu(maa_arg,msg,size,&type, \ &length,&s,&ps,&r,&mr,&sq) #define PRINT_PDU(label,data) print_pdu(label,type,data,&length,&s,&ps,&r, \ &mr,&sq) /* * Severity codes for pdu_diag. Surprisingly, they happen to have the same * numerical values as their corresponding diag counterparts. */ #define SP_DEBUG 3 #define SP_WARN 1 #define SP_ERROR 0 extern void (*pdu_maa)(void *arg,char code,int count); extern void (*pdu_diag)(int severity,const char *fmt,...); void print_pdu(const char *label,unsigned char type,void *data, const int *length,const int *s,const int *ps,const int *r,const int *mr, const int *sq); int decompose_pdu(void *maa_arg,void *msg,int size,unsigned char *type, int *length,int *s,int *ps,int *r,int *mr,int *sq); #endif linux-atm-2.5.1/src/saal/queue.c0000644000200100001440000000265107360675443015301 0ustar chasusers/* queue.c - Quick and very very dirty buffer and queue handling */ /* Written 1995-1996 by Werner Almesberger, EPFL-LRC */ #if HAVE_CONFIG_H #include #endif #include #include #include "atmd.h" #include "queue.h" BUFFER *buffer_create(int length,int key) { BUFFER *buf; buf = alloc_t(BUFFER); buf->data = alloc(length); buf->length = length; buf->key = key; return buf; } BUFFER *buffer_clone(BUFFER *b) { BUFFER *buf; buf = buffer_create(b->length,b->key); memcpy(buf->data,b->data,b->length); return buf; } void buffer_discard(BUFFER *b) { free(b->data); free(b); } void queue_init(QUEUE *q) { q->first = q->last = NULL; } void queue_put(QUEUE *q,BUFFER *b) { Q_INSERT_AFTER(q->first,b,q->last); q->last = b; } void queue_remove(QUEUE *q,BUFFER *b) { if (q->last == b) q->last = b->prev; Q_REMOVE(q->first,b); } BUFFER *queue_peek(QUEUE *q) { return q->first; } BUFFER *queue_get(QUEUE *q) { BUFFER *buf; buf = queue_peek(q); if (buf) queue_remove(q,buf); return buf; } BUFFER *queue_lookup(QUEUE *q,int key) { BUFFER *walk; for (walk = q->first; walk; walk = walk->next) if (walk->key == key) break; return walk; } void queue_clear(QUEUE *q) { BUFFER *next; while (q->first) { next = q->first->next; buffer_discard(q->first); q->first = next; } q->last = NULL; } linux-atm-2.5.1/src/saal/queue.h0000644000200100001440000000140707360675443015304 0ustar chasusers/* queue.h - Quick and very very dirty buffer and queue handling */ /* Written 1995-1996 by Werner Almesberger, EPFL-LRC */ #ifndef QUEUE_H #define QUEUE_H typedef struct _buffer { void *data; int length; /* TX buffer: of the entire PDU; RX buffer: of the data */ int key; /* SD.N(S) */ int extra; /* SD.N(PS) */ struct _buffer *next,*prev; } BUFFER; typedef struct { BUFFER *first,*last; } QUEUE; BUFFER *buffer_create(int length,int key); BUFFER *buffer_clone(BUFFER *b); void buffer_discard(BUFFER *b); void queue_init(QUEUE *q); void queue_put(QUEUE *q,BUFFER *b); void queue_remove(QUEUE *q,BUFFER *b); BUFFER *queue_peek(QUEUE *q); BUFFER *queue_get(QUEUE *q); BUFFER *queue_lookup(QUEUE *q,int key); void queue_clear(QUEUE *q); #endif linux-atm-2.5.1/src/saal/saal.c0000644000200100001440000000041607360675443015072 0ustar chasusers/* saal.c - SAAL = SSCF+SSCOP */ /* Written 1995 by Werner Almesberger, EPFL-LRC */ #if HAVE_CONFIG_H #include #endif #include "sscop.h" #include "saal.h" void saal_pdu(SAAL_DSC *dsc,void *buffer,int length) { sscop_pdu(&dsc->sscop,buffer,length); } linux-atm-2.5.1/src/saal/saal.h0000644000200100001440000000073607360675443015104 0ustar chasusers/* saal.h - SAAL user interface */ /* Written 1995 by Werner Almesberger, EPFL-LRC */ #ifndef SAAL_H #define SAAL_H #include "sscf.h" #include "sscop.h" #define SAAL_DSC SSCF_DSC #define SAAL_USER_OPS SSCF_USER_OPS #define start_saal start_sscf #define stop_saal stop_sscf #define saal_estab_req sscf_estab_req #define saal_rel_req sscf_rel_req #define saal_send sscf_send #define saal_unitdata sscf_unitdata void saal_pdu(SAAL_DSC *dsc,void *buffer,int length); #endif linux-atm-2.5.1/src/saal/sscf.c0000644000200100001440000001535007360675443015113 0ustar chasusers/* sscf.c - SSCF (Q.2130) protocol */ /* Written 1995,1998 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include "atmd.h" #include "sscop.h" #include "sscf.h" #define COMPONENT "SSCF" /* --- SSCOP configuration ------------------------------------------------- */ #define SSCF_MaxCC 4 /* give up after 4 retries */ #define SSCF_MaxPD 25 /* POLL after 25 SDs */ #define SSCF_Timer_CC 1000000 /* 1 sec */ #define SSCF_Timer_KEEPALIVE 2000000 /* 2 sec */ #define SSCF_Timer_NORESP 7000000 /* 7 sec */ #define SSCF_Timer_POLL 750000 /* 750 ms */ #define SSCF_Timer_IDLE 15000000 /* 15 sec */ static const char *state_name[] = { "1/2","2/2","4/10","3/4","2/5" }; /* --- Helper function(s) -------------------------------------------------- */ static void next_state(SSCF_DSC *dsc,SSCF_STATE state) { diag(COMPONENT,DIAG_DEBUG,"entering state %s",state_name[state]); dsc->state = state; } /* --- Invocation from SSCOP ----------------------------------------------- */ static void sscf_estab_ind(void *user_data,void *uu_data,int uu_length) { SSCF_DSC *dsc = user_data; if (dsc->state != sscf_11) diag(COMPONENT,DIAG_FATAL,"sscf_estab_ind in state %s", state_name[dsc->state]); next_state(dsc,sscf_410); sscop_estab_resp(&dsc->sscop,NULL,0,1); if (dsc->ops->estab_ind) dsc->ops->estab_ind(dsc->user,uu_data,uu_length); } static void sscf_estab_conf(void *user_data, void *uu_data,int uu_length) { SSCF_DSC *dsc = user_data; if (dsc->state != sscf_22) diag(COMPONENT,DIAG_FATAL,"sscf_estab_conf in state %s", state_name[dsc->state]); next_state(dsc,sscf_410); if (dsc->ops->estab_conf) dsc->ops->estab_conf(dsc->user,uu_data,uu_length); } static void sscf_restart(void *user_data,void *uu_data,int uu_length,int ind) { SSCF_DSC *dsc = user_data; if ((!ind && dsc->state != sscf_34) || (ind && (dsc->state == sscf_11 || dsc->state == sscf_34))) diag(COMPONENT,DIAG_FATAL,"sscf_restart (ind = %d) in state %s", state_name[dsc->state],ind); sscop_estab_resp(&dsc->sscop,NULL,0,1); next_state(dsc,sscf_410); if (dsc->ops->restart) dsc->ops->restart(dsc->user,uu_data,uu_length,ind); } static void sscf_rec_ind(void *user_data) { SSCF_DSC *dsc = user_data; if (dsc->state != sscf_410) diag(COMPONENT,DIAG_FATAL,"sscf_rec_ind in state %s", state_name[dsc->state]); sscop_rec_resp(&dsc->sscop); if (dsc->ops->estab_ind) dsc->ops->estab_ind(dsc->user,NULL,0); } static void sscf_rel_ind(void *user_data,void *uu_data,int uu_length,int user) { SSCF_DSC *dsc = user_data; if (dsc->state == sscf_11 || dsc->state == sscf_34) diag(COMPONENT,DIAG_FATAL,"sscf_rel_ind in state %s", state_name[dsc->state]); next_state(dsc,sscf_11); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,user ? uu_data : NULL,uu_length); } static void sscf_rel_conf(void *user_data) { SSCF_DSC *dsc = user_data; if (dsc->state != sscf_34) diag(COMPONENT,DIAG_FATAL,"sscf_rel_conf in state %s", state_name[dsc->state]); next_state(dsc,sscf_11); if (dsc->ops->rel_conf) dsc->ops->rel_conf(dsc->user); } static void sscf_data_ind(void *user_data,void *data,int length,int sn) { SSCF_DSC *dsc = user_data; if (dsc->state != sscf_410) diag(COMPONENT,DIAG_FATAL,"sscf_data_ind in state %s", state_name[dsc->state]); if (dsc->ops->data_ind) dsc->ops->data_ind(dsc->user,data,length); } static void sscf_res_ind(void *user_data,void *uu_data,int uu_length) { SSCF_DSC *dsc = user_data; if (dsc->state != sscf_410) diag(COMPONENT,DIAG_FATAL,"sscf_res_ind in state %s", state_name[dsc->state]); sscop_res_resp(&dsc->sscop); if (dsc->ops->estab_ind) dsc->ops->estab_ind(dsc->user,uu_data,uu_length); } static void sscf_res_conf(void *user_data) { SSCF_DSC *dsc = user_data; if (dsc->state != sscf_25) diag(COMPONENT,DIAG_FATAL,"sscf_res_conf in state %s", state_name[dsc->state]); next_state(dsc,sscf_410); if (dsc->ops->estab_conf) dsc->ops->estab_conf(dsc->user,NULL,0); } static void sscf_unitdata_ind(void *user_data,void *data,int length) { SSCF_DSC *dsc = user_data; if (dsc->ops->unitdata) dsc->ops->unitdata(dsc->user,data,length); } static void sscf_cpcs_send(void *user_data,void *data,int length) { SSCF_DSC *dsc = user_data; if (dsc->ops->cpcs_send) dsc->ops->cpcs_send(dsc->user,data,length); } static SSCOP_USER_OPS sscf_ops = { sscf_estab_ind, * sscf_estab_conf, * sscf_rel_ind, * sscf_rel_conf, * sscf_restart, sscf_res_ind, sscf_res_conf, sscf_rec_ind, sscf_data_ind, sscf_unitdata_ind, NULL, /* no retr_ind */ NULL, /* no retr_comp */ NULL, /* no maa_data */ NULL, /* no maa_error */ sscf_cpcs_send }; /* --- Invocation from user ------------------------------------------------ */ void start_sscf(SSCF_DSC *dsc,SSCF_USER_OPS *ops,void *user_data, SSCOP_MODE mode) { dsc->state = sscf_11; dsc->ops = ops; dsc->user = user_data; start_sscop(&dsc->sscop,&sscf_ops,dsc,mode); dsc->sscop.cf_max_cc = SSCF_MaxCC; dsc->sscop.cf_max_pd = SSCF_MaxPD; dsc->sscop.cf_timer_cc = SSCF_Timer_CC; dsc->sscop.cf_timer_poll = SSCF_Timer_POLL; dsc->sscop.cf_timer_noresp = SSCF_Timer_NORESP; dsc->sscop.cf_timer_keepalive = SSCF_Timer_KEEPALIVE; dsc->sscop.cf_timer_idle = SSCF_Timer_IDLE; } void stop_sscf(SSCF_DSC *dsc) { stop_sscop(&dsc->sscop); } void sscf_estab_req(SSCF_DSC *dsc,void *uu_data,int uu_length) { switch (dsc->state) { case sscf_11: case sscf_34: next_state(dsc,sscf_22); sscop_estab_req(&dsc->sscop,uu_data,uu_length,1); return; case sscf_410: next_state(dsc,sscf_25); sscop_res_req(&dsc->sscop,uu_data,uu_length); return; default: break; } diag(COMPONENT,DIAG_FATAL,"sscf_estab_req invoked in state %s", state_name[dsc->state]); } void sscf_rel_req(SSCF_DSC *dsc,void *uu_data,int uu_length) { switch (dsc->state) { case sscf_11: if (dsc->ops->rel_conf) dsc->ops->rel_conf(dsc->user); return; case sscf_22: case sscf_410: case sscf_25: next_state(dsc,sscf_34); sscop_rel_req(&dsc->sscop,uu_data,uu_length); return; default: break; } diag(COMPONENT,DIAG_FATAL,"sscf_rel_req invoked in state %s", state_name[dsc->state]); } void sscf_send(SSCF_DSC *dsc,void *data,int length) { switch (dsc->state) { case sscf_11: return; case sscf_410: sscop_send(&dsc->sscop,data,length); return; default: break; } diag(COMPONENT,DIAG_WARN,"sscf_send invoked in state %s", state_name[dsc->state]); /* make fatal later @@@ */ } void sscf_unitdata(SSCF_DSC *dsc,void *data,int length) { sscop_unitdata(&dsc->sscop,data,length); } linux-atm-2.5.1/src/saal/sscf.h0000644000200100001440000000321707360675443015117 0ustar chasusers/* sscf.h - SSCF (Q.2130) user interface */ /* Written 1995,1998 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef SSCF_H #define SSCF_H #include "sscop.h" typedef enum { sscf_11,sscf_22,sscf_410,sscf_34,sscf_25 } SSCF_STATE; typedef struct { SSCF_STATE state; struct _sscf_user_ops *ops; void *user; SSCOP_DSC sscop; } SSCF_DSC; typedef struct _sscf_user_ops { void (*estab_ind)(void *user_data,void *uu_data,int uu_length); /* AAL-ESTABLISH.indication */ void (*estab_conf)(void *user_data,void *uu_data,int uu_length); /* AAL-ESTABLISH.confirm */ void (*rel_ind)(void *user_data,void *uu_data,int uu_length); /* AAL-RELEASE.indication */ void (*rel_conf)(void *user_data); /* AAL-RELEASE.confirm */ void (*restart)(void *user_data,void *uu_data,int uu_length,int ind); /* AAL-RELEASE.indication or AAL-RELEASE.confirm immediately followed by AAL-ESTABLISH.indication */ void (*data_ind)(void *user_data,void *data,int length); /* AAL-DATA.indication */ void (*unitdata)(void *user_data,void *data,int length); /* AAL-UNITDATA.indication */ void (*cpcs_send)(void *user_data,void *data,int length); } SSCF_USER_OPS; /* Attach/detach protocol */ void start_sscf(SSCF_DSC *dsc,SSCF_USER_OPS *ops,void *user_data, SSCOP_MODE _mode); /* gcc 2.7.2 firmly believes "mode" can shadow ... @%! */ void stop_sscf(SSCF_DSC *dsc); /* Connection control */ void sscf_estab_req(SSCF_DSC *dsc,void *uu_data,int uu_length); void sscf_rel_req(SSCF_DSC *dsc,void *uu_data,int uu_length); /* Send data */ void sscf_send(SSCF_DSC *dsc,void *data,int length); void sscf_unitdata(SSCF_DSC *dsc,void *data,int length); #endif linux-atm-2.5.1/src/saal/sscop.c0000644000200100001440000012536307360675443015312 0ustar chasusers/* sscop.c - SSCOP (Q.2110) protocol */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include /* for htonl */ #include "atmd.h" #include "sscop.h" #include "queue.h" #include "pdu.h" /* * This is a quite exact translation of the ITU-T SSCOP SDL diagrams. They * are a pleasant example of how protocols _should_ be specified. It took me * less than a week to implement this. * * Calls back to the SSCOP user are always done last in a sequence of actions * to avoid reentrancy problems if the user invokes SSCOP from the callback * function. (Exception: data indications are delivered when needed. So you * shouldn't kill the protocol stack in the middle of this. Releasing the * call and such is fine, though.) * * Sequences of an AA-RELASE.indication/confirm immediately followed by a * AA-ESTABLISH.indication have been replaced by a new primitive called * "restart". This way, the SSCOP user is able to distinguish conditions where * SSCOP is in idle state after a callback from conditions where SSCOP wants to * continue (and where the user many not want to stop SSCOP). * * The entity receiving management information (e.g. maa_error) must not issue * any SSCOP primitives from that callback routine. Instead, actions must be * queued until SSCOP finishes processing of the current event. * * Comments of the type xx.yy are section or figure numbers in Q.2110 * * KNOWN BUGS: The queue and buffer management stinks, especially the "buffer * cloning". All this ought to be rewritten to use skbuffs. Since * this will happen anyway if SSCOP ever gets integrated into the * kernel, we can safely ignore the problem for now. * * The lower layer is always assumed to be ready for sending. If * this is not the case (shouldn't happen), the PDU should be * discarded (or the process might be blocked for a few cycles). */ #define COMPONENT "SSCOP" /* Configurable SSCOP parameters */ #define SSCOP_CF_MR 30 /* buffer size */ #define SSCOP_CF_MaxCC 10 /* max timeouts */ #define SSCOP_CF_MaxPD 100 /* SD/POLL ratio */ #define SSCOP_CF_MaxSTAT 67 /* max elements in STAT PDU, 7.7 */ #undef POLL_AFTER_RETRANSMISSION /* 20.38, #define this if needed */ /* Timers */ /* * Assumptions: RTT = 1 sec, remote needs about 1 sec to wake up. SSCF changes * all this anyway. */ #define TIMER_CC 2000000 /* 2 sec (== RTT+eps) */ #define TIMER_POLL 1000000 /* 1 sec (== RTT) */ #define TIMER_NORESP 7000000 /* 7 sec (keepalive+RTT+eps) */ #define TIMER_KEEPALIVE 5000000 /* 5 sec (> poll && > RTT) */ #define TIMER_IDLE 30000000 /* 30 sec (>> keepalive) */ /* Some helper macros */ #define START_TIMER(t) ({ STOP_TIMER(dsc->timer_##t); \ dsc->timer_##t = start_timer(dsc->cf_timer_##t, sscop_##t##_exp,dsc); }) #define STOP_TIMER(t) ({ if (t) stop_timer(t); t = NULL; }) #define MOD24(x) ((x) & ((1 << 24)-1)) #define INC24(v) (v = MOD24(v+1)) #define INC8(v) (v = (v+1) & 255) #define NORMALIZE(x,b) (((x)-(b)) & 0xffffff) #define NORM_RX(v) NORMALIZE((v),dsc->vr_r) #define NORM_TX(v) NORMALIZE((v),dsc->vt_a) #define NORM_TXP(v) NORMALIZE((v),dsc->vt_pa) #define NEGATIVE(v) ((v) & 0x800000) static const char *state_name[] = { "Idle","OutConnPend","InConnPend", "OutDiscPend","OutResyPend","InResyPend","OutRecPend","RecRespPend", "InRecPend","DataTransReady" }; static void do_diag(int severity,const char *fmt,...) { va_list ap; va_start(ap,fmt); vdiag(COMPONENT,severity,fmt,ap); va_end(ap); } static void maa_error(void *arg,char code,int count) { /* * arg is void * because it's also used in pdu.c, which doesn't know about * SSCOP_DSC */ SSCOP_DSC *dsc = arg; static const char *const msgs[] = { "A:SD PDU","B:BGN PDU","C:BGAK PDU","D:BGREJ PDU","E:END PDU", "F:ENDAK PDU","G:POLL PDU","H:STAT PDU","I:USTAT PDU","J:RS", "K:RSAK PDU","L:ER","M:ERAK","O:VT(CC)>=MaxCC", "P:Timer_NO_RESPONSE expiry","Q:SD or POLL, N(S) error", "R:STAT N(PS) error","S:STAT N(R) or list elements error", "T:USTAT N(R) or list elements error","U:PDU length violation", "V:SD PDUs must be retransmitted","W:Lack of credit", "X:Credit obtained","\0:Unknown error code" }; const char *const *walk; if (dsc->ops->maa_error) if (!dsc->ops->maa_error(dsc->user,code,count)) return; for (walk = msgs; **walk; walk++) if (**walk == code) break; if (code != 'V') diag(COMPONENT,DIAG_WARN,"layer management - error %c \"%s\"",code, (*walk)+2); else diag(COMPONENT,DIAG_WARN,"layer management - error %c,%d \"%s\"",code, count,(*walk)+2); } static int sdu_length(BUFFER *buf) { return buf->length-4-SSCOP_PAD((char *) buf->data+buf->length-4); } static BUFFER *build_pdu(SSCOP_DSC *dsc,unsigned char type,void *data, int num) { BUFFER *buf; uint32_t *trailer; int pad; buf = buffer_create(num+12,dsc->vt_s); /* space for trailers */ if (data && num) { memset((char *) buf->data+(num & ~3),0,4); /* clear padding area */ memcpy((unsigned char *) buf->data,data,num); pad = (4-(num & 3)) & 3; trailer = (uint32_t *) ((char *) buf->data+num+pad); } else { pad = 0; trailer = (uint32_t *) buf->data; } diag(COMPONENT,DIAG_DEBUG,"generating %s PDU",pdu_name[type]); switch (type) { case SSCOP_BGN: case SSCOP_RS: case SSCOP_ER: *trailer++ = dsc->mode == sscop_qsaal1 ? SSCOP_TRAIL(0,0,0) : SSCOP_TRAIL(0,0,dsc->vt_sq); *trailer++ = SSCOP_TRAIL(type,pad,dsc->vr_mr); break; case SSCOP_BGAK: case SSCOP_RSAK: case SSCOP_ERAK: *trailer++ = SSCOP_TRAIL(0,0,0); *trailer++ = SSCOP_TRAIL(type,pad,dsc->vr_mr); break; case SSCOP_END: /* S bit is indicated by "num" */ *trailer++ = SSCOP_TRAIL(0,0,0); *trailer++ = SSCOP_TRAIL(type,pad,0) | (num ? htonl(SSCOP_S_BIT) : 0); break; case SSCOP_BGREJ: case SSCOP_ENDAK: *trailer++ = SSCOP_TRAIL(0,0,0); *trailer++ = SSCOP_TRAIL(type,pad,0); break; case SSCOP_POLL: *trailer++ = SSCOP_TRAIL(0,0,dsc->vt_ps); /* fall through */ case SSCOP_SD: *trailer++ = SSCOP_TRAIL(type,pad,dsc->vt_s); break; case SSCOP_STAT: *trailer++ = SSCOP_TRAIL(0,0,dsc->vr_ps); /* fall through */ case SSCOP_USTAT: *trailer++ = SSCOP_TRAIL(0,0,dsc->vr_mr); *trailer++ = SSCOP_TRAIL(type,0,dsc->vr_r); break; case SSCOP_UD: case SSCOP_MD: *trailer++ = SSCOP_TRAIL(type,pad,0); break; default: diag(COMPONENT,DIAG_FATAL, "requested construction of unknown PDU type %d",type); } buf->length = (char *) trailer-(char *) buf->data; return buf; } static void emit_pdu(SSCOP_DSC *dsc,BUFFER *buf) { BUFFER **last; { PDU_VARS; if (DECOMPOSE_PDU(dsc,buf->data,buf->length)) diag(COMPONENT,DIAG_FATAL,"composed garbage"); PRINT_PDU("SEND",buf->data); } if (dsc->ops->cpcs_send) dsc->ops->cpcs_send(dsc->user,buf->data,buf->length); switch (SSCOP_TYPE((char *) buf->data+buf->length-4)) { case SSCOP_BGN: last = &dsc->last_bgn; break; case SSCOP_END: last = &dsc->last_end; break; case SSCOP_RS: last = &dsc->last_rs; break; case SSCOP_ER: last = &dsc->last_er; break; default: buffer_discard(buf); return; } if (*last && *last != buf) { buffer_discard(*last); *last = NULL; } *last = buf; } static void resend_pdu(SSCOP_DSC *dsc,BUFFER *buf) { if (!buf) diag(COMPONENT,DIAG_FATAL,"resend buffer is NULL"); emit_pdu(dsc,buf); } static void send_pdu(SSCOP_DSC *dsc,unsigned char type,void *data,int size) { BUFFER *buf; buf = build_pdu(dsc,type,data,size); emit_pdu(dsc,buf); } static void next_state(SSCOP_DSC *dsc,SSCOP_STATE state) { diag(COMPONENT,DIAG_DEBUG,"entering state %s (%d)",state_name[state], (int) state); dsc->state = state; } static void bad_pdu(SSCOP_DSC *dsc,unsigned char type) { /* 111111 */ /* 0123456789012345 */ maa_error(dsc,"?BCxFJKDALGHIyzM"[type],0); } static void send_ustat(SSCOP_DSC *dsc,int first,int last) { uint32_t range[2]; range[0] = htonl(first); range[1] = htonl(last); send_pdu(dsc,SSCOP_USTAT,range,8); } /* --- Utility functions --------------------------------------------------- */ static void clear_receive_buffer(SSCOP_DSC *dsc) { queue_clear(&dsc->rx_buf); } static void clear_transmission_buffer(SSCOP_DSC *dsc) { queue_clear(&dsc->tx_buf); } static void clear_transmission_queue(SSCOP_DSC *dsc) { queue_clear(&dsc->tx_q); } static void clear_retransmission_queue(SSCOP_DSC *dsc) { queue_clear(&dsc->rt_q); } /* --- SSCOP subroutines --------------------------------------------------- */ static void sscop_poll_exp(void *user); static void sscop_keepalive_exp(void *user); static void sscop_noresp_exp(void *user); static void release_buffers(SSCOP_DSC *dsc) /* 20.49 */ { clear_transmission_queue(dsc); clear_transmission_buffer(dsc); clear_retransmission_queue(dsc); clear_receive_buffer(dsc); } static void clear_transmitter(SSCOP_DSC *dsc) /* 20.49 */ { if (!dsc->clear_buffers) { clear_transmission_queue(dsc); clear_transmission_buffer(dsc); } } static void prepare_recovery(SSCOP_DSC *dsc) /* 20.49 */ { if (dsc->clear_buffers) { clear_transmission_queue(dsc); clear_transmission_buffer(dsc); } clear_retransmission_queue(dsc); } static void prepare_retrieval(SSCOP_DSC *dsc) /* 20.49 */ { prepare_recovery(dsc); clear_receive_buffer(dsc); } static void deliver_data(SSCOP_DSC *dsc) /* 20.49 */ { BUFFER *buf; if (!dsc->clear_buffers) { while ((buf = queue_get(&dsc->rx_buf))) { if (dsc->ops->data_ind) dsc->ops->data_ind(dsc->user,buf->data,buf->length,buf->key); buffer_discard(buf); } } clear_receive_buffer(dsc); } static void initialize_state_variables(SSCOP_DSC *dsc) /* 20.49 */ { dsc->vt_s = dsc->vt_ps = dsc->vt_a = 0; dsc->vt_pa = 1; dsc->vt_pd = 0; dsc->credit = 1; dsc->vr_r = dsc->vr_h = 0; } static int detect_retransmission(SSCOP_DSC *dsc,int sq) /* 20.50 */ { if (dsc->mode == sscop_qsaal1) return 0; if (dsc->vr_sq == sq) return 1; dsc->vr_sq = sq; return 0; } static void set_poll_timer(SSCOP_DSC *dsc) /* 20.50 */ { if (queue_peek(&dsc->tx_q) || dsc->vt_s != dsc->vt_a) START_TIMER(poll); else START_TIMER(keepalive); } static void reset_data_transfer_timers(SSCOP_DSC *dsc) /* 20.51 */ { STOP_TIMER(dsc->timer_poll); STOP_TIMER(dsc->timer_keepalive); STOP_TIMER(dsc->timer_noresp); STOP_TIMER(dsc->timer_idle); } static void set_data_transfer_timers(SSCOP_DSC *dsc) /* 20.51 */ { START_TIMER(poll); START_TIMER(noresp); } static void initialize_vr_mr(SSCOP_DSC *dsc) { dsc->vr_mr = SSCOP_CF_MR; } static void update_vr_mr(SSCOP_DSC *dsc) { dsc->vr_mr = MOD24(dsc->vr_r+SSCOP_CF_MR); } /* --- Timer handlers ------------------------------------------------------ */ static void sscop_cc_exp(void *user) { SSCOP_DSC *dsc = user; diag(COMPONENT,DIAG_DEBUG,"Timer CC has expired"); dsc->timer_cc = NULL; switch (dsc->state) { case sscop_outconn: /* 20.9 */ if (dsc->vt_cc < dsc->cf_max_cc) { dsc->vt_cc++; resend_pdu(dsc,dsc->last_bgn); START_TIMER(cc); return; } maa_error(dsc,'O',0); send_pdu(dsc,SSCOP_END,NULL,1); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return; case sscop_outdisc: /* 20.15 */ if (dsc->vt_cc < dsc->cf_max_cc) { dsc->vt_cc++; resend_pdu(dsc,dsc->last_end); START_TIMER(cc); return; } maa_error(dsc,'O',0); next_state(dsc,sscop_idle); if (dsc->ops->rel_conf) dsc->ops->rel_conf(dsc->user); return; case sscop_outres: /* 20.18 */ if (dsc->vt_cc < dsc->cf_max_cc) { dsc->vt_cc++; resend_pdu(dsc,dsc->last_rs); START_TIMER(cc); return; } maa_error(dsc,'O',0); send_pdu(dsc,SSCOP_END,NULL,1); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return; case sscop_outrec: /* 20.24 */ if (dsc->vt_cc < dsc->cf_max_cc) { dsc->vt_cc++; resend_pdu(dsc,dsc->last_er); START_TIMER(cc); return; } maa_error(dsc,'O',0); send_pdu(dsc,SSCOP_END,NULL,1); clear_receive_buffer(dsc); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return; default: break; } diag(COMPONENT,DIAG_FATAL,"Timer CC expired in state %s", state_name[dsc->state]); } static void sscop_common_exp(void *user) { SSCOP_DSC *dsc = user; if (dsc->state != sscop_ready) { diag(COMPONENT,DIAG_FATAL,"sscop_common_exp invoked in state %s", state_name[dsc->state]); return; } INC24(dsc->vt_ps); send_pdu(dsc,SSCOP_POLL,NULL,0); dsc->vt_pd = 0; set_poll_timer(dsc); } static void sscop_poll_exp(void *user) { SSCOP_DSC *dsc = user; diag(COMPONENT,DIAG_DEBUG,"Timer POLL has expired"); dsc->timer_poll = NULL; sscop_common_exp(user); } static void sscop_keepalive_exp(void *user) { SSCOP_DSC *dsc = user; diag(COMPONENT,DIAG_DEBUG,"Timer KEEPALIVE has expired"); dsc->timer_keepalive = NULL; sscop_common_exp(user); } static void sscop_idle_exp(void *user) { SSCOP_DSC *dsc = user; diag(COMPONENT,DIAG_DEBUG,"Timer IDLE has expired"); dsc->timer_idle = NULL; START_TIMER(noresp); sscop_common_exp(user); } static void sscop_noresp_exp(void *user) { SSCOP_DSC *dsc = user; diag(COMPONENT,DIAG_DEBUG,"Timer NORESP has expired"); dsc->timer_noresp = NULL; if (dsc->state != sscop_ready) { diag(COMPONENT,DIAG_FATAL,"Timer NORESP expired in state %s", state_name[dsc->state]); return; } reset_data_transfer_timers(dsc); maa_error(dsc,'P',0); send_pdu(dsc,SSCOP_END,NULL,1); prepare_retrieval(dsc); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); } /* --- Transmit engine ----------------------------------------------------- */ static void try_to_send(SSCOP_DSC *dsc) { BUFFER *buf,*buf2; if (dsc->state != sscop_ready) return; while (queue_peek(&dsc->rt_q) || NORM_TX(dsc->vt_s) < NORM_TX(dsc->vt_ms) || dsc->timer_idle) { buf = queue_get(&dsc->rt_q); if (buf) { if (!(buf2 = queue_lookup(&dsc->tx_buf,buf->key))) diag(COMPONENT,DIAG_FATAL,"didn't find PDU %d in TX buffer", buf->key); emit_pdu(dsc,buf); buf2->extra = dsc->vt_ps; #ifdef POLL_AFTER_RETRANSMISSION if (queue_peek(dsc->rt_q)) /* fall through to goto */ #endif goto B; /* sigh ... */ } else { if (!queue_peek(&dsc->tx_q)) return; if (NORM_TX(dsc->vt_s) < NORM_TX(dsc->vt_ms)) { buf = queue_get(&dsc->tx_q); buf2 = build_pdu(dsc,SSCOP_SD,buf->data,buf->length); buffer_discard(buf); buf2->key = dsc->vt_s; buf2->extra = dsc->vt_ps; emit_pdu(dsc,buffer_clone(buf2)); queue_put(&dsc->tx_buf,buf2); INC24(dsc->vt_s); B: /* B */ dsc->vt_pd++; if (dsc->timer_poll) { if (dsc->vt_pd < dsc->cf_max_pd) continue; } else { if (!dsc->timer_idle) STOP_TIMER(dsc->timer_keepalive); else { STOP_TIMER(dsc->timer_idle); START_TIMER(noresp); } if (dsc->vt_pd < dsc->cf_max_pd) { START_TIMER(poll); continue; } } } else { STOP_TIMER(dsc->timer_idle); START_TIMER(noresp); } } /* A */ INC24(dsc->vt_ps); send_pdu(dsc,SSCOP_POLL,NULL,0); dsc->vt_pd = 0; START_TIMER(poll); } } /* --- Incoming non-CC PDUs in Data Transfer Ready state ------------------- */ static void start_error_recov(SSCOP_DSC *dsc,char code) { reset_data_transfer_timers(dsc); maa_error(dsc,code,0); /* D */ dsc->vt_cc = 1; INC8(dsc->vt_sq); initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_ER,NULL,0); prepare_recovery(dsc); START_TIMER(cc); next_state(dsc,sscop_outrec); } static void data_sd(SSCOP_DSC *dsc,int s,void *msg,int length) /* 20.38-39 */ { BUFFER *buf; if (NORM_RX(s) >= NORM_RX(dsc->vr_mr)) { if (NORM_RX(dsc->vr_h) < NORM_RX(dsc->vr_mr)) { send_ustat(dsc,dsc->vr_h,dsc->vr_mr); dsc->vr_h = dsc->vr_mr; } return; } if (s == dsc->vr_r) { if (dsc->ops->data_ind) dsc->ops->data_ind(dsc->user,msg,length,s); if (s == dsc->vr_h) { dsc->vr_r = dsc->vr_h = MOD24(s+1); update_vr_mr(dsc); return; } while (1) { INC24(dsc->vr_r); update_vr_mr(dsc); buf = queue_lookup(&dsc->rx_buf,dsc->vr_r); if (!buf) break; queue_remove(&dsc->rx_buf,buf); if (dsc->ops->data_ind) dsc->ops->data_ind(dsc->user,buf->data,buf->length,buf->key); buffer_discard(buf); } return; } buf = buffer_create(length,s); memcpy(buf->data,msg,length); if (s == dsc->vr_h) { queue_put(&dsc->rx_buf,buf); INC24(dsc->vr_h); return; } if (NORM_RX(dsc->vr_h) < NORM_RX(s)) { queue_put(&dsc->rx_buf,buf); send_ustat(dsc,dsc->vr_h,s); dsc->vr_h = MOD24(s+1); return; } if (!queue_lookup(&dsc->rx_buf,s)) queue_put(&dsc->rx_buf,buf); else { buffer_discard(buf); start_error_recov(dsc,'Q'); } } /* * Some of the NORM_RXs in data_poll are certainly unnecessary. Maybe even * all of them could be removed ... */ static void data_poll(SSCOP_DSC *dsc,int s) /* 20.41-42 */ { int curr,i; if (!dsc->list) dsc->list = alloc(dsc->cf_max_stat*sizeof(uint32_t)); if (NORM_RX(dsc->vr_h) > NORM_RX(s)) { start_error_recov(dsc,'Q'); return; } dsc->vr_h = NORM_RX(dsc->vr_mr) < NORM_RX(s) ? dsc->vr_mr : s; /* K */ curr = 0; i = dsc->vr_r; if (i != dsc->vr_h) { while (NORM_RX(i) < NORM_RX(dsc->vr_h)) { if (queue_lookup(&dsc->rx_buf,i)) { INC24(i); continue; } dsc->list[curr++] = htonl(i); if (curr >= dsc->cf_max_stat) { send_pdu(dsc,SSCOP_STAT,dsc->list,curr*4); curr = 0; dsc->list[curr++] = htonl(i); } do INC24(i); while (i != dsc->vr_h && !queue_lookup(&dsc->rx_buf,i)); if (i == dsc->vr_h) break; /* append is done right b4 send_pdu */ dsc->list[curr++] = htonl(i); INC24(i); /* short-cut, since i < VR(H) && SD.N(S) == i in RB */ } dsc->list[curr++] = htonl(i); } send_pdu(dsc,SSCOP_STAT,dsc->list,curr*4); } static void data_ustat(SSCOP_DSC *dsc,int mr,int r,int e1,int e2) /* 20.43 */ { BUFFER *buf,*buf2; int seq1,seq2,i; if (NORM_TX(dsc->vt_a) <= NORM_TX(r) && NORM_TX(r) < NORM_TX(dsc->vt_s)) { for (i = dsc->vt_a; i != r; INC24(i)) { buf = queue_lookup(&dsc->tx_buf,i); if (buf) { queue_remove(&dsc->tx_buf,buf); buffer_discard(buf); } } dsc->vt_a = r; dsc->vt_ms = mr; seq1 = e1; seq2 = e2; if (NORM_TX(dsc->vt_a) <= NORM_TX(seq1) && NORM_TX(seq1) < NORM_TX(seq2) && NORM_TX(seq2) < NORM_TX(dsc->vt_s)) { /* G */ while ((buf = queue_lookup(&dsc->tx_buf,seq1))) { buf2 = buffer_clone(buf); queue_put(&dsc->rt_q,buf2); INC24(seq1); if (seq1 == seq2) { maa_error(dsc,'V',e2-e1); return; } } } } /* F */ start_error_recov(dsc,'T'); } static void data_stat(SSCOP_DSC *dsc,int ps,int mr,int r,void *list, int length) /* 20.44-46 */ { BUFFER *buf,*buf2; char *curr; int i,count,seq1,seq2; if (NEGATIVE(NORM_TXP(ps)) || NORM_TXP(ps) > NORM_TXP(dsc->vt_ps)) { start_error_recov(dsc,'R'); return; } if (NORM_TX(dsc->vt_a) > NORM_TX(r) || NORM_TX(r) > NORM_TX(dsc->vt_s)) { /* H */ start_error_recov(dsc,'S'); return; } for (i = dsc->vt_a; i != r; INC24(i)) { buf = queue_lookup(&dsc->tx_buf,i); if (buf) { queue_remove(&dsc->tx_buf,buf); buffer_discard(buf); } } dsc->vt_a = r; dsc->vt_pa = ps; dsc->vt_ms = mr; i = length; curr = list; count = 0; if (i > 1) { seq1 = SSCOP_N(curr); curr += 4; i--; if (NORM_TX(seq1) >= NORM_TX(dsc->vt_s)) { /* H */ start_error_recov(dsc,'S'); return; } /* I */ do { seq2 = SSCOP_N(curr); curr += 4; i--; if (NORM_TX(seq1) >= NORM_TX(seq2) || NORM_TX(seq2) > NORM_TX(dsc->vt_s)) { /* H */ start_error_recov(dsc,'S'); return; } do { if (!(buf = queue_lookup(&dsc->tx_buf,seq1))) { /* H */ start_error_recov(dsc,'S'); return; } if (NEGATIVE(NORM_TXP(buf->extra)) && NORM_TXP(ps) <= NORM_TXP(dsc->vt_ps) && !queue_lookup(&dsc->rt_q,seq1)) { buf2 = buffer_clone(buf); queue_put(&dsc->rt_q,buf2); count++; } INC24(seq1); } while (seq1 != seq2); /* J */ if (!i) break; seq2 = SSCOP_N(curr); curr += 4; i--; if (NORM_TX(seq1) >= NORM_TX(seq2) || NORM_TX(seq2) > NORM_TX(dsc->vt_s)) { /* H */ start_error_recov(dsc,'S'); return; } do { if (dsc->clear_buffers) { buf = queue_lookup(&dsc->tx_buf,seq1); if (buf) { queue_remove(&dsc->tx_buf,buf); buffer_discard(buf); } } INC24(seq1); } while (seq1 != seq2); } while (i); maa_error(dsc,'V',count); } /* L */ if (dsc->credit != (NORM_TX(dsc->vt_s) < NORM_TX(dsc->vt_ms))) maa_error(dsc,(dsc->credit = !dsc->credit) ? 'X' : 'W',0); if (dsc->timer_poll) START_TIMER(noresp); else if (!dsc->timer_idle) { STOP_TIMER(dsc->timer_keepalive); STOP_TIMER(dsc->timer_noresp); START_TIMER(idle); } } /* --- Incoming PDUs ------------------------------------------------------- */ /* * Returns 0 if the descriptor might conceivably be gone when returning, * 1 otherwise. */ static int handle_sscop_pdu(SSCOP_DSC *dsc,void *msg,int size) { PDU_VARS; if (DECOMPOSE_PDU(dsc,msg,size)) return 1; PRINT_PDU("RECV",msg); switch (type) { case SSCOP_UD: if (dsc->ops->unitdata) dsc->ops->unitdata(dsc->user,msg,length); return 1; case SSCOP_MD: if (dsc->ops->maa_data) dsc->ops->maa_data(dsc->user,msg,length); return 1; default: break; } switch (dsc->state) { case sscop_idle: switch (type) { case SSCOP_BGREJ: bad_pdu(dsc,type); return 1; case SSCOP_BGN: if (detect_retransmission(dsc,sq)) { send_pdu(dsc,SSCOP_BGREJ,NULL,0); /* no SSCOP-UU */ return 1; } dsc->vt_ms = mr; next_state(dsc,sscop_inconn); if (dsc->ops->estab_ind) dsc->ops->estab_ind(dsc->user,msg,length); return 1; case SSCOP_ENDAK: return 1; case SSCOP_END: send_pdu(dsc,SSCOP_ENDAK,NULL,0); return 1; case SSCOP_ER: case SSCOP_POLL: case SSCOP_SD: case SSCOP_BGAK: case SSCOP_ERAK: case SSCOP_STAT: case SSCOP_USTAT: case SSCOP_RS: case SSCOP_RSAK: bad_pdu(dsc,type); send_pdu(dsc,SSCOP_END,NULL,1); return 1; default: break; } break; case sscop_outconn: /* 20.8-10 */ switch (type) { case SSCOP_ENDAK: case SSCOP_SD: case SSCOP_ERAK: case SSCOP_END: case SSCOP_STAT: case SSCOP_USTAT: case SSCOP_POLL: case SSCOP_ER: case SSCOP_RSAK: case SSCOP_RS: return 1; /* ignore PDU */ case SSCOP_BGAK: STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; initialize_state_variables(dsc); set_data_transfer_timers(dsc); next_state(dsc,sscop_ready); if (dsc->ops->estab_conf) dsc->ops->estab_conf(dsc->user,msg,length); return 1; case SSCOP_BGREJ: STOP_TIMER(dsc->timer_cc); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,msg,length,1); return 0; case SSCOP_BGN: if (detect_retransmission(dsc,sq)) return 1; STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_BGAK,NULL,0); initialize_state_variables(dsc); set_data_transfer_timers(dsc); next_state(dsc,sscop_ready); if (dsc->ops->estab_conf) dsc->ops->estab_conf(dsc->user,msg,length); return 1; default: break; } break; case sscop_inconn: /* 20.11-13 */ switch (type) { case SSCOP_BGN: if (detect_retransmission(dsc,sq)) return 1; dsc->vt_ms = mr; if (dsc->ops->restart) dsc->ops->restart(dsc->user,msg,length,1); return 1; case SSCOP_ER: case SSCOP_BGAK: case SSCOP_ERAK: case SSCOP_RSAK: case SSCOP_RS: bad_pdu(dsc,type); return 1; case SSCOP_ENDAK: case SSCOP_BGREJ: bad_pdu(dsc,type); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; case SSCOP_SD: case SSCOP_USTAT: case SSCOP_STAT: case SSCOP_POLL: bad_pdu(dsc,type); send_pdu(dsc,SSCOP_END,NULL,1); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; case SSCOP_END: send_pdu(dsc,SSCOP_ENDAK,NULL,0); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,msg,length,!s); return 0; default: break; } break; case sscop_outdisc: /* 20.14-16 */ switch (type) { case SSCOP_SD: case SSCOP_BGAK: case SSCOP_POLL: case SSCOP_STAT: case SSCOP_USTAT: case SSCOP_ERAK: case SSCOP_RS: case SSCOP_RSAK: case SSCOP_ER: return 1; case SSCOP_END: STOP_TIMER(dsc->timer_cc); send_pdu(dsc,SSCOP_ENDAK,NULL,0); next_state(dsc,sscop_idle); if (dsc->ops->rel_conf) dsc->ops->rel_conf(dsc->user); return 0; case SSCOP_ENDAK: case SSCOP_BGREJ: STOP_TIMER(dsc->timer_cc); next_state(dsc,sscop_idle); if (dsc->ops->rel_conf) dsc->ops->rel_conf(dsc->user); return 0; case SSCOP_BGN: if (detect_retransmission(dsc,sq)) { send_pdu(dsc,SSCOP_BGAK,NULL,0); resend_pdu(dsc,dsc->last_end); return 1; } STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; next_state(dsc,sscop_inconn); if (dsc->ops->restart) dsc->ops->restart(dsc->user,msg,length,0); return 1; } case sscop_outres: /* 20.17-19 */ switch (type) { case SSCOP_ER: case SSCOP_POLL: case SSCOP_STAT: case SSCOP_USTAT: case SSCOP_BGAK: case SSCOP_ERAK: case SSCOP_SD: return 1; /* ignore */ case SSCOP_BGN: if (detect_retransmission(dsc,sq)) { send_pdu(dsc,SSCOP_BGAK,NULL,0); resend_pdu(dsc,dsc->last_rs); return 1; } STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; next_state(dsc,sscop_inconn); if (dsc->ops->restart) dsc->ops->restart(dsc->user,msg,length,1); return 1; case SSCOP_ENDAK: case SSCOP_BGREJ: STOP_TIMER(dsc->timer_cc); bad_pdu(dsc,type); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; case SSCOP_END: STOP_TIMER(dsc->timer_cc); send_pdu(dsc,SSCOP_ENDAK,NULL,0); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,msg,length,!s); return 0; case SSCOP_RS: if (detect_retransmission(dsc,sq)) return 1; STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_RSAK,NULL,0); initialize_state_variables(dsc); set_data_transfer_timers(dsc); next_state(dsc,sscop_ready); if (dsc->ops->res_conf) dsc->ops->res_conf(dsc->user); return 1; case SSCOP_RSAK: STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; initialize_state_variables(dsc); set_data_transfer_timers(dsc); next_state(dsc,sscop_ready); if (dsc->ops->res_conf) dsc->ops->res_conf(dsc->user); return 1; default: break; } break; case sscop_inres: /* 20.20-22 */ switch (type) { case SSCOP_SD: case SSCOP_POLL: case SSCOP_STAT: case SSCOP_USTAT: send_pdu(dsc,SSCOP_END,NULL,1); /* fall through */ case SSCOP_ENDAK: case SSCOP_BGREJ: bad_pdu(dsc,type); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; case SSCOP_END: send_pdu(dsc,SSCOP_ENDAK,NULL,0); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,msg,length,!s); return 0; case SSCOP_ER: case SSCOP_BGAK: case SSCOP_ERAK: case SSCOP_RSAK: bad_pdu(dsc,type); return 1; case SSCOP_BGN: if (detect_retransmission(dsc,sq)) { bad_pdu(dsc,type); return 1; } dsc->vt_ms = mr; next_state(dsc,sscop_inconn); if (dsc->ops->restart) dsc->ops->restart(dsc->user,msg,length,1); return 1; case SSCOP_RS: if (!detect_retransmission(dsc,sq)) bad_pdu(dsc,type); return 1; default: break; } break; case sscop_outrec: /* 20.23-26 */ switch (type) { case SSCOP_BGAK: case SSCOP_RSAK: bad_pdu(dsc,type); return 1; case SSCOP_ERAK: STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; next_state(dsc,sscop_recresp); deliver_data(dsc); if (dsc->ops->rec_ind) dsc->ops->rec_ind(dsc->user); return 1; case SSCOP_END: STOP_TIMER(dsc->timer_cc); send_pdu(dsc,SSCOP_ENDAK,NULL,0); clear_receive_buffer(dsc); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,msg,length,!s); return 0; case SSCOP_ENDAK: case SSCOP_BGREJ: bad_pdu(dsc,type); STOP_TIMER(dsc->timer_cc); clear_receive_buffer(dsc); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; case SSCOP_STAT: case SSCOP_USTAT: case SSCOP_POLL: case SSCOP_SD: return 1; case SSCOP_BGN: if (detect_retransmission(dsc,sq)) { bad_pdu(dsc,type); return 1; } STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; clear_receive_buffer(dsc); next_state(dsc,sscop_inconn); if (dsc->ops->restart) dsc->ops->restart(dsc->user,msg,length,1); return 1; case SSCOP_ER: if (detect_retransmission(dsc,sq)) { bad_pdu(dsc,type); return 1; } STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_ERAK,NULL,0); deliver_data(dsc); next_state(dsc,sscop_recresp); if (dsc->ops->rec_ind) dsc->ops->rec_ind(dsc->user); return 1; case SSCOP_RS: if (detect_retransmission(dsc,sq)) { bad_pdu(dsc,type); return 1; } STOP_TIMER(dsc->timer_cc); dsc->vt_ms = mr; clear_receive_buffer(dsc); next_state(dsc,sscop_inres); if (dsc->ops->res_ind) dsc->ops->res_ind(dsc->user,msg,length); return 0; default: break; } case sscop_recresp: /* 20.27-29 */ switch (type) { case SSCOP_BGAK: case SSCOP_RSAK: bad_pdu(dsc,type); return 1; case SSCOP_ERAK: case SSCOP_SD: case SSCOP_POLL: return 1; case SSCOP_END: send_pdu(dsc,SSCOP_ENDAK,NULL,0); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,msg,length,!s); return 0; case SSCOP_ENDAK: case SSCOP_BGREJ: bad_pdu(dsc,type); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; case SSCOP_RS: if (detect_retransmission(dsc,sq)) { bad_pdu(dsc,type); return 1; } dsc->vt_ms = mr; next_state(dsc,sscop_inres); if (dsc->ops->res_ind) dsc->ops->res_ind(dsc->user,msg,length); return 1; case SSCOP_ER: if (!detect_retransmission(dsc,sq)) bad_pdu(dsc,type); else send_pdu(dsc,SSCOP_ERAK,NULL,0); return 1; case SSCOP_BGN: if (detect_retransmission(dsc,sq)) { bad_pdu(dsc,type); return 1; } dsc->vt_ms = mr; next_state(dsc,sscop_inconn); if (dsc->ops->restart) dsc->ops->restart(dsc->user,msg,length,1); return 1; case SSCOP_STAT: case SSCOP_USTAT: bad_pdu(dsc,type); send_pdu(dsc,SSCOP_END,NULL,1); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; default: break; } case sscop_inrec: /* 20.30-33 */ switch (type) { case SSCOP_END: send_pdu(dsc,SSCOP_ENDAK,NULL,0); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,msg,length,!s); return 0; case SSCOP_ENDAK: case SSCOP_BGREJ: bad_pdu(dsc,type); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; case SSCOP_USTAT: case SSCOP_STAT: case SSCOP_POLL: case SSCOP_SD: bad_pdu(dsc,type); send_pdu(dsc,SSCOP_END,NULL,1); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; case SSCOP_RSAK: case SSCOP_BGAK: case SSCOP_ERAK: bad_pdu(dsc,type); return 1; case SSCOP_RS: if (detect_retransmission(dsc,sq)) { bad_pdu(dsc,type); return 1; } dsc->vt_ms = mr; next_state(dsc,sscop_inres); if (dsc->ops->res_ind) dsc->ops->res_ind(dsc->user,msg,length); return 1; case SSCOP_ER: if (!detect_retransmission(dsc,sq)) bad_pdu(dsc,type); return 1; case SSCOP_BGN: if (detect_retransmission(dsc,sq)) { bad_pdu(dsc,type); return 1; } dsc->vt_ms = mr; next_state(dsc,sscop_inconn); if (dsc->ops->restart) dsc->ops->restart(dsc->user,msg,length,1); return 1; default: break; } case sscop_ready: /* 20.34-46 */ switch (type) { case SSCOP_BGAK: case SSCOP_ERAK: case SSCOP_RSAK: return 1; case SSCOP_ER: if (detect_retransmission(dsc,sq)) { START_TIMER(noresp); send_pdu(dsc,SSCOP_ERAK,NULL,0); return 1; } reset_data_transfer_timers(dsc); dsc->vt_ms = mr; prepare_recovery(dsc); next_state(dsc,sscop_inrec); deliver_data(dsc); if (dsc->ops->rec_ind) dsc->ops->rec_ind(dsc->user); return 1; case SSCOP_BGN: if (detect_retransmission(dsc,sq)) { START_TIMER(noresp); send_pdu(dsc,SSCOP_BGAK,NULL,0); return 1; } reset_data_transfer_timers(dsc); dsc->vt_ms = mr; prepare_retrieval(dsc); next_state(dsc,sscop_inconn); if (dsc->ops->restart) dsc->ops->restart(dsc->user,msg,length,1); return 1; case SSCOP_ENDAK: case SSCOP_BGREJ: reset_data_transfer_timers(dsc); bad_pdu(dsc,type); prepare_retrieval(dsc); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,NULL,0,0); return 0; case SSCOP_RS: if (detect_retransmission(dsc,sq)) { START_TIMER(noresp); send_pdu(dsc,SSCOP_RSAK,NULL,0); return 1; } reset_data_transfer_timers(dsc); dsc->vt_ms = mr; prepare_retrieval(dsc); next_state(dsc,sscop_inres); if (dsc->ops->res_ind) dsc->ops->res_ind(dsc->user,msg,length); return 1; case SSCOP_END: reset_data_transfer_timers(dsc); send_pdu(dsc,SSCOP_ENDAK,NULL,0); prepare_retrieval(dsc); next_state(dsc,sscop_idle); if (dsc->ops->rel_ind) dsc->ops->rel_ind(dsc->user,msg,length,!s); return 0; case SSCOP_SD: data_sd(dsc,s,msg,length); return 1; case SSCOP_POLL: dsc->vr_ps = ps; /* store */ data_poll(dsc,s); return 1; case SSCOP_USTAT: data_ustat(dsc,mr,r,SSCOP_N(msg),SSCOP_N((char *) msg+4)); return 1; case SSCOP_STAT: data_stat(dsc,ps,mr,r,msg,length/4); return 1; default: break; } } return 1; } void sscop_pdu(SSCOP_DSC *dsc,void *msg,int size) { if (handle_sscop_pdu(dsc,msg,size)) if (dsc->state == sscop_ready) try_to_send(dsc); } /* --- From SSCOP user ----------------------------------------------------- */ void sscop_retrieve(SSCOP_DSC *dsc,int rn) { BUFFER *buf; int i; if (dsc->state != sscop_idle && dsc->state != sscop_inconn && dsc->state != sscop_outdisc && dsc->state != sscop_inres && dsc->state != sscop_recresp && dsc->state != sscop_inrec) diag(COMPONENT,DIAG_FATAL,"sscop_retrieve invoked in state %s", state_name[dsc->state]); if (rn != SSCOP_RN_UNKNOWN) for (i = rn == SSCOP_RN_TOTAL ? dsc->vt_a : MOD24(rn+1); NORM_TX(dsc->vt_a) <= NORM_TX(i) && NORM_TX(i) < NORM_TX(dsc->vt_s); INC24(i)) { buf = queue_lookup(&dsc->tx_buf,i); if (buf) { queue_remove(&dsc->tx_buf,buf); if (dsc->ops->retr_ind) dsc->ops->retr_ind(dsc->user,buf->data,sdu_length(buf)); buffer_discard(buf); } } while ((buf = queue_get(&dsc->tx_q))) { if (dsc->ops->retr_ind) dsc->ops->retr_ind(dsc->user,buf->data,sdu_length(buf)); buffer_discard(buf); } if (dsc->ops->retr_comp) dsc->ops->retr_comp(dsc->user); } void sscop_send(SSCOP_DSC *dsc,void *buffer,int size) /* 20.38 */ { BUFFER *buf; if (dsc->state != sscop_ready && (dsc->state != sscop_outrec || dsc->clear_buffers)) return; /* 20.23 */ buf = buffer_create(size,0); memcpy(buf->data,buffer,size); queue_put(&dsc->tx_q,buf); try_to_send(dsc); } void sscop_estab_req(SSCOP_DSC *dsc,void *uu_data,int uu_length,int buf_rel) { switch (dsc->state) { case sscop_outdisc: /* 20.14 */ STOP_TIMER(dsc->timer_cc); /* fall through */ case sscop_idle: /* 20.5 */ clear_transmitter(dsc); dsc->clear_buffers = buf_rel; dsc->vt_cc = 1; INC8(dsc->vt_sq); initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_BGN,uu_data,uu_length); START_TIMER(cc); next_state(dsc,sscop_outconn); return; default: break; } diag(COMPONENT,DIAG_FATAL,"sscop_estab_req invoked in state %s", state_name[dsc->state]); } void sscop_estab_resp(SSCOP_DSC *dsc,void *uu_data,int uu_length,int buf_rel) /* 20.11 */ { if (dsc->state != sscop_inconn) diag(COMPONENT,DIAG_FATAL,"sscop_estab_resp invoked in state %s", state_name[dsc->state]); clear_transmitter(dsc); dsc->clear_buffers = buf_rel; initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_BGAK,uu_data,uu_length); initialize_state_variables(dsc); set_data_transfer_timers(dsc); next_state(dsc,sscop_ready); try_to_send(dsc); /* probably not ... */ } void sscop_rel_req(SSCOP_DSC *dsc,void *uu_data,int uu_length) { switch (dsc->state) { case sscop_outrec: /* 20.24 */ clear_receive_buffer(dsc); /* fall through */ case sscop_outconn: /* 20.9 */ case sscop_outres: /* 20.18 */ STOP_TIMER(dsc->timer_cc); /* fall through */ case sscop_inres: /* 20.20 */ case sscop_recresp: /* 20.28 */ case sscop_inrec: /* 20.30 */ dsc->vt_cc = 1; send_pdu(dsc,SSCOP_END,uu_data,uu_length); START_TIMER(cc); next_state(dsc,sscop_outdisc); return; case sscop_inconn: /* 20.11 */ send_pdu(dsc,SSCOP_BGREJ,uu_data,uu_length); next_state(dsc,sscop_idle); return; case sscop_ready: /* 20.34 */ reset_data_transfer_timers(dsc); dsc->vt_cc = 1; send_pdu(dsc,SSCOP_END,uu_data,uu_length); prepare_retrieval(dsc); START_TIMER(cc); next_state(dsc,sscop_outdisc); return; default: break; } diag(COMPONENT,DIAG_FATAL,"sscop_rel_req invoked in state %s", state_name[dsc->state]); } void sscop_res_req(SSCOP_DSC *dsc,void *uu_data,int uu_length) { switch (dsc->state) { case sscop_outrec: /* 20.25 */ STOP_TIMER(dsc->timer_cc); clear_receive_buffer(dsc); /* fall through */ case sscop_recresp: /* 20.29 */ dsc->vt_cc = 1; INC8(dsc->vt_sq); initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_RS,uu_data,uu_length); clear_transmitter(dsc); START_TIMER(cc); next_state(dsc,sscop_outres); return; case sscop_inrec: /* 20.30 */ clear_transmitter(dsc); dsc->vt_cc = 1; INC8(dsc->vt_sq); initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_RS,uu_data,uu_length); START_TIMER(cc); next_state(dsc,sscop_outres); return; case sscop_ready: /* 20.34 */ reset_data_transfer_timers(dsc); dsc->vt_cc = 1; INC8(dsc->vt_sq); initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_RS,uu_data,uu_length); release_buffers(dsc); START_TIMER(cc); next_state(dsc,sscop_outres); return; default: break; } diag(COMPONENT,DIAG_FATAL,"sscop_res_req invoked in state %s", state_name[dsc->state]); } void sscop_res_resp(SSCOP_DSC *dsc) /* 20.20 */ { if (dsc->state != sscop_inres) diag(COMPONENT,DIAG_FATAL,"sscop_res_resp invoked in state %s", state_name[dsc->state]); initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_RSAK,NULL,0); clear_transmitter(dsc); initialize_state_variables(dsc); set_data_transfer_timers(dsc); next_state(dsc,sscop_ready); try_to_send(dsc); /* probably not ... */ } void sscop_rec_resp(SSCOP_DSC *dsc) { switch (dsc->state) { case sscop_inrec: /* 20.30 */ initialize_vr_mr(dsc); send_pdu(dsc,SSCOP_ERAK,NULL,0); /* fall through */ case sscop_recresp: /* 20.28 */ if (!dsc->clear_buffers) clear_transmission_buffer(dsc); initialize_state_variables(dsc); set_data_transfer_timers(dsc); next_state(dsc,sscop_ready); try_to_send(dsc); return; default: break; } diag(COMPONENT,DIAG_FATAL,"sscop_rec_resp invoked in state %s", state_name[dsc->state]); } void sscop_unitdata(SSCOP_DSC *dsc,void *buffer,int size) /* 20.47-48 */ { send_pdu(dsc,SSCOP_UD,buffer,size); } void sscop_maa_data(SSCOP_DSC *dsc,void *buffer,int size) /* 20.47-48 */ { send_pdu(dsc,SSCOP_MD,buffer,size); } void start_sscop(SSCOP_DSC *dsc,SSCOP_USER_OPS *ops,void *user_data, SSCOP_MODE mode) { static int initialize = 1; if (initialize) { pdu_maa = maa_error; pdu_diag = do_diag; initialize = 0; } dsc->ops = ops; dsc->user = user_data; dsc->mode = mode; dsc->vt_sq = dsc->vr_sq = 0; /* 20.5 */ dsc->clear_buffers = 1; dsc->state = sscop_idle; dsc->timer_cc = dsc->timer_poll = dsc->timer_noresp = dsc->timer_keepalive = dsc->timer_idle = NULL; queue_init(&dsc->rx_buf); queue_init(&dsc->tx_q); queue_init(&dsc->tx_buf); queue_init(&dsc->rt_q); dsc->last_bgn = dsc->last_end = dsc->last_rs = dsc->last_er = NULL; dsc->cf_max_cc = SSCOP_CF_MaxCC; dsc->cf_max_pd = SSCOP_CF_MaxPD; dsc->cf_max_stat = SSCOP_CF_MaxSTAT; dsc->cf_timer_cc = TIMER_CC; dsc->cf_timer_poll = TIMER_POLL; dsc->cf_timer_noresp = TIMER_NORESP; dsc->cf_timer_keepalive = TIMER_KEEPALIVE; dsc->cf_timer_idle = TIMER_IDLE; dsc->list = NULL; } void stop_sscop(SSCOP_DSC *dsc) { if (dsc->state != sscop_idle) diag(COMPONENT,DIAG_WARN,"stopping dsc in state %s", state_name[dsc->state]); dsc->state = sscop_idle; /* avoid send attempts */ STOP_TIMER(dsc->timer_cc); STOP_TIMER(dsc->timer_poll); STOP_TIMER(dsc->timer_noresp); STOP_TIMER(dsc->timer_keepalive); STOP_TIMER(dsc->timer_idle); queue_clear(&dsc->rx_buf); queue_clear(&dsc->tx_q); queue_clear(&dsc->tx_buf); queue_clear(&dsc->rt_q); if (dsc->last_bgn) buffer_discard(dsc->last_bgn); if (dsc->last_end) buffer_discard(dsc->last_end); if (dsc->last_rs) buffer_discard(dsc->last_rs); if (dsc->last_er) buffer_discard(dsc->last_er); if (dsc->list) free(dsc->list); } linux-atm-2.5.1/src/saal/sscop.h0000644000200100001440000001217007360675443015306 0ustar chasusers/* sscop.h - SSCOP (Q.2110) user interface */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef SSCOP_H #define SSCOP_H #include #include "atmd.h" #include "queue.h" typedef enum { sscop_qsaal1, /* emulate some properties of Q.SAAL1 as specified for UNI 3.0 */ sscop_q2110 /* follow Q.2110 by the letter */ } SSCOP_MODE; typedef enum { sscop_idle,sscop_outconn,sscop_inconn,sscop_outdisc, sscop_outres,sscop_inres,sscop_outrec,sscop_recresp,sscop_inrec, sscop_ready } SSCOP_STATE; typedef struct { SSCOP_STATE state; struct _sscop_user_ops *ops; void *user; /* --- Configurable parameters ----------------------------------------- */ SSCOP_MODE mode; int cf_max_cc,cf_max_pd,cf_max_stat; int cf_timer_cc,cf_timer_poll,cf_timer_noresp,cf_timer_keepalive, cf_timer_idle; /* --- SSCOP information, TX part -------------------------------------- */ int vt_s; /* send sequence number */ int vt_ps; /* poll send sequence number */ int vt_a; /* acknowledge sequence number */ int vt_pa; /* poll sequence number */ int vt_ms; /* maximum send sequence */ int vt_pd; /* SD PDUs between POLL PDUs */ int vt_cc; /* number of unacknowledged BSG, END, ER or RS PDUs */ int vt_sq; /* connection number */ /* --- SSCOP information, RX part -------------------------------------- */ int vr_r; /* receiver sequence number */ int vr_h; /* highest expected SD PDU */ int vr_mr; /* maximum acceptable (receiver) */ int vr_sq; /* connection number */ int vr_ps; /* non-Q.2110: keeps N(PS) received in last POLL for STAT */ /* Other variables */ int clear_buffers; int credit; /* Timers */ TIMER *timer_cc,*timer_poll,*timer_noresp,*timer_keepalive,*timer_idle; /* Queues and buffers */ QUEUE tx_buf,tx_q,rx_buf,rt_q; BUFFER *last_bgn,*last_end,*last_rs,*last_er; /* for retransmission */ /* Misc items */ uint32_t *list; /* STAT construction list */ } SSCOP_DSC; /* * Note: UU data of primitives carrying such is only available if * - the "user" flag is set (if available) and * - uu_data is non-NULL, and * - uu_length is non-zero * in all other cases, uu_data must not be dereferenced. * * Note: the "ind" parameter in restart indicates whether the release primitive * is an AA-RELEASE.indication (ind = 1) or to an AA-RELEASE.confirm (ind = 0). */ typedef struct _sscop_user_ops { void (*estab_ind)(void *user_data,void *uu_data,int uu_length); /* AA-ESTABLISH.indication */ void (*estab_conf)(void *user_data,void *uu_data,int uu_length); /* AA-ESTABLISH.confirm */ void (*rel_ind)(void *user_data,void *uu_data,int uu_length,int user); /* AA-RELEASE.indication */ void (*rel_conf)(void *user_data); /* AA-RELEASE.confirm */ void (*restart)(void *user_data,void *uu_data,int uu_length,int ind); /* AA-RELEASE.indication or AA-RELEASE.confirm immediately followed by AA-ESTABLISH.indication */ void (*res_ind)(void *user_data,void *uu_data,int uu_length); /* AA-RESYNC.indication */ void (*res_conf)(void *user_data); /* AA-RESYNC.confirm */ void (*rec_ind)(void *user_data); /* AA-RECOVER.indication */ void (*data_ind)(void *user_data,void *data,int length,int sn); /* AA-DATA.indication */ void (*unitdata)(void *user_data,void *data,int length); /* AA-UNITDATA.indication */ void (*retr_ind)(void *user_data,void *data,int length); /* AA-RETRIEVE.indication */ void (*retr_comp)(void *user_data); /* AA-RETRIEVE_COMPLETE.indication */ void (*maa_data)(void *user_data,void *data,int length); /* MAA-UNITDATA.indication */ int (*maa_error)(void *user_data,char code,int count); /* MAA-ERROR.indication */ void (*cpcs_send)(void *user_data,void *data,int length); } SSCOP_USER_OPS; /* Attach/detach protocol */ void start_sscop(SSCOP_DSC *dsc,SSCOP_USER_OPS *ops,void *user_data, SSCOP_MODE _mode); /* gcc 2.7.2 firmly believes "mode" can shadow ... @%! */ void stop_sscop(SSCOP_DSC *dsc); /* Connection control */ void sscop_estab_req(SSCOP_DSC *dsc,void *uu_data,int uu_length,int buf_rel); /* AA-ESTABLISH.request */ void sscop_estab_resp(SSCOP_DSC *dsc,void *uu_data,int uu_length,int buf_rel); /* AA-ESTABLISH.response */ void sscop_rel_req(SSCOP_DSC *dsc,void *uu_data,int uu_length); /* AA-RELEASE.request */ void sscop_res_req(SSCOP_DSC *dsc,void *uu_data,int uu_length); /* AA-RESYNC.request */ void sscop_res_resp(SSCOP_DSC *dsc); /* AA-RESYNC.response */ void sscop_rec_resp(SSCOP_DSC *dsc); /* AA-RECOVER.response */ /* Incoming PDU from lower layer */ void sscop_pdu(SSCOP_DSC *dsc,void *msg,int size); /* CPCS-UNITDATA.request */ /* Send data */ void sscop_send(SSCOP_DSC *dsc,void *buffer,int size); /* AA-DATA.request, 20.38 */ void sscop_unitdata(SSCOP_DSC *dsc,void *buffer,int size); /* AA-UNIDATA.request, 20.47 */ void sscop_maa_data(SSCOP_DSC *dsc,void *buffer,int size); /* MAA-UNITDATA.request, 20.47 */ /* Retrieve unsent data */ #define SSCOP_RN_UNKNOWN -2 /* -1 is (theoretically) a valid rn ... */ #define SSCOP_RN_TOTAL -3 void sscop_retrieve(SSCOP_DSC *dsc,int rn); /* AA-RETRIEVE.request */ #endif linux-atm-2.5.1/src/saal/Makefile.in0000644000200100001440000003427411304770376016056 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src/saal DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru libsaal_a_AR = $(AR) $(ARFLAGS) libsaal_a_LIBADD = am_libsaal_a_OBJECTS = pdu.$(OBJEXT) queue.$(OBJEXT) saal.$(OBJEXT) \ sscf.$(OBJEXT) sscop.$(OBJEXT) libsaal_a_OBJECTS = $(am_libsaal_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libsaal_a_SOURCES) DIST_SOURCES = $(libsaal_a_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LIBRARIES = libsaal.a libsaal_a_SOURCES = pdu.h queue.h saal.h sscf.h sscop.h pdu.c queue.c saal.c \ sscf.c sscop.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/saal/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/saal/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libsaal.a: $(libsaal_a_OBJECTS) $(libsaal_a_DEPENDENCIES) -rm -f libsaal.a $(libsaal_a_AR) libsaal.a $(libsaal_a_OBJECTS) $(libsaal_a_LIBADD) $(RANLIB) libsaal.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/queue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/saal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sscf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sscop.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/sigd/0000755000200100001440000000000011304770377014006 5ustar chasuserslinux-atm-2.5.1/src/sigd/CVS/0000755000200100001440000000000011304767140014433 5ustar chasuserslinux-atm-2.5.1/src/sigd/CVS/Root0000644000200100001440000000007411304767140015302 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/sigd/CVS/Repository0000644000200100001440000000002311304767140016530 0ustar chasuserslinux-atm/src/sigd linux-atm-2.5.1/src/sigd/CVS/Entries0000644000200100001440000000236211304767140015772 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:29 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile.am/1.2.2.1.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /README/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmsigd.8/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /atmsigd.c/1.2.2.1/Sat Sep 25 11:25:48 2004//TV2_5_1 /atmsigd.conf/1.2.2.1/Fri Dec 28 15:11:51 2007//TV2_5_1 /atmsigd.conf.4/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /cfg_l.l/1.2.2.1/Sat Sep 25 11:25:48 2004//TV2_5_1 /cfg_y.y/1.2.2.2.2.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /io.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /io.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /kernel.c/1.2.2.1/Sun Feb 13 17:47:22 2005//TV2_5_1 /mkmess.pl/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /policy.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /policy.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /proto.c/1.2.2.3/Sun Feb 13 17:47:22 2005//TV2_5_1 /proto.h/1.2.2.1/Sun Feb 13 17:47:22 2005//TV2_5_1 /sap.c/1.2.2.2.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /sap.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /timeout.c/1.2.2.1/Sun Feb 13 17:47:22 2005//TV2_5_1 /timeout.h/1.2.2.1/Sun Feb 13 17:47:22 2005//TV2_5_1 /trace.c/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /trace.h/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /uni.c/1.2.2.1/Sun Feb 13 17:47:22 2005//TV2_5_1 D linux-atm-2.5.1/src/sigd/CVS/Tag0000644000200100001440000000001011304767140015060 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/sigd/.cvsignore0000644000200100001440000000011110666025265015776 0ustar chasusersMakefile Makefile.in .deps .libs atmsigd cfg_l.c cfg_y.c cfg_y.h mess.c linux-atm-2.5.1/src/sigd/Makefile-0.790000644000200100001440000000211507360675443016045 0ustar chasusersLIBS=-L../saal -lsaal -latmd -lfl # lex may want -ll here LIBDEPS=../saal/libsaal.a ../lib/libatmd.a INCLUDES=-I../qgen -I../saal -I. OBJS=atmsigd.o io.o kernel.o mess.o proto.o uni.o sap.o timeout.o trace.o \ policy.o lex.yy.o y.tab.o EXTOBJS=../qgen/q.out.o ../qgen/qd.dump.o BOOTPGMS=atmsigd TRASH=mess.c TRASH_SPOTLESS=q.out.h MAN4=atmsigd.conf.4 MAN8=atmsigd.8 include ../Rules.make CFLAGS_NOWARN += $(STANDARDS) atmsigd: $(OBJS) $(EXTOBJS) $(CC) $(LDFLAGS) -o atmsigd $(OBJS) $(EXTOBJS) \ $(LDLIBS) $(LIBS) lex.yy.c: cfg.l y.tab.h ../lib/atm.h $(LEX) cfg.l y.tab.c y.tab.h: cfg.y ../lib/atmd.h proto.h io.h $(YACC) -d cfg.y mess.c: ../qgen/uni.h mkmess.pl perl ./mkmess.pl <../qgen/uni.h >mess.c # # The following hack makes sure that "make depend" finds q.out.h and is # happy with it. Once qgen has been built, there will be ../qgen/q.out.h, # which is first in the include file search path and therefore gets # included. An second "make depend" will also use the right file. # $(DEPEND): fake_q.out.h fake_q.out.h: echo "! This must not compile" >q.out.h linux-atm-2.5.1/src/sigd/Makefile.am0000644000200100001440000000143711235645151016041 0ustar chasusersINCLUDES = -I$(top_builddir)/src/q2931 -I$(srcdir)/../q2931 -I$(srcdir)/../saal -I. sbin_PROGRAMS = atmsigd atmsigd_SOURCES = atmsigd.c io.c io.h kernel.c proto.c proto.h uni.c \ sap.c sap.h timeout.c timeout.h trace.c trace.h \ policy.c policy.h cfg_y.y cfg_l.l atmsigd_XTRAS = mess.o $(top_builddir)/src/q2931/q.out.o \ $(top_builddir)/src/q2931/qd.dump.o \ $(top_builddir)/src/lib/libatm.la \ $(top_builddir)/src/saal/libsaal.a atmsigd_LDADD = $(atmsigd_XTRAS) -lfl atmsigd_DEPENDENCIES = mess.c $(atmsigd_XTRAS) CLEANFILES = mess.c sysconf_DATA = atmsigd.conf man_MANS = atmsigd.conf.4 atmsigd.8 EXTRA_DIST = cfg_y.h $(man_MANS) $(sysconf_DATA) mkmess.pl README mess.c: $(top_builddir)/src/q2931/uni.h mkmess.pl @PERL@ $(srcdir)/mkmess.pl <$(srcdir)/../q2931/uni.h >mess.c linux-atm-2.5.1/src/sigd/README0000644000200100001440000000133507360675443014675 0ustar chasusersThis is a very early version of atmsigd that supports multiple signaling entities in the same process. Everything's still a bit buggy and ugly. To play with it, ... 1) Generate ATM interfaces 1 and 2: # atmtcp -b -i 1 -l # atmtcp -b -i 2 -c localhost 2) Create the following configuration file (name "config"): entity 1.0.5 { mode user route +1 } entity 2.0.5 { mode network default } 3) Launch atmsigd: # ./atmsigd.new -c config 4) Add local addresses: # atmaddr -a 1 +1 # atmaddr -a 2 +2 5) Test it: % ttcp_atm -r -a % ttcp_atm -t -a +1 Known bugs: - wildcard bind removes wildcard - selection of local address isn't consistent with signaling interface selection - everything else that's marked with @@@ linux-atm-2.5.1/src/sigd/atmsigd.80000644000200100001440000001132307360675443015534 0ustar chasusers.TH ATMSIGD 8 "April 26, 2000" "Linux" "Maintenance Commands" .SH NAME atmsigd \- ATM signaling demon .SH SYNOPSIS .B atmsigd .RB [ \-b ] .RB [ \-c\ \fIconfig_file\fP ] .RB [ \-d ] .RB [ \-D\ \fIdump_dir\fP ] .RB [ \-l\ \fIlogfile\fP ] .RB [ \-m\ \fImode\fP ] .RB [ \-n ] .RB [ \-q\ \fIqos\fP ] .RB [ \-t\ \fItrace_length\fP ] .RB [ \-u\ \fIuni_version\fP ] .RB [ [\fIitf\fP.]\fIvpi\fP.\fIvci\fP .RB [ \fIinput\ output\fP ] ] .br .B atmsigd .B \-V .SH DESCRIPTION \fBatmsigd\fP implements the ATM UNI signaling protocol. Requests to establish, accept, or close ATM SVCs are sent from the kernel (using a comparably simple protocol) to the signaling demon, which then performs the dialog with the network. .P Note that \fBatmsigd\fP is not able to accept or establish connections until the local ATM address of the interface is configured by \fBilmid\fP or manually using \fBatmaddr\fP. .P The default signaling VC (interface 0, VPI 0, VCI 5) can be overridden on the command line by specifying a different PVC address. .P When overriding the default VC, optionally a pair of named pipes to use for communicating with the user of signaling can be specified. Normally, the kernel is the user of signaling and \fBatmsigd\fP opens a special socket for communication with it. .P If \fBatmsigd\fP is killed, all system calls requiring interaction with it will return with an error and set \fBerrno\fP to \fBEUNATCH\fP. .SH OPTIONS .IP \fB\-b\fP Run in background (i.e. in a forked child process) after initializing. .IP \fB\-c\ \fIconfig_file\fP Use the specified configuration file instead of \fB/etc/atmsigd.conf\fP If an option is specified in the configuration file and on the command line, the command line has priority. .IP \fB\-d\fP Enables (lots of) debugging output. By default, \fBatmsigd\fP is comparably quiet. .IP \fB\-D\ \fIdump_dir\fP Specifies the directory to which \fBatmsigd\fP will write status and trace dumps. If \fB\-D\fP is not specified, dumps are written to /var/tmp. .IP \fB\-l\ \fIlogfile\fP Write diagnostic messages to the specified file. The special name \fBsyslog\fP is used to send diagnostics to the system logger, \fBstderr\fP is used to send diagnostics to standard error. If \fB\-l\fP is absent, the setting in \fBatmsigd.conf\fP is used. If \fBatmsigd\fP doesn't specify a destination either, messages are written to standard error. .IP \fB\-m\ \fImode\fP Set the mode of operation. The following modes are available: \fBuser\fP for the user side (the default), \fBnetwork\fP for the network side (useful if you have two PCs but no switch), and \fBswitch\fP for operation with a signaling relay in a switch. .IP \fB\-n\fP Prints addresses in numeric format only, i.e. no address to name translation is attempted. .IP \fB\-q\ \fIqos\fP Configures the signaling VC to use the specified quality of service (see qos(7) for the syntax). By default, UBR at link speed is used on the signaling VC. .IP \fB\-t\ \fItrace_length\fP Sets the number of entries that should be kept in the trace buffer. \fB\-t 0\fP disables tracing. If \fB\-t\fP is not specified, \fBatmsigd\fP uses a default of 20 trace entries. .IP \fB\-u\ \fIuni_version\fP Sets the signaling mode. The following modes are supported: \fBuni30\fP for UNI 3.0, \fBuni31\fP for UNI 3.1, \fBuni31+uni30\fP for UNI 3.1 with 3.0 compatibility, \fBuni40\fP for UNI 4.0, and \fBuni40+q.2963.1\fP for UNI 4.0 with Q.2963.1 peak cell rate renegotiation. .IP \fB\-V\fP Prints the version number of \fBatmsigd\fP on standard output and exits. .SH FILES .PD 0 .TP 25 .B /etc/atmsigd.conf default configuration file .TP 25 .B /var/tmp/atmsigd.\fIpid\fB.status.\fIversion\fP default location of status dumps .TP 25 .B /var/tmp/atmsigd.\fIpid\fB.trace.\fIversion\fP default location of signaling trace dumps .PD .SH DEBUGGING When receiving a \fBSIGUSR1\fP signal, \fBatmsigd\fP dumps the list of all internal socket descriptors. With \fBSIGUSR2\fP, it dumps the contents of the trace buffer. If a dump directory was set, dumps are written to files called \fBatmsigd.\fP\fIpid\fP\fB.status.\fP\fInumber\fP and \fBatmsigd.\fP\fIpid\fP\fB.trace.\fP\fInumber\fP, respectively, with \fInumber\fP starting at zero and being incremented for every dump. If no dump directory is set, dumps are written to standard error. .P Dumps are also generated whenever \fBatmsigd\fP detects a fatal error and terminates. No attempt is made to catch signals like \fBSIGSEGV\fP. .SH BUGS The generation of traces is a comparably slow process which may already take several seconds for only 100 trace entries. To generate a trace dump, \fBatmsigd\fP therefore forks a child process that runs in parallel to the signaling demon. .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" atmaddr(8), atmsigd.conf(4), ilmid(8), qos(7) .\"{{{}}} linux-atm-2.5.1/src/sigd/atmsigd.c0000644000200100001440000003035310125252674015601 0ustar chasusers/* atmsigd.c - ATM signaling demon */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include "atm.h" #include "atmd.h" #include "qlib.h" #include "io.h" #include "proto.h" #include "saal.h" #include "trace.h" #define COMPONENT "SIGD" extern int yyparse(void); extern FILE *yyin; int debug = 0; int pretty = A2T_PRETTY | A2T_NAME | A2T_LOCAL; const char *dump_dir = DEFAULT_DUMP_DIR; /* A little hack until we have full support for multiple signaling entities */ SIG_ENTITY _entity = { 0, /* fd */ 0, /* unspecified UNI version */ sm_user, /* mode */ -1, /* sig_pcr; obsolete @@@ */ NULL, /* sig_qos */ -1 /* max_rate */ }; /* ------------------------------ SAAL relays ------------------------------ */ static void q_estab_conf(void *user_data,void *uu_data,int uu_length) { SIG_ENTITY *sig = user_data; saal_okay(sig); } static void q_rel_ind(void *user_data,void *uu_data,int uu_length) { SIG_ENTITY *sig = user_data; saal_failure(sig); saal_estab_req(&sig->saal,NULL,0); } static void q_restart(void *user_data,void *uu_data,int uu_length,int ind) { SIG_ENTITY *sig = user_data; saal_failure(sig); if (!ind) saal_okay(sig); /* actually, ind should probably never be zero */ } void from_net(SIG_ENTITY *sig,void *buffer,int size) { saal_pdu(&sig->saal,buffer,size); } void to_signaling(SIG_ENTITY *sig,void *msg,int size) { trace_uni("TO NETWORK",sig,msg,size); diag(COMPONENT,DIAG_DEBUG,"TO SAAL (%d.%d.%d): %s (0x%02x) CR 0x%06x " "(%d bytes)",S_PVC(sig), mid2name(((unsigned char *) msg)[5]),((unsigned char *) msg)[5], (((unsigned char *) msg)[2] << 16) | (((unsigned char *) msg)[3] << 8) | ((unsigned char *) msg)[4],size); saal_send(&sig->saal,msg,size); } static void q_data_ind(void *user_data,void *data,int length) { SIG_ENTITY *sig = user_data; trace_uni("FROM NETWORK",sig,data,length); to_uni(sig,data,length); } static void q_cpcs_send(void *user_data,void *data,int length) { SIG_ENTITY *sig = user_data; to_net(sig,data,length); } static SAAL_USER_OPS ops = { NULL, /* no q_estab_ind - 5.5.6.9 says 5.5.6.11 and 5.5.6.11 says "may" */ q_estab_conf, q_rel_ind, NULL, /* no q_rel_conf - what to do ? */ q_restart, q_data_ind, NULL, /* no q_unitdata */ q_cpcs_send }; /* -------------------------------- signals -------------------------------- */ static volatile int got_usr1 = 0,got_usr2 = 0; static void dump_addr(FILE *file,const char *label,struct sockaddr_atmsvc *addr) { char buffer[MAX_ATM_ADDR_LEN+1]; int i; if (!atmsvc_addr_in_use(*addr)) return; fprintf(file," %s ",label); if (atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) addr,A2T_NAME | A2T_PRETTY | A2T_LOCAL) >= 0) fprintf(file,"%s\n",buffer); else { fprintf(file,"\n"); } } static void dump_sap(FILE *file,const char *label,struct atm_sap *sap) { char buffer[MAX_ATM_SAP_LEN+1]; int i; fprintf(file," %s ",label); if (sap2text(buffer,MAX_ATM_SAP_LEN+1,sap,S2T_NAME | S2T_LOCAL) >= 0) fprintf(file,"%s\n",buffer); else { fprintf(file,"\n"); } } static void dump_status(FILE *file,const char *banner) { SIG_ENTITY *sig; SOCKET *walk; if (entities) fprintf(file,"%s\n\n",banner); for (sig = entities; sig; sig = sig->next) { fprintf(file,"--- Entity %d.%d.%d ---\n",S_PVC(sig)); for (walk = sockets; walk; walk = walk->next) { fprintf(file,"%s: %s, CR 0x%06lX, PVC %d.%d.%d\n", kptr_print(&walk->id), state_name[walk->state],walk->call_ref,walk->pvc.sap_addr.itf, walk->pvc.sap_addr.vpi,walk->pvc.sap_addr.vci); dump_addr(file,"local ",&walk->local); dump_addr(file,"remote",&walk->remote); dump_sap(file,"sap",&walk->sap); } } } static void dump_trace(FILE *file,const char *banner) { static int busy = 0; char *trace; if (busy++) abort(); trace = get_trace(); if (trace) { fprintf(file,"%s\n\n",banner); fprintf(file,"%s",trace); } busy--; } void poll_signals(void) { static int status_num = 0,trace_num = 0; char path[PATH_MAX+1]; FILE *file; if (got_usr1) { got_usr1 = 0; if (!dump_dir) file = stderr; else { sprintf(path,"atmsigd.%d.status.%d",getpid(),status_num++); if ((file = fopen(path,"w"))) diag(COMPONENT,DIAG_INFO,"Dumping to %s",path); else { perror(path); file = stderr; } } dump_status(file,"Status dump (on SIGUSR1)"); if (file != stderr) (void) fclose(file); } if (got_usr2) { pid_t pid; got_usr2 = 0; if (!dump_dir) file = stderr; else { sprintf(path,"atmsigd.%d.trace.%d",getpid(),trace_num++); if ((file = fopen(path,"w"))) diag(COMPONENT,DIAG_INFO,"Dumping to %s",path); else { perror(path); file = stderr; } } if (!(pid = fork())) dump_trace(file,"Message trace (on SIGUSR2)"); else if (pid < 0) perror("fork"); if (file != stderr) (void) fclose(file); if (!pid) exit(0); } } static void handle_signal(int sig) { switch (sig) { case SIGUSR1: got_usr1 = 1; break; case SIGUSR2: got_usr2 = 1; break; default: break; } } static void setup_signals(void) { struct sigaction act; (void) signal(SIGCHLD,SIG_IGN); /* reap children automatially */ act.sa_handler = handle_signal; sigemptyset(&act.sa_mask); act.sa_flags = 0; if (sigaction(SIGUSR1,&act,NULL) < 0) { perror("sigaction"); exit(1); } if (sigaction(SIGUSR2,&act,NULL) < 0) { perror("sigaction"); exit(1); } } /* ------------------------------- main ... ------------------------------- */ static void trace_on_exit(int status,void *dummy) { char path[PATH_MAX+1]; FILE *file; if (!status) return; if (!dump_dir) file = stderr; else { sprintf(path,"atmsigd.%d.trace.exit",getpid()); if (!(file = fopen(path,"w"))) { perror(path); file = stderr; } } dump_trace(file,"Message trace (after error exit)"); if (file != stderr) (void) fclose(file); } static void manual_override(void) { /* * Gross hack to avoid changing the command-line parameters ... @@@ */ entities = &_entity; _entity.next = NULL; } static void usage(const char *name) { fprintf(stderr,"usage: %s [ -b ] [ -c config_file ] [ -d ] " "[ -D dump_dir ]\n" " [ -l logfile ] [ -n ] [ -m user|network|switch ] [ -q qos ]\n" " [ -t trace_length ] [ -u uni_version ] [ [itf.]vpi.vci " "[ socket_path ] ]\n",name); fprintf(stderr,"%6s %s -V\n","",name); exit(1); } int main(int argc,char **argv) { SIG_ENTITY *sig; const char *config_file; char *end; int c,background; int net = 0,allocate_ci = 1; set_application("atmsigd"); config_file = ATMSIGD_CONF; background = 0; memset(&_entity.signaling_pvc,0,sizeof(_entity.signaling_pvc)); /* 1st pass to get the -c option */ while ((c = getopt(argc,argv,"Abc:dD:l:m:nNP:q:t:u:V")) != EOF) if (c == 'c') config_file = optarg; else if (c == 'V') { printf("%s\n",VERSION); return 0; } if (!(yyin = fopen(config_file,"r"))) diag(COMPONENT,DIAG_WARN,"%s not found. - Using defaults.",config_file); else if (yyparse()) diag(COMPONENT,DIAG_FATAL,"Error in config file. - Aborting."); if (!atmpvc_addr_in_use(_entity.signaling_pvc)) _entity.signaling_pvc.sap_addr.vci = 5; if (!_entity.uni) _entity.uni = #ifdef UNI31 S_UNI31 #ifdef ALLOW_UNI30 | S_UNI30 #endif #elif defined(UNI40) S_UNI40 #ifdef Q2963_1 | S_Q2963_1 #endif #else S_UNI30 #endif ; /* process all other options but -c */ optind = 0; while ((c = getopt(argc,argv,"Abc:dD:l:m:nNP:q:t:u:")) != EOF) switch (c) { case 'A': manual_override(); allocate_ci = 0; break; case 'b': background = 1; break; case 'c': /* already handled */ break; case 'd': set_verbosity(NULL,DIAG_DEBUG); set_verbosity("QMSG",DIAG_INFO); set_verbosity("SSCOP",DIAG_INFO); debug = 1; /*q_dump = 1;*/ break; case 'D': dump_dir = optarg; break; case 'l': set_logfile(optarg); break; case 'm': manual_override(); if (!strcmp(optarg,"user")) _entity.mode = sm_user; else if (!strcmp(optarg,"network")) _entity.mode = sm_net; else if (!strcmp(optarg,"switch")) _entity.mode = sm_switch; else usage(argv[0]); break; case 'n': pretty = A2T_PRETTY; break; case 'N': manual_override(); net = 1; break; case 'q': manual_override(); if (_entity.sig_pcr != -1) usage(argv[0]); _entity.sig_qos = optarg; break; case 'P': /* obsolete */ manual_override(); if (_entity.sig_qos) usage(argv[0]); _entity.sig_pcr = strtol(optarg,&end,0); if (*end) usage(argv[0]); diag(COMPONENT,DIAG_WARN,"option -P is obsolete, " "please use -q qos instead"); break; case 't': trace_size = strtol(optarg,&end,0); if (*end) usage(argv[0]); break; case 'u': manual_override(); { int uni = 0; /* silence gcc */ if (!strcmp(optarg,"uni30") || !strcmp(optarg,"3.0")) uni = S_UNI30; else if (!strcmp(optarg,"uni31") || !strcmp(optarg,"3.1")) uni = S_UNI31; else if (!strcmp(optarg,"uni31+uni30") || !strcmp(optarg,"3.1+3.0")) uni = S_UNI30 | S_UNI31; else if (!strcmp(optarg,"uni40") || !strcmp(optarg,"4.0")) uni = S_UNI40; else if (!strcmp(optarg,"uni40+q.2963.1") || !strcmp(optarg,"4.0+q.2963.1")) uni = S_UNI40 | S_Q2963_1; else usage(argv[0]); #ifdef DYNAMIC_UNI _entity.uni = uni; #else diag(COMPONENT,DIAG_FATAL,"Signaling version specified " "with -s conflicts with compiled-in default."); #endif } break; default: usage(argv[0]); } if (_entity.mode == sm_unknown) { if (net) { if (allocate_ci) { _entity.mode = sm_net; diag(COMPONENT,DIAG_WARN,"option -N is obsolete, " "please use -m network instead"); } else { _entity.mode = sm_switch; diag(COMPONENT,DIAG_WARN,"options -N -A are obsolete, " "please use -m switch instead"); } } else if (allocate_ci) _entity.mode = sm_user; else usage(argv[0]); } if (optind < argc) { manual_override(); if (text2atm(argv[optind],(struct sockaddr *) &_entity.signaling_pvc, sizeof(_entity.signaling_pvc),T2A_PVC) < 0) diag(COMPONENT,DIAG_FATAL,"text2atm \"%s\": failed",argv[optind]); optind++; if (optind == argc-1) { open_unix(argv[optind]); optind++; } } if (optind != argc) usage(argv[0]); if (!trace_size) dump_dir = NULL; if (dump_dir) if (chdir(dump_dir) < 0) diag(COMPONENT,DIAG_ERROR,"chdir %s: %s",dump_dir,strerror(errno)); for (sig = entities; sig; sig = sig->next) { diag(COMPONENT,DIAG_INFO,"Linux ATM signaling %s" #ifdef DYNAMIC_UNI " (dynamic)" #endif ", version " VERSION " on %d.%d.%d", sig->uni & S_UNI30 ? sig->uni & S_UNI31 ? "UNI 3.1+3.0compat" : "UNI 3.0" : sig->uni & S_UNI31 ? "UNI 3.1" : sig->uni & S_Q2963_1 ? "UNI 4.0+Q.2963.1" : "UNI 4.0", S_PVC(sig)); diag(COMPONENT,DIAG_INFO,"Acting as %s", sig->mode == sm_user ? "USER side" : sig->mode == sm_net ? "NETWORK side" : "SWITCH"); } if (open_all()) return 1; init_current_time(); q_start(); for (sig = entities; sig; sig = sig->next) { set_vpi_0(sig); if (sig->max_rate < 0) sig->max_rate = get_max_rate(sig); if (sig->mode != sm_switch) init_addr(sig); start_saal(&sig->saal,&ops,sig, sig->uni == S_UNI30 ? sscop_qsaal1 : sscop_q2110); saal_estab_req(&sig->saal,NULL,0); } setup_signals(); if (background) { pid_t pid; pid = fork(); if (pid < 0) diag(COMPONENT,DIAG_FATAL,"fork: %s",strerror(errno)); if (pid) { diag(COMPONENT,DIAG_DEBUG,"Backgrounding (PID %d)",pid); exit(0); } } (void) on_exit(trace_on_exit,NULL); poll_loop(); close_all(); for (sig = entities; sig; sig = sig->next) stop_saal(&sig->saal); return 0; } linux-atm-2.5.1/src/sigd/atmsigd.conf0000644000200100001440000000027210735211067016277 0ustar chasusers# atmsigd.conf - configuration data for atmsigd # # See the atmsigd.conf man page for configuration details. # debug { level warn dump /var/tmp log syslog trace 100 } entity 0.0.5 linux-atm-2.5.1/src/sigd/atmsigd.conf.40000644000200100001440000001445207360675443016462 0ustar chasusers.TH ATMSIGD.CONF 4 "March 19, 2000" "Linux" "File Formats" .SH NAME atmsigd.conf \- configuration file for the ATM signaling demon .SH SYNOPSIS .B /etc/atmsigd.conf .SH DESCRIPTION \fBatmsigd.conf\fP contains configuration data for \fBatmsigd\fP. \fBatmsigd\fP reads \fBatmsigd.conf\fP after parsing the command line options, before connecting to the ATM network. .P Configuration parameters are arranged in functional groups. In order to set a parameter, the name of the group, the name of the parameter, and the parameter value(s) have to be specified, e.g. .nf .sp sig level debug .sp .fi decreases the logging threshold for messages related to signaling to the \fBdebug\fP level. The following options are recognized: .IP \fBdebug\ dump\ \fIpath\fP Specifies the directory to which \fBatmsigd\fP will write status and trace dumps. If tracing is not yet enabled, the trace size is automatically set to a (small) default value. .IP \fBdebug\ level\ \fIlevel\fP Sets the default debug level to \fIlevel\fP. \fIlevel\fP can be any of \fBdebug\fP, \fBinfo\fP, \fBwarn\fP, \fBerror\fP, and \fBfatal\fP. Only messages with the same or a higher priority than the debug level are printed. Note that the command-line option \fB\-d\fP generates even more output (e.g. hexdumps of all packets passing between \fBatmsigd\fP and the network) than \fBdebug level debug\fP. .IP \fBdebug\ log\ \fIpath\fP Specifies the file to which \fBatmsigd\fP writes logging messages. When using the special file name \fBsyslog\fP, messages are send to the system logger instead. Log messages are written to standard output if no log file is specified. Writing to standard output can also be explicitly requested by using the special file name \fBstderr\fP. .IP \fBdebug\ trace\ \fP[\fInumber\fP] Enables tracing and optionally sets the number of entries that should be kept in the trace buffer. A (small) default is used if the number is omitted. .IP \fBio\ level\ \fIlevel\fP Sets the debug level for IO-related messages to \fIlevel\fP. .IP \fBio\ max_rate\ \fIrate\fP Sets the rate to signal if an application requests the "maximum". See qos(7) for the syntax to use for expressing the rate. The default maximum rate is 353207 cells/second (OC3). (Note that the value of \fBmax_rate\fP does not constrain the rates an application can explicitly request.) .IP \fBio\ qos\ \fIqos\fP Configures the signaling VC to use the specified QOS (see qos(7) for the syntax). By default, UBR at link speed is used on the signaling VC. .IP \fBio\ vc\ \fP[\fIitf\fB.\fP]\fIvpi\fB.\fIvci\fP Uses the specified VC for signaling messages instead of the usual 0.0.5. .IP \fBsaal\ level\ \fIlevel\fP Sets the debug level for messages related to SAAL (i.e. SSCF and SSCOP) to \fIlevel\fP. .IP \fBsig\ level\ \fIlevel\fP Sets the debug level for messages related to signaling (Q.2931 or ISP) to \fIlevel\fP. .IP \fBsig\ mode\ \fImode\fP Set the mode of operation. The following modes are available: \fBuser\fP for the user side, \fBnetwork\fP for the network side, and \fBswitch\fP for operation in a switch. The default behaviour is \fBuser\fP. .IP \fBsig\ uni30\fP Use UNI 3.0 signaling. If specified together with \fBsig uni31\fP, this option sets UNI 3.1 signaling with a few backwards-compatibility extensions. .IP \fBsig\ uni31\fP Use UNI 3.1 signaling. This option can be combined with \fBsig uni30\fP (see above). .IP \fBsig\ uni40\fP Use UNI 4.0 signaling. This option can be combined with \fBsig q.2963.1\fP (see below). .IP \fBsig\ q.2963.1\fP Enable peak cell rate renegotiation. This option is only available with UNI 4.0 signaling. .IP \fBsig\ vpci\ \fIvpci\fB\ itf\ \fIitf\fP Sets up a very simplistic type of routing. All calls with VPCI values equal to or greater than \fIvpci\fP will be routed to \fIitf\fP, and their VPI values will be set to the signaled VPCI minus \fIvpci\fP. Multiple \fBsig vpci\fP entries can be used to support an arbitrary number of interfaces. Example: with \fBsig vpci 4 itf 1\fP, a call signaled for VPCI/VCI 0.x is routed to 0.0.x, a call signaled for 6.y is routed to 1.2.y, etc. .IP \fBpolicy\ level\ \fIlevel\fP Sets the debug level for messages related to policy decisions to \fIlevel\fP. .IP \fBpolicy\ \fIdecision\ direction\ address\fP Takes the specified \fIdecision\fP for calls from or to \fIaddress\fP. \fIdecision\fP can be either \fBallow\fP or \fBreject\fP. \fIdirection\fP is either \fBfrom\fP or \fBto\fP. The \fIaddress\fP may be wildcarded by prepending a slash and the number of significant bits (NSAP) or digits (E.164). The rules are searched in the order in which they appear in \fBatmsigd.conf\fP until the first match. If no rule matches, the call is allowed. .IP \fBentity\ \fP[\fIitf\fB.\fP]\fIvpi\fB.\fIvci\fP\ {\ \fIoptions\ ...\fP\ } Activates a signaling entity on that specific VC. Multiple \fBentity\fP clauses can appear in the same configuration. When using \fBentity\fP, the option \fBio vc\fP is not available. \fBentity\fP is optionally followed by the following options, enclosed in curly braces: \fBvpci\fP (corresponds to \fBsig vpci\fP), \fBmode\fP (corresponds to \fBsig mode\fP), \fBqos\fP (corresponds to \fBvc qos\fP), \fBroute\fP, and \fBdefault\fP. The last two options determine how outbound calls are routed. The \fBroute\fP option is followed by an address in the format used for addresses in \fBpolicy\fP. If no route entry matches the called party number of an outbound call, the entry marked with \fBdefault\fP is selected. .P When setting multiple parameters in the same group, the group name doesn't have to be repeated if it is followed by the parameters in curly braces. Example: .nf .sp debug { level warn dump /var/tmp log syslog trace 100 } .sp .fi .P Line breaks can be inserted in \fBatmsigd.conf\fP wherever spaces or tabs are allowed. Everything between a `#' and the end of the line is considered a comment. The `#' character cannot be escaped. .P If an option is specified in \fBatmsigd.conf\fP and on the command line, the command line has priority. .COMPATIBILITY Certain options used by past versions of \fBatmsigd\fP but no longer documented on the man page are still recognized and supported, but they also yield a warning message. Future versions of \fBatmsigd\fP will not recognize those options. .SH AUTHOR Werner Almesberger, EPFL ICA .SH "SEE ALSO" atmsigd(8), qos(7), syslogd(8) .\"{{{}}} linux-atm-2.5.1/src/sigd/cfg_l.l0000644000200100001440000000526610125252674015241 0ustar chasusers%{ /* cfg.l - configuration language */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include "atm.h" #include "cfg_y.h" static int lineno = 1; static int token; /* f@#%ing flex doesn't grok return after BEGIN */ void yyerror(const char *s); void yywarn(const char *s); %} %s N %s P %s R %% BEGIN(N); level return TOK_LEVEL; debug return TOK_DEBUG; info return TOK_INFO; warn return TOK_WARN; error return TOK_ERROR; fatal return TOK_FATAL; sig return TOK_SIG; uni30 return TOK_UNI30; 3.0 return TOK_UNI30; uni31 return TOK_UNI31; 3.1 return TOK_UNI31; uni40 return TOK_UNI40; 4.0 return TOK_UNI40; [qQ].2963.1 return TOK_Q2963_1; mode return TOK_MODE; user return TOK_USER; network return TOK_NET; switch return TOK_SWITCH; saal return TOK_SAAL; vc return TOK_VC; io return TOK_IO; itf return TOK_ITF; vpci return TOK_VPCI; pcr return TOK_PCR; policy return TOK_POLICY; allow return TOK_ALLOW; reject return TOK_REJECT; entity return TOK_ENTITY; default return TOK_DEFAULT; dump { BEGIN(P); token = TOK_DUMP_DIR; } log { BEGIN(P); token = TOK_LOGFILE; } qos { BEGIN(P); /* syntacticly close to a path */ token = TOK_QOS; } from { BEGIN(P); /* syntacticly close to a path */ token = TOK_FROM; } to { BEGIN(P); /* syntacticly close to a path */ token = TOK_TO; } route { BEGIN(P); /* syntacticly close to a path */ token = TOK_ROUTE; } max_rate { BEGIN(R); /* rate */ token = TOK_MAX_RATE; } trace return TOK_TRACE; [0-9]+ { char *end; yylval.num = strtoul(yytext,&end,10); if (*end) yyerror("invalid number"); return TOK_NUMBER; } [0-9]+\.[0-9]+(\.[0-9]+)? { if (text2atm(yytext,(struct sockaddr *) &yylval.pvc, sizeof(yylval.pvc),T2A_PVC) < 0) yyerror("invalid signaling channel"); return TOK_PVC; }

[^\t\n ]+ { BEGIN(N); yylval.str = strdup(yytext); /* tiny leak ... */ if (!yylval.str) { perror("strdup"); exit(1); } return token; } [0-9]+\.?[0-9]*[\t ]*([kKmMgG]?[bBcC][pP][sS])? { const char *text; BEGIN(N); text = yytext; yylval.num = __t2q_get_rate(&text,1); if (yylval.num < 0) yyerror("invalid rate"); return token; } \n?[\t ]* lineno += *yytext == '\n'; #[^\n]*\n lineno++; . return *yytext; %% void yywarn(const char *s) { fprintf(stderr,"line %d: %s near \"%s\"\n",lineno,s,yytext); } void yyerror(const char *s) { yywarn(s); exit(1); } linux-atm-2.5.1/src/sigd/cfg_y.y0000644000200100001440000001545211235572166015275 0ustar chasusers%{ /* cfg.y - configuration language */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "atm.h" #include "atmd.h" #include "proto.h" #include "io.h" #include "trace.h" #include "policy.h" static RULE *rule; static SIG_ENTITY *curr_sig = &_entity; void yyerror(const char *s); void yywarn(const char *s); int yylex(void); static int hex2num(char digit) { if (isdigit(digit)) return digit-'0'; if (islower(digit)) return toupper(digit)-'A'+10; return digit-'A'+10; } static void put_address(char *address) { char *mask; mask = strchr(address,'/'); if (mask) *mask++ = 0; if (text2atm(address,(struct sockaddr *) &rule->addr,sizeof(rule->addr), T2A_SVC | T2A_WILDCARD | T2A_NAME | T2A_LOCAL) < 0) { yyerror("invalid address"); return; } if (!mask) rule->mask = -1; else rule->mask = strtol(mask,NULL,10); add_rule(rule); } %} %union { int num; char *str; struct sockaddr_atmpvc pvc; }; %token TOK_LEVEL TOK_DEBUG TOK_INFO TOK_WARN TOK_ERROR TOK_FATAL %token TOK_SIG TOK_UNI30 TOK_UNI31 TOK_UNI40 TOK_Q2963_1 TOK_SAAL %token TOK_VC TOK_IO TOK_MODE TOK_USER TOK_NET TOK_SWITCH TOK_VPCI %token TOK_ITF TOK_PCR TOK_TRACE TOK_POLICY TOK_ALLOW TOK_REJECT %token TOK_ENTITY TOK_DEFAULT %token TOK_NUMBER TOK_MAX_RATE %token TOK_DUMP_DIR TOK_LOGFILE TOK_QOS TOK_FROM TOK_TO TOK_ROUTE %token TOK_PVC %type level opt_trace_size action %% all: global local ; global: | item global ; local: | entity local { if (!curr_sig->uni) curr_sig->uni = #if defined(UNI30) || defined(DYNAMIC_UNI) S_UNI30 #endif #ifdef UNI31 S_UNI31 #ifdef ALLOW_UNI30 | S_UNI30 #endif #endif #ifdef UNI40 S_UNI40 #ifdef Q2963_1 | S_Q2963_1 #endif #endif ; } ; item: TOK_LEVEL level { set_verbosity(NULL,$2); } | TOK_SIG sig | TOK_SAAL saal | TOK_IO io | TOK_DEBUG debug | TOK_POLICY policy ; entity: TOK_ENTITY TOK_PVC { SIG_ENTITY *sig,**walk; if (atmpvc_addr_in_use(_entity.signaling_pvc)) yyerror("can't use io vc and entity ... in the same " "configuration"); if (entities == &_entity) entities = NULL; for (sig = entities; sig; sig = sig->next) if (atm_equal((struct sockaddr *) &sig->signaling_pvc, (struct sockaddr *) &$2,0,0)) yyerror("duplicate PVC address"); curr_sig = alloc_t(SIG_ENTITY); *curr_sig = _entity; curr_sig->signaling_pvc = $2; curr_sig->next = NULL; for (walk = &entities; *walk; walk = &(*walk)->next); *walk = curr_sig; } opt_options ; opt_options: | '{' options '}' ; options: | option options ; option: TOK_VPCI TOK_NUMBER TOK_ITF TOK_NUMBER { enter_vpci(curr_sig,$2,$4); } | TOK_MODE mode | TOK_QOS { curr_sig->sig_qos = $1; } | TOK_MAX_RATE { curr_sig->max_rate = $1; } | TOK_ROUTE { struct sockaddr_atmsvc addr; char *mask; mask = strchr($1,'/'); if (mask) *mask++ = 0; if (text2atm($1,(struct sockaddr *) &addr,sizeof(addr), T2A_SVC | T2A_WILDCARD | T2A_NAME | T2A_LOCAL) < 0) { yyerror("invalid address"); YYABORT; } add_route(curr_sig,&addr,mask ? strtol(mask,NULL,10) : INT_MAX); } | TOK_DEFAULT { add_route(curr_sig,NULL,0); } ; sig: sig_item | '{' sig_items '}' ; sig_items: | sig_item sig_items ; saal: saal_item | '{' saal_items '}' ; saal_items: | saal_item saal_items ; io: io_item | '{' io_items '}' ; io_items: | io_item io_items ; debug: debug_item | '{' debug_items '}' ; debug_items: | debug_item debug_items ; policy: policy_item | '{' policy_items '}' ; policy_items: | policy_item policy_items ; sig_item: TOK_LEVEL level { set_verbosity("UNI",$2); set_verbosity("KERNEL",$2); set_verbosity("SAP",$2); } | TOK_VPCI TOK_NUMBER TOK_ITF TOK_NUMBER { enter_vpci(curr_sig,$2,$4); } | TOK_UNI30 { #if defined(UNI30) || defined(ALLOW_UNI30) || defined(DYNAMIC_UNI) if (curr_sig->uni & ~S_UNI31) yyerror("UNI mode is already set"); curr_sig->uni |= S_UNI30; #else yyerror("Sorry, not supported yet"); #endif } | TOK_UNI31 { #if defined(UNI31) || defined(ALLOW_UNI30) || defined(DYNAMIC_UNI) if (curr_sig->uni & ~S_UNI30) yyerror("UNI mode is already set"); curr_sig->uni |= S_UNI31; #else yyerror("Sorry, not supported yet"); #endif } | TOK_UNI40 { #if defined(UNI40) || defined(DYNAMIC_UNI) if (curr_sig->uni) yyerror("UNI mode is already set"); curr_sig->uni = S_UNI40; #else yyerror("Sorry, not supported yet"); #endif } | TOK_Q2963_1 { #if defined(Q2963_1) || defined(DYNAMIC_UNI) if (!(curr_sig->uni & S_UNI40)) yyerror("Incompatible UNI mode"); curr_sig->uni |= S_Q2963_1; #else yyerror("Sorry, not supported yet"); #endif } | TOK_NET { yywarn("sig net is obsolete, please use sig mode net instead"); curr_sig->mode = sm_net; } | TOK_MODE mode ; saal_item: TOK_LEVEL level { set_verbosity("SSCF",$2); set_verbosity("SSCOP",$2); } ; io_item: TOK_LEVEL level { set_verbosity("IO",$2); } | TOK_VC TOK_PVC { curr_sig->signaling_pvc = $2; } | TOK_PCR TOK_NUMBER { yywarn("io pcr is obsolete, please use io qos instead"); curr_sig->sig_pcr = $2; } | TOK_QOS { curr_sig->sig_qos = $1; } | TOK_MAX_RATE { curr_sig->max_rate = $1; } ; debug_item: TOK_LEVEL level { set_verbosity(NULL,$2); } | TOK_DUMP_DIR { dump_dir = $1; if (!trace_size) trace_size = DEFAULT_TRACE_SIZE; } | TOK_LOGFILE { set_logfile($1); } | TOK_TRACE opt_trace_size { trace_size = $2; } ; opt_trace_size: { $$ = DEFAULT_TRACE_SIZE; } | TOK_NUMBER { $$ = $1; } ; level: TOK_DEBUG { $$ = DIAG_DEBUG; } | TOK_INFO { $$ = DIAG_INFO; } | TOK_WARN { $$ = DIAG_WARN; } | TOK_ERROR { $$ = DIAG_ERROR; } | TOK_FATAL { $$ = DIAG_FATAL; } ; mode: TOK_USER { curr_sig->mode = sm_user; } | TOK_NET { curr_sig->mode = sm_net; } | TOK_SWITCH { curr_sig->mode = sm_switch; } ; policy_item: TOK_LEVEL level { set_verbosity("POLICY",$2); } | action { rule = alloc_t(RULE); rule->type = $1; } direction ; action: TOK_ALLOW { $$ = ACL_ALLOW; } | TOK_REJECT { $$ = ACL_REJECT; } ; direction: TOK_FROM { rule->type |= ACL_IN; put_address($1); } | TOK_TO { rule->type |= ACL_OUT; put_address($1); } ; linux-atm-2.5.1/src/sigd/io.c0000644000200100001440000002232307360675443014570 0ustar chasusers/* io.c - I/O operations */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include "atmd.h" #include "uni.h" #include "pdu.h" #include "proto.h" #include "io.h" #include "trace.h" #define COMPONENT "IO" struct timeval now; int stop = 0; static int kernel = -1; static int need_connect = 0; /* non-zero if connection to kernel isn't bi-directional yet */ /* ----- kernel interface -------------------------------------------------- */ static int open_kernel(void) { int s; if ((s = socket(PF_ATMSVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return -1; } if (ioctl(s,ATMSIGD_CTRL,0) < 0) { perror("ioctl ATMSIGD_CTRL"); return -1; } return s; } void open_unix(const char *path) { kernel = un_create(path,0600); if (kernel < 0) diag(COMPONENT,DIAG_FATAL,"un_create %s: %s",path,strerror(errno)); need_connect = 1; } static void recv_kernel(void) { static unsigned char buffer[sizeof(struct atmsvc_msg)+1]; int size; if (!need_connect) size = read(kernel,buffer,sizeof(buffer)); else { size = un_recv_connect(kernel,buffer,sizeof(buffer)); need_connect = 0; } if (size < 0) { diag(COMPONENT,DIAG_ERROR,"read kernel: %s",strerror(errno)); return; } if (size != sizeof(struct atmsvc_msg)) diag(COMPONENT,DIAG_FATAL,"kernel message size %d != %d",size, sizeof(struct atmsvc_msg)); trace_kernel("FROM KERNEL",(struct atmsvc_msg *) buffer); from_kernel((struct atmsvc_msg *) buffer,size); } void to_kernel(struct atmsvc_msg *msg) { int wrote; diag("KERNEL",DIAG_DEBUG,"TO KERNEL: %s (%d) for %s/%s", as_name[msg->type],msg->reply,kptr_print(&msg->vcc), kptr_print(&msg->listen_vcc)); /* should be "IO" ... */ trace_kernel("TO KERNEL",msg); wrote = write(kernel,msg,sizeof(*msg)); if (wrote == sizeof(*msg)) return; if (wrote < 0) { perror("kernel write"); return; } diag(COMPONENT,DIAG_ERROR,"bad kernel write: wanted %d, wrote %d", sizeof(*msg),wrote); } static void close_kernel(void) { (void) close(kernel); /* may get major complaints from the kernel ... */ } /* ----- signaling interface ----------------------------------------------- */ static int open_signaling(SIG_ENTITY *sig) { struct atm_qos qos; int s; if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return -1; } memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.rxtp.max_sdu = qos.txtp.max_sdu = MAX_Q_MSG; if (sig->sig_qos) { if (text2qos(sig->sig_qos,&qos,T2Q_DEFAULTS) < 0) { fprintf(stderr,"invalid qos: %s\n",sig->sig_qos); return -1; } } else { if (sig->sig_pcr == -1) qos.rxtp.traffic_class = qos.txtp.traffic_class = ATM_UBR; else { qos.rxtp.traffic_class = qos.txtp.traffic_class = ATM_CBR; qos.rxtp.min_pcr = qos.txtp.min_pcr = sig->sig_pcr; } } if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return -1; } sig->signaling_pvc.sap_family = AF_ATMPVC; if (bind(s,(struct sockaddr *) &sig->signaling_pvc, sizeof(sig->signaling_pvc)) < 0) { perror("bind"); return -1; } return s; } static void recv_signaling(SIG_ENTITY *sig) { static unsigned char buffer[MAX_Q_MSG]; int size; size = read(sig->signaling,buffer,MAX_Q_MSG); if (size < 1) { perror("read signaling"); return; } diag(COMPONENT,DIAG_DEBUG,"FROM NET (%d.%d.%d): %s PDU (%d bytes)", S_PVC(sig),pdu_name[size > 3 && !(size & 3) ? buffer[size-4] & 0xf : 0], size); if (debug) diag_dump(COMPONENT,DIAG_DEBUG,NULL,buffer,size); from_net(sig,buffer,size); } void to_net(SIG_ENTITY *sig,void *msg,int size) { int wrote; diag(COMPONENT,DIAG_DEBUG,"TO NET (%d.%d.%d): %s PDU (%d bytes)",S_PVC(sig), pdu_name[size > 3 && !(size & 3) ? ((unsigned char *) msg)[size-4] & 0xf : 0],size); if (debug) diag_dump(COMPONENT,DIAG_DEBUG,NULL,msg,size); wrote = write(sig->signaling,msg,size); if (wrote == size) return; if (wrote < 0) { perror("signaling write"); return; } diag(COMPONENT,DIAG_WARN,"bad signaling write: wanted %d, wrote %d",size, wrote); } static void close_signaling(SIG_ENTITY *sig) { (void) close(sig->signaling); } /* ----- addresses --------------------------------------------------------- */ int get_addr(int itf,LOCAL_ADDR *local_addr) { struct atmif_sioc req; struct sockaddr_atmsvc buffer[MAX_LOCAL_ADDRS]; LOCAL_ADDR *from,*to; int addrs,i; for (from = to = local_addr; from->state != ls_unused; from++) if (from->state != ls_removed) { from->state = ls_removed; *to++ = *from; } to->state = ls_unused; req.number = itf; req.arg = buffer; req.length = sizeof(buffer); if (ioctl(entities->signaling,ATM_GETADDR,&req) < 0) diag(COMPONENT,DIAG_FATAL,"ioctl ATM_GETADDR yields \"%s\"", strerror(errno)); addrs = req.length/sizeof(struct sockaddr_atmsvc); for (i = 0; i < addrs; i++) { for (from = local_addr; from->state != ls_unused; from++) if (atm_equal((struct sockaddr *) (buffer+i), (struct sockaddr *) &from->addr,0,0)) break; if (from->state != ls_unused) from->state = ls_same; else if (to == local_addr+MAX_LOCAL_ADDRS-1) diag(COMPONENT,DIAG_WARN,"local address table overflow"); else { to->state = ls_added; to->addr = buffer[i]; to++; to->state = ls_unused; } } return addrs; } /* ----- common part ------------------------------------------------------- */ int open_all(void) { SIG_ENTITY *sig,*purge; if (kernel == -1) kernel = open_kernel(); if (kernel < 0) return -1; for (sig = entities; sig; sig = sig->next) { sig->signaling = open_signaling(sig); if (sig->signaling < 0) { for (purge = entities; purge != sig; purge = purge->next) close_signaling(purge); close_kernel(); return -1; } } return 0; } void close_all(void) { SIG_ENTITY *sig; close_kernel(); for (sig = entities;sig; sig = sig->next) close_signaling(sig); } void init_current_time(void) { gettimeofday(&now,NULL); } void poll_loop(void) { SIG_ENTITY *sig; fd_set perm,set; int fds,ret; FD_ZERO(&perm); FD_SET(kernel,&perm); fds = kernel+1; for (sig = entities; sig; sig = sig->next) { FD_SET(sig->signaling,&perm); if (fds <= sig->signaling) fds = sig->signaling+1; } gettimeofday(&now,NULL); while (!stop) { set = perm; poll_signals(); /* * Here we have a small race condition: if a signal is delivered after * poll_signals tests for it but before select sleeps, we miss that * signal. If it is sent again, we're of course likely to get it. This * isn't worth fixing, because those signals are only used for * debugging anyway. */ ret = select(fds,&set,NULL,NULL,next_timer()); if (ret < 0) { if (errno != EINTR) perror("select"); } else { diag(COMPONENT,DIAG_DEBUG,"----------"); gettimeofday(&now,NULL); if (FD_ISSET(kernel,&set)) recv_kernel(); for (sig = entities; sig; sig = sig->next) if (FD_ISSET(sig->signaling,&set)) recv_signaling(sig); expire_timers(); /* expire timers after handling messges to make sure we don't time out unnecessarily because of scheduling delays */ } } } /* * The allocation strategy could be improved as follows: we should try * vci = prev_vci++ first and only resort to ATM_VCI_ANY if that fails several * times (and we should actually skip over those which are in use by SVCs. This * way we avoid using VCIs that just became available. Doing it "right" seems * to be getting complex, though. */ int get_pvc(int itf,int *vci) { struct sockaddr_atmpvc addr; struct atm_qos qos; int s,error; if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) diag(COMPONENT,DIAG_FATAL,"get_pvc: %s",strerror(errno)); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.rxtp.traffic_class = qos.txtp.traffic_class = ATM_UBR; qos.rxtp.max_sdu = qos.txtp.max_sdu = 1; /* smallest possible SDU size */ if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) diag(COMPONENT,DIAG_FATAL,"setsockopt SO_ATMQOS: %s",strerror(errno)); memset(&addr,0,sizeof(addr)); addr.sap_family = AF_ATMPVC; addr.sap_addr.itf = itf; addr.sap_addr.vpi = 0; /* @@@ */ addr.sap_addr.vci = ATM_VCI_ANY; error = 0; if (bind(s,(struct sockaddr *) &addr,sizeof(addr)) < 0) error = errno; else { int size; size = sizeof(addr); if (getsockname(s,(struct sockaddr *) &addr,&size) < 0) diag(COMPONENT,DIAG_FATAL,"get_pvc: %s",strerror(errno)); *vci = addr.sap_addr.vci; return s; } (void) close(s); return -error; } int get_link_rate(int itf) { struct atmif_sioc req; int rate; req.number = itf; req.arg = &rate; req.length = sizeof(rate); if (ioctl(entities->signaling,ATM_GETLINKRATE,&req) < 0) diag(COMPONENT,DIAG_FATAL,"ioctl ATM_GETLINKRATE yields \"%s\"", strerror(errno)); return rate; } linux-atm-2.5.1/src/sigd/io.h0000644000200100001440000000103307360675443014570 0ustar chasusers/* io.h - I/O operations */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef IO_H #define IO_H #include #include #include #include "proto.h" int open_all(void); void open_unix(const char *name); void init_current_time(void); void poll_loop(void); void close_all(void); void to_kernel(struct atmsvc_msg *msg); void to_net(SIG_ENTITY *sig,void *msg,int size); int get_addr(int itf,LOCAL_ADDR *local_addr); int get_pvc(int itf,int *vci); int get_link_rate(int itf); #endif linux-atm-2.5.1/src/sigd/kernel.c0000644000200100001440000005512410203711252015421 0ustar chasusers/* kernel.c - Processing of incoming kernel messages */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include "atmd.h" #include "uni.h" #include "qlib.h" #include #include "proto.h" #include "sap.h" #include "io.h" #include "policy.h" #include "timeout.h" #define COMPONENT "KERNEL" #ifdef MULTIPOINT int send_dropparty(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc, q_buffer, MAX_Q_MSG); q_assign(&dsc, QF_msg_type, ATM_MSG_DROP_PARTY); q_assign(&dsc, QF_call_ref, sock->call_ref); q_assign(&dsc, QF_ep_ref, sock->ep_ref); q_assign(&dsc, QF_cause, ATM_CV_NORMAL_UNSPEC); if ((size = q_close(&dsc)) < 0) return -EINVAL; to_signaling(sock->sig, q_buffer, size); START_TIMER(sock, T398); return 0; } int send_addparty(SOCKET *sock, struct sockaddr_atmsvc *svc) { SOCKET *walk = NULL; Q_DSC dsc; struct sockaddr_atmsvc *local = NULL; int error = 0,size,max_ep_ref = 0; char buf[80]; diag(COMPONENT, DIAG_INFO, "send_addparty"); q_create(&dsc,q_buffer,MAX_Q_MSG); /* think this next line is already done */ /* sock->sig = route_remote(&sock->remote); */ /* set the calling party address */ if (sock->sig && sock->sig->mode == sm_switch) local = &sock->local; if (atmsvc_addr_in_use(sock->local) && !local) { sock->sig = route_local(&sock->local); if (sock->sig) local = &sock->local; else { error = -EADDRNOTAVAIL; diag(COMPONENT,DIAG_WARN,"local address no longer available"); } } else { if (!sock->sig) error = -EHOSTUNREACH; else { if (!local) local = get_local(sock->sig); if (!local) local = get_local(NULL); if (local) sock->local = *local; else { error = -EADDRNOTAVAIL; diag(COMPONENT,DIAG_ERROR,"no local address"); } } } if (local) { if (*local->sas_addr.pub) { q_assign(&dsc,QF_cgpn_plan,ATM_NP_E164); q_assign(&dsc,QF_cgpn_type,ATM_TON_INTRNTNL); q_write(&dsc,QF_cgpn,(void *) local->sas_addr.pub, strlen(local->sas_addr.pub)); } else { q_assign(&dsc,QF_cgpn_plan,ATM_NP_AEA); q_assign(&dsc,QF_cgpn_type,ATM_TON_UNKNOWN); q_write(&dsc,QF_cgpn,(void *) local->sas_addr.prv,ATM_ESA_LEN); } } /* what to do if error == -EADDRNOTAVAIL ? */ /* find the largest endpoint reference in the list */ for (walk = sockets; walk->next; walk = walk->next) { if ((walk->call_ref == sock->call_ref) && (walk->ep_ref > max_ep_ref)) max_ep_ref = walk->ep_ref; } sock->ep_ref = max_ep_ref + 1; q_assign(&dsc,QF_call_ref,sock->call_ref); q_assign(&dsc,QF_aal_type,5); /* AAL 5 */ q_assign(&dsc,QF_msg_type,ATM_MSG_ADD_PARTY); diag(COMPONENT, DIAG_INFO, "send_addparty: sap_encode"); if (atm2text(buf,MAX_ATM_ADDR_LEN+1,(struct sockaddr *)svc, pretty) >= 0) diag(COMPONENT, DIAG_INFO, "send_addparty -> %s", buf); else diag(COMPONENT, DIAG_INFO, "send_addparty: invalid nsap address"); error = sap_encode(&dsc,svc,&sock->sap,NULL,sock->sig->uni,sock->sig->max_rate); diag(COMPONENT, DIAG_INFO, "send_addparty: sap_encode error = %d", error); q_assign(&dsc, QF_ep_ref, sock->ep_ref); error = 0; if ((size = q_close(&dsc)) < 0) { error = -EINVAL; } else if (!error) { to_signaling(sock->sig,q_buffer,size); new_state(sock,ss_connecting); return sock->ep_ref; } return error; } #endif static int send_setup(SOCKET *sock) { static unsigned long call_ref = 0; struct sockaddr_atmsvc *local; SOCKET *walk; Q_DSC dsc; int error,size; do { if (++call_ref == 0x7fffff) call_ref = 1; for (walk = sockets; walk; walk = walk->next) if (walk->call_ref == call_ref) break; } while (walk); sock->call_ref = call_ref; q_create(&dsc,q_buffer,MAX_Q_MSG); local = NULL; error = 0; sock->sig = route_remote(&sock->remote); if (sock->sig && sock->sig->mode == sm_switch) local = &sock->local; if (atmsvc_addr_in_use(sock->local) && !local) { sock->sig = route_local(&sock->local); if (sock->sig) local = &sock->local; else { error = -EADDRNOTAVAIL; diag(COMPONENT,DIAG_WARN,"local address no longer available"); } } else { if (!sock->sig) error = -EHOSTUNREACH; else { if (!local) local = get_local(sock->sig); if (!local) local = get_local(NULL); if (local) sock->local = *local; else { error = -EADDRNOTAVAIL; diag(COMPONENT,DIAG_ERROR,"no local address"); } } } if (local) { if (*local->sas_addr.pub) { q_assign(&dsc,QF_cgpn_plan,ATM_NP_E164); q_assign(&dsc,QF_cgpn_type,ATM_TON_INTRNTNL); q_write(&dsc,QF_cgpn,(void *) local->sas_addr.pub, strlen(local->sas_addr.pub)); } else { q_assign(&dsc,QF_cgpn_plan,ATM_NP_AEA); q_assign(&dsc,QF_cgpn_type,ATM_TON_UNKNOWN); q_write(&dsc,QF_cgpn,(void *) local->sas_addr.prv,ATM_ESA_LEN); } } q_assign(&dsc,QF_call_ref,call_ref); q_assign(&dsc,QF_msg_type,ATM_MSG_SETUP); q_assign(&dsc,QF_aal_type,5); /* AAL 5 */ #if defined(UNI30) || defined(DYNAMIC_UNI) if (!error && sock->sig->uni == S_UNI30) q_assign(&dsc,QF_aal_mode,1); /* Message mode - LANE seems to really want this */ #endif q_assign(&dsc,QF_sscs_type,0); /* unspecified - LANE wants this */ if (!error) error = sap_encode(&dsc,&sock->remote,&sock->sap,&sock->qos, sock->sig->uni,sock->sig->max_rate); q_assign(&dsc,QF_bearer_class,16); /* BCOB-X */ #ifndef MULTIPOINT q_assign(&dsc,QF_upcc,0); /* p2p */ #else if (sock->ct == p2p) { diag(COMPONENT, DIAG_INFO, "setting configuration to point-to-point"); q_assign(&dsc,QF_upcc,0); /* p2p */ } else if (sock->ct == p2mp) { diag(COMPONENT, DIAG_INFO, "setting configuration to multipoint"); q_assign(&dsc, QF_upcc, 1); /* p2mp */ q_assign(&dsc, QF_ep_ref, 0); /* initial setup always leaf 0 */ sock->ep_ref = 0; } #endif #if !defined(UNI30) || defined(DYNAMIC_UNI) if (!error && sock->sig->uni != S_UNI30) q_assign(&dsc,QF_qos_cs,Q2931_CS_ITU); #endif q_assign(&dsc,QF_qos_fw,0); /* QOS 0 */ q_assign(&dsc,QF_qos_bw,0); if (!error && sock->sig->mode != sm_user) { if (!atmpvc_addr_in_use(sock->pvc)) { int vpci,vci; if (sock->sig->mode == sm_switch) diag(COMPONENT,DIAG_FATAL,"No CI allocator (use -A)"); vpci = 0; sock->pvc.sap_addr.itf = get_itf(sock->sig,&vpci); sock->pvc.sap_addr.vpi = vpci; vci = get_vci(sock->pvc.sap_addr.itf); if (vci < 0) { (void) q_close(&dsc); return vci; } sock->pvc.sap_addr.vci = vci; } q_assign(&dsc,QF_vpi,sock->pvc.sap_addr.vpi); q_assign(&dsc,QF_vci,sock->pvc.sap_addr.vci); } if ((size = q_close(&dsc)) < 0) error = -EINVAL; else if (!error) to_signaling(sock->sig,q_buffer,size); return error; } static int send_connect(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_CONNECT); q_assign(&dsc,QF_call_ref,sock->call_ref); if (sock->ep_ref >= 0) q_assign(&dsc,QF_ep_ref,sock->ep_ref); if (sock->ep_ref <= 0) { /* no AAL parameters if ep_ref present and != 0 */ q_assign(&dsc,QF_aal_type,5); #if defined(UNI30) || defined(DYNAMIC_UNI) if (sock->sig->uni == S_UNI30) q_assign(&dsc,QF_aal_mode,1); /* Message mode - LANE seems to really want this */ #endif q_assign(&dsc,QF_sscs_type,0); /* unspecified - LANE wants this */ q_assign(&dsc,QF_fw_max_sdu,sock->qos.rxtp.max_sdu); q_assign(&dsc,QF_bw_max_sdu,sock->qos.txtp.max_sdu); } if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); return 0; } #if defined(Q2963_1) || defined(DYNAMIC_UNI) static void send_modify_request(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_MODIFY_REQ); q_assign(&dsc,QF_call_ref,sock->call_ref); if (sock->new_qos.txtp.traffic_class) q_assign(&dsc,QF_fw_pcr_01,SELECT_TOP_PCR(sock->new_qos.txtp)); if (sock->new_qos.rxtp.traffic_class) q_assign(&dsc,QF_bw_pcr_01,SELECT_TOP_PCR(sock->new_qos.rxtp)); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); } static void send_modify_ack(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_MODIFY_ACK); q_assign(&dsc,QF_call_ref,sock->call_ref); if (sock->qos.rxtp.traffic_class != ATM_NONE && sock->qos.rxtp.max_pcr < sock->new_qos.rxtp.max_pcr) { q_assign(&dsc,QF_type_of_report,ATM_TOR_MOD_CONF); START_TIMER(sock,T361); } if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); } #endif static void dispatch(SOCKET *sock,struct atmsvc_msg *msg) { int error; switch (msg->type) { case as_bind: /* only in NULL state */ if (sock) break; if (msg->svc.sas_family != AF_ATMSVC) { SEND_ERROR(msg->vcc,-EAFNOSUPPORT); return; } if (!atmsvc_addr_in_use(msg->svc)) #ifdef BE_PICKY_ABOUT_BINDING_LOCAL_WILDCARD_ADDRESSES if (!get_local(NULL)) SEND_ERROR(msg->vcc,-EADDRNOTAVAIL); else #endif send_kernel(msg->vcc,kptr_null,as_okay,0,NULL,NULL, get_local(NULL),NULL,NULL); else { if (!route_local(&msg->svc)) { SEND_ERROR(msg->vcc,-EADDRNOTAVAIL); return; } send_kernel(msg->vcc,kptr_null,as_okay,0,NULL,NULL,NULL,NULL, NULL); } return; case as_connect: /* NULL state only */ if (sock) break; if (!allow(&msg->svc,ACL_OUT)) { SEND_ERROR(msg->vcc,-EACCES); return; } sock = new_sock(msg->vcc); sock->local = msg->local; sock->remote = msg->svc; sock->qos = msg->qos; sock->sap = msg->sap; sock->state = ss_connecting; sock->pvc = msg->pvc; #ifdef MULTIPOINT sock->ct = p2p; if (msg->session > 0) sock->ct = p2mp; #endif error = send_setup(sock); if (error) { SEND_ERROR(msg->vcc,error); free_sock(sock); return; } START_TIMER(sock,T303); new_state(sock,ss_connecting); return; case as_accept: if (sock->state == ss_zombie) { SEND_ERROR(msg->vcc,-ECONNABORTED); /* -ERESTARTSYS ? */ free_sock(sock); return; } if (sock->state != ss_indicated && sock->state != ss_proceeding) break; if (sock->state == ss_indicated && sock->sig->mode != sm_user) diag(COMPONENT,DIAG_FATAL,"No CI allocator (use -A)"); error = send_connect(sock); if (!error) { START_TIMER(sock,T313); new_state(sock,ss_accepting); return; } SEND_ERROR(sock->id,error); send_release(sock,0); /* @@@ */ START_TIMER(sock,T308_1); new_state(sock,ss_wait_rel); return; case as_reject: /* ZOMBIE, INDICATED, or PROCEEDING */ switch (sock->state) { case ss_indicated: send_release_complete(sock->sig,sock->call_ref, ATM_CV_CALL_REJ); /* fall through */ case ss_zombie: free_sock(sock); return; case ss_proceeding: send_release(sock,ATM_CV_CALL_REJ); /* @@@ should use msg->reply */ START_TIMER(sock,T308_1); new_state(sock,ss_wait_rel); return; default: break; } break; case as_listen: /* NULL */ if (sock) break; if (msg->svc.sas_family != AF_ATMSVC) { SEND_ERROR(msg->vcc,-EAFNOSUPPORT); return; } if (msg->qos.aal != ATM_AAL5) { SEND_ERROR(msg->vcc,-EINVAL); return; } if (lookup_sap(&msg->svc,&msg->sap,&msg->qos,NULL,NULL,NULL,1)) { SEND_ERROR(msg->vcc,-EADDRINUSE); return; } sock = new_sock(msg->vcc); sock->local = msg->svc; sock->sap = msg->sap; sock->qos = msg->qos; send_kernel(sock->id,kptr_null,as_okay,0,NULL,NULL,NULL,NULL,NULL); sock->state = ss_listening; return; case as_close: /* all but INDICATED, PROCEEDING, ZOMBIE, and WAIT_REL */ if (sock && (sock->state == ss_indicated || sock->state == ss_proceeding || sock->state == ss_zombie || sock->state == ss_wait_rel)) break; switch (sock ? sock->state : ss_null) { case ss_listening: send_close(sock); if (sock->listen) new_state(sock,ss_listen_zombie); else free_sock(sock); return; case ss_zombie: send_close(sock); /* fall through */ case ss_wait_close: /* network requested close */ free_sock(sock); /* fall through */ case ss_null: case ss_rel_req: return; case ss_connecting: case ss_accepting: #if defined(Q2963_1) || defined(DYNAMIC_UNI) case ss_mod_req: #endif STOP_TIMER(sock); /* fall through */ #if defined(Q2963_1) || defined(DYNAMIC_UNI) case ss_mod_lcl: case ss_mod_rcv: case ss_mod_fin_ok: case ss_mod_fin_fail: case ss_mod_fin_ack: #endif case ss_connected: #if defined(Q2963_1) || defined(DYNAMIC_UNI) if (timer_handler(sock->conn_timer) == on_T361) STOP_TIMER(sock); #endif if (sock->state == ss_connected) diag(COMPONENT,DIAG_INFO,"Active close (CR 0x%06X)", sock->call_ref); send_release(sock, #ifdef DYNAMIC_UNI sock->sig->uni != S_UNI30 ? ATM_CV_NORMAL_CLEAR : ATM_CV_NORMAL_UNSPEC #else #if defined(UNI31) || defined(UNI40) ATM_CV_NORMAL_CLEAR #else ATM_CV_NORMAL_UNSPEC #endif #endif ); START_TIMER(sock,T308_1); new_state(sock,ss_rel_req); return; case ss_rel_ind: send_release_complete(sock->sig,sock->call_ref,0); /* @@@ */ diag(COMPONENT, DIAG_INFO, "ss_rel_ind"); free_sock(sock); return; default: break; } break; case as_identify: if (sock->state != ss_indicated && sock->state != ss_proceeding) break; if (!atmpvc_addr_in_use(msg->pvc)) { if (sock->sig->mode == sm_switch) diag(COMPONENT,DIAG_FATAL,"No CI allocator (use -A)"); return; } if (sock->sig->mode == sm_net) diag(COMPONENT,DIAG_FATAL,"CI allocation role conflict"); sock->pvc = msg->pvc; if (send_call_proceeding(sock)) diag(COMPONENT,DIAG_FATAL,"s_c_p failed"); new_state(sock,ss_proceeding); return; #if defined(Q2963_1) || defined(DYNAMIC_UNI) case as_modify: if (sock && !(sock->sig->uni & S_Q2963_1)) { send_kernel(sock->id,kptr_null,as_okay,-ENOPROTOOPT,NULL,NULL, NULL,NULL,NULL); return; } if (sock && (sock->state == ss_mod_lcl || sock->state == ss_mod_req || sock->state == ss_mod_rcv || sock->state == ss_mod_fin_ok || sock->state == ss_mod_fin_fail || sock->state == ss_mod_fin_ack)) { send_kernel(sock->id,kptr_null,as_okay,-EALREADY,NULL,NULL, NULL,NULL,NULL); return; } if (!sock || sock->state != ss_connected || !sock->owner) { send_kernel(sock->id,kptr_null,as_okay,-EBADFD,NULL,NULL,NULL, NULL,NULL); return; } if (sock->qos.txtp.traffic_class != msg->qos.txtp.traffic_class || sock->qos.rxtp.traffic_class != msg->qos.rxtp.traffic_class || (sock->qos.txtp.traffic_class && (sock->qos.txtp.max_sdu != msg->qos.txtp.max_sdu)) || (sock->qos.rxtp.traffic_class && (sock->qos.rxtp.max_sdu != msg->qos.rxtp.max_sdu))) { /* @@@ may do more checking */ send_kernel(sock->id,kptr_null,as_okay,-EINVAL,NULL,NULL,NULL, NULL,NULL); return; } sock->new_qos = msg->qos; send_kernel(sock->id,kptr_null,as_modify, ATM_MF_INC_RSV | ATM_MF_DEC_SHP,NULL,NULL,NULL,NULL,&msg->qos); new_state(sock,ss_mod_lcl); return; case as_okay: switch (sock ? sock->state : ss_null) { case ss_mod_lcl: send_modify_request(sock); START_TIMER(sock,T360); new_state(sock,ss_mod_req); return; case ss_mod_rcv: send_modify_ack(sock); sock->qos = sock->new_qos; new_state(sock,ss_connected); return; case ss_mod_fin_ok: send_kernel(sock->id,kptr_null,as_okay,0,NULL,NULL,NULL, NULL,NULL); new_state(sock,ss_connected); return; case ss_mod_fin_fail: send_kernel(sock->id,kptr_null,as_okay,sock->error,NULL, NULL,NULL,NULL,NULL); sock->error = 0; /* fall through */ case ss_mod_fin_ack: new_state(sock,ss_connected); /* fall through */ default: return; /* ignore stray as_okay */ } case as_error: switch (sock ? sock->state : ss_null) { case ss_mod_lcl: send_kernel(sock->id,kptr_null,as_okay,msg->reply,NULL, NULL,NULL,NULL,NULL); new_state(sock,ss_connected); return; case ss_mod_rcv: send_modify_reject(sock,ATM_CV_RES_UNAVAIL); new_state(sock,ss_connected); return; case ss_mod_fin_ok: diag(COMPONENT,DIAG_ERROR,"QOS commit failed"); send_kernel(sock->id,kptr_null,as_okay,0,NULL,NULL,NULL, NULL,NULL); /* @@@ clear call instead ? */ new_state(sock,ss_connected); return; case ss_mod_fin_fail: diag(COMPONENT,DIAG_ERROR,"QOS rollback failed"); send_kernel(sock->id,kptr_null,as_okay,sock->error,NULL, NULL,NULL,NULL,NULL); sock->error = 0; /* @@@ clear call instead ? */ new_state(sock,ss_connected); return; case ss_mod_fin_ack: /* @@@ maybe we should even clear the call now */ diag(COMPONENT,DIAG_ERROR,"QOS commit failed"); new_state(sock,ss_connected); return; default: return; /* ignore stray as_error */ } #endif #ifdef MULTIPOINT case as_dropparty: { int leaves; /* This should send a RELEASE if there is only * one party left on the call */ if (sock == NULL) { /* leaf was probably not found */ send_kernel(msg->vcc, kptr_null, as_dropparty, -1, NULL, NULL, NULL, NULL, NULL); return; } leaves = count_leaves(&sock->id); if ((sock->state == ss_connected) || (sock->state == ss_connecting)) { /* rely on short circuit boolean eval */ if ((leaves > 1) && (send_dropparty(sock) < 0)) { send_kernel(sock->id, kptr_null, as_error, 0, NULL, NULL, NULL, NULL, NULL); } else if (leaves > 1) { new_state(sock, ss_rel_req); } else if (leaves == 1) { send_release(sock, sock->sig->uni != S_UNI30 ? ATM_CV_NORMAL_CLEAR : ATM_CV_NORMAL_UNSPEC); } } else { send_kernel(sock->id, kptr_null, as_error, 0, NULL, NULL, NULL, NULL, NULL); } return; } case as_addparty: { int leafid = -1; SOCKET *ns = NULL; if (sock == NULL) { diag(COMPONENT, DIAG_INFO, "*sock is null. Not adding party."); } else { /* Create a new socket for keeping state information * that has the same "id" and call reference value * as *sock, but should have a different endpoint * reference. Need to make sure that all routines * that search for SOCKETS by id also compare endpoint * references */ ns = new_sock(msg->vcc); ns->call_ref = sock->call_ref; ns->local = msg->local; ns->remote = msg->svc; ns->qos = msg->qos; ns->sap = msg->sap; ns->state = ss_connecting; ns->pvc = msg->pvc; ns->sig = route_remote(&ns->remote); leafid = send_addparty(ns, &msg->svc); START_TIMER(ns,T399); } if (leafid > 0) { /* don't do anything here because we will notify * the kernel of success or failure after the * network responds with ATM_MSG_ADD_PARTY_ACK or * ATM_MSG_ADD_PARTY_REJ */ } else { /* notify kernel of failure because the addparty * request was never sent */ diag(COMPONENT, DIAG_INFO, "send_addparty failed"); send_kernel(ns->id, kptr_null, as_error, 0, NULL, NULL, NULL, NULL, NULL); } return; } #endif default: diag(COMPONENT,DIAG_WARN,"invalid message %d",(int) msg->type); return; } diag(COMPONENT,DIAG_WARN,"message %s is incompatible with state %s (%d)", as_name[msg->type],state_name[sock ? sock->state : ss_null], (int) (sock ? sock->state : ss_null)); } static void dispatch_listen(SOCKET *sock,struct atmsvc_msg *msg) { SOCKET *next; if (!sock) { diag(COMPONENT,DIAG_WARN,"message %s is incompatible with state %s " "(%d)",as_name[msg->type],state_name[ss_null],ss_null); return; } if (!(next = sock->listen)) { diag(COMPONENT,DIAG_WARN, "socket 0x%lx got accept/reject/identify with empty listen queue", msg->vcc); return; } sock->listen = next->listen; if (sock->state == ss_listen_zombie && !sock->listen) free_sock(sock); next->listen = NULL; next->id = msg->vcc; dispatch(next,msg); } void sync_addr(VPCI *vpci) { char buf[MAX_ATM_ADDR_LEN+1]; LOCAL_ADDR *walk; (void) get_addr(vpci->itf,vpci->local_addr); for (walk = vpci->local_addr; walk->state != ls_unused; walk++) { if (atm2text(buf,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) &walk->addr,pretty) < 0) strcpy(buf,""); switch (walk->state) { case ls_added: diag(COMPONENT,DIAG_INFO,"Added local ATM address %s at " "itf %d",buf,vpci->itf); walk->state = ls_same; break; case ls_removed: diag(COMPONENT,DIAG_INFO,"Removed local ATM address %s at " "itf %d",buf,vpci->itf); /* * walk->state = ls_unused; * * This is probably wrong. What if we delete an entry from the middle of * the list ? @@@ */ /* @@@ delete SVCs using that address ? */ break; default: break; } } } void from_kernel(struct atmsvc_msg *msg,int size) { void (*dispatcher)(SOCKET *,struct atmsvc_msg *); SOCKET *curr; if (msg->type == as_itf_notify) { itf_reload(msg->pvc.sap_addr.itf); return; } if (msg->type == as_terminate) { #if 0 /* need to pass some ID ... @@@ */ if (mode != sm_switch) { diag(COMPONENT,DIAG_ERROR,"Ignoring as_terminate received in %s " "mode",mode == sm_user ? "USER" : "NETWORK"); return; } clear_all_calls(sig); #endif stop = 1; diag(COMPONENT,DIAG_INFO,"Going down on as_terminate"); /* * Fix this - we need to shut it down more gracefully. */ return; } if (!kptr_eq(&msg->listen_vcc,&kptr_null) && (msg->type == as_accept || msg->type == as_reject || msg->type == as_identify)) { dispatcher = dispatch_listen; for (curr = sockets; curr; curr = curr->next) if (kptr_eq(&msg->listen_vcc,&curr->id) && (curr->state == ss_listening || curr->state == ss_listen_zombie)) break; } #ifdef MULTIPOINT else if (msg->type == as_dropparty) { /* check the endpoint reference while we search */ dispatcher = dispatch; for (curr = sockets; curr; curr = curr->next) { if (kptr_eq(&msg->vcc, &curr->id) && (curr->ep_ref == msg->reply)) break; } if (curr == NULL) diag(COMPONENT, DIAG_INFO, "leaf not found"); } #endif else { dispatcher = dispatch; for (curr = sockets; curr; curr = curr->next) if (kptr_eq(&msg->vcc,&curr->id)) break; } diag(COMPONENT,DIAG_DEBUG,"FROM KERNEL: %s for socket %p (%s/%s) " "in state %s",as_name[msg->type],curr,kptr_print(&msg->vcc), kptr_print(&msg->listen_vcc),state_name[curr ? curr->state : ss_null]); dispatcher(curr,msg); } linux-atm-2.5.1/src/sigd/mkmess.pl0000755000200100001440000000102007360675443015643 0ustar chasusers#!/usr/bin/perl while (<>) { next if !/ATM_CV_/; chop; chop($_ = $_.<>) unless /\*\//; s/\s+/ /g; /ATM_CV_\S+\s+(\d+)\s+\/\*\s*(.*\S)\s*\*\//; $map[$1] = $2; } print "/* THIS IS A MACHINE-GENERATED FILE. DO NOT EDIT ! */\n\n"; print "#if HAVE_CONFIG_H\n"; print "#include \n"; print "#endif\n\n"; print "const char *cause_text[] = {\n"; for ($i = 0; $i < 128; $i++) { print " \"".(defined $map[$i] ? $map[$i] : "unknown cause $i")."\"". ($i == 127 ? "\n" : ",\n"); } print "};\n"; linux-atm-2.5.1/src/sigd/policy.c0000644000200100001440000000245207360675443015461 0ustar chasusers/* policy.c - Access control policies */ /* Written 1997,1998 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include "proto.h" /* for "pretty" */ #include "policy.h" #define COMPONENT "POLICY" static RULE *rules = NULL; static RULE **next = &rules; void add_rule(RULE *rule) { rule->hits = 0; rule->next = NULL; *next = rule; next = &rule->next; } int allow(const struct sockaddr_atmsvc *addr,int direction) { RULE *rule; char buffer[MAX_ATM_ADDR_LEN+1]; int count; if ((direction & (ACL_IN | ACL_OUT)) == (ACL_IN | ACL_OUT)) diag(COMPONENT,DIAG_ERROR,"allow: ACL_IN && ACL_OUT"); count = 0; for (rule = rules; rule; rule = rule->next) { count++; if (!(rule->type & direction)) continue; if (!atm_equal((struct sockaddr *) addr, (struct sockaddr *) &rule->addr,rule->mask,AXE_PRVOPT | (rule->mask == -1 ? 0 : AXE_WILDCARD))) continue; rule->hits++; if (atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) addr, pretty) < 0) strcpy(buffer,""); diag(COMPONENT,DIAG_DEBUG,"Rule %d: %s call %s %s",count, rule->type & ACL_ALLOW ? "allowed" : "rejected", direction & ACL_IN ? "from" : "to",buffer); return rule->type & ACL_ALLOW; } return 1; } linux-atm-2.5.1/src/sigd/policy.h0000644000200100001440000000071207360675443015463 0ustar chasusers/* policy.h - Access control policies */ /* Written 1997 by Werner Almesberger, EPFL-LRC */ #ifndef POLICY_H #define POLICY_H #define ACL_ALLOW 1 #define ACL_REJECT 2 #define ACL_IN 4 #define ACL_OUT 8 typedef struct _rule { int type; struct sockaddr_atmsvc addr; int mask; /* -1 for none */ int hits; struct _rule *next; } RULE; void add_rule(RULE *rule); int allow(const struct sockaddr_atmsvc *addr,int direction); #endif linux-atm-2.5.1/src/sigd/proto.c0000644000200100001440000003360310203711252015302 0ustar chasusers/* proto.c - Common protocol functions and structures */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "atmd.h" #include "uni.h" #include "qlib.h" #include #include "io.h" #include "proto.h" #include "sap.h" #define COMPONENT "SIGD" const char *state_name[] = { /* formatting aligned with STATE */ "", "ss_null", "ss_listening", "ss_connecting", "ss_connected", "ss_indicated", "ss_accepting", "ss_zombie", "ss_wait_rel", "ss_wait_close","ss_rel_req", "ss_rel_ind", "ss_proceeding","ss_listen_zombie", "ss_mod_lcl", "ss_mod_req", "ss_mod_rcv", "ss_mod_fin_ack", "ss_mod_fin_ok","ss_mod_fin_fail" }; const char *cs_name[] = { "NULL", "CALL_INIT", "", "OUT_PROC", "", "", "CALL_PRES", "", "CONN_REQ", "IN_PROC", "ACTIVE", "REL_REQ", "REL_IND", "MOD_REQ", "MOD_RCV" }; const char *as_name[] = { "","as_bind","as_connect","as_accept", "as_reject","as_listen","as_okay","as_error","as_indicate","as_close", "as_itf_notify","as_modify","as_identify","as_terminate", #ifdef MULTPOINT "as_addparty", "as_dropparty", #endif }; const CALL_STATE state_map[] = { /* formatting aligned with STATE */ cs_null, cs_null, cs_null, cs_call_init, cs_active, cs_in_proc, cs_conn_req, cs_null, cs_rel_req, cs_null, cs_rel_req, cs_rel_ind, cs_in_proc, cs_null, #ifdef Q2963_1 cs_active, cs_mod_req, cs_mod_rcv, cs_active, cs_active, cs_active #endif }; const PARTY_STATE eps_map[] = { ps_null, ps_add_init, ps_null, ps_add_init, /* 0 */ ps_null, ps_null, ps_add_recv, ps_null, /* 4 */ ps_active, ps_add_recv, ps_active, ps_active, /* 8 */ ps_active }; /*12 */ atm_kptr_t kptr_null; SIG_ENTITY *entities = &_entity; SOCKET *sockets = NULL; unsigned char q_buffer[MAX_Q_MSG]; SOCKET *new_sock(atm_kptr_t id) { SOCKET *sock; sock = alloc_t(SOCKET); sock->sig = NULL; sock->state = ss_invalid; memset(&sock->pvc,0,sizeof(sock->pvc)); sock->qos.txtp.traffic_class = sock->qos.rxtp.traffic_class = ATM_UBR; #if defined(Q2963_1) || defined(DYNAMIC_UNI) memset(&sock->new_qos, 0, sizeof(sock->new_qos)); sock->owner = 0; #endif sock->id = id; memset(&sock->local,0,sizeof(sock->local)); memset(&sock->remote,0,sizeof(sock->remote)); memset(&sock->sap,0,sizeof(sock->sap)); sock->error = 0; sock->call_state = cs_null; sock->ep_ref = -1; sock->conn_timer = NULL; sock->listen = NULL; sock->next = sockets; sockets = sock; return sock; } void free_sock(SOCKET *sock) { SOCKET **walk; diag(COMPONENT,DIAG_DEBUG,"freeing socket %s@%p", kptr_print(&sock->id),sock); for (walk = &sockets; *walk != sock; walk = &(*walk)->next); if (!*walk) diag(COMPONENT,DIAG_FATAL, "INTERNAL ERROR: freeing non-existing socket %s", kptr_print(&sock->id)); *walk = sock->next; if (sock->conn_timer) { diag(COMPONENT,DIAG_ERROR,"socket %s has timer (%p) running", kptr_print(&sock->id),sock->conn_timer->callback); stop_timer(sock->conn_timer); } if (sock->listen) diag(COMPONENT,DIAG_ERROR,"socket %s has non-empty listen queue", kptr_print(&sock->id)); sock->state = ss_invalid; free(sock); } #ifdef MULTIPOINT /* don't call free_sock() after free_leaves() -- this function frees the * root node as well */ void free_leaves(atm_kptr_t *id) { SOCKET **walk = &sockets, *target = NULL; while (*walk != NULL) { target = *walk; walk = &((*walk)->next); if (kptr_eq(&target->id, id)) { diag(COMPONENT, DIAG_INFO, "freeing leaf %s:%d", kptr_print(&target->id), target->ep_ref); free_sock(target); } } } int count_leaves(atm_kptr_t *id) { SOCKET *walk = sockets; int count = 0; if (walk) for (; walk; walk = walk->next) if(kptr_eq(&walk->id, id)) count++; return count; } #endif void new_state(SOCKET *sock,STATE state) { diag(COMPONENT,DIAG_DEBUG,"socket %s enters state %s (UNI %s)", kptr_print(&sock->id),state_name[state],cs_name[state_map[state]]); sock->state = state; sock->call_state = state_map[state]; } SOCKET *lookup_sap(const struct sockaddr_atmsvc *addr, const struct atm_sap *sap,const struct atm_qos *qos, struct sockaddr_atmsvc *res_addr,struct atm_sap *res_sap, struct atm_qos *res_qos,int exact_match) { SOCKET *walk,*wildcard; int new_wc; new_wc = !atmsvc_addr_in_use(*addr); wildcard = NULL; for (walk = sockets; walk; walk = walk->next) { if (walk->state != ss_listening || !sap_compat(&walk->local, addr,res_addr,&walk->sap,sap,res_sap,&walk->qos,qos,res_qos)) continue; if (atmsvc_addr_in_use(walk->local)) return walk; else if (exact_match) { if (new_wc) return walk; } else wildcard = walk; } return wildcard; } const char *mid2name(unsigned char mid) { switch (mid) { case ATM_MSG_NATIONAL: return "National specific message escape"; case ATM_MSG_SETUP: return "SETUP"; case ATM_MSG_ALERTING: return "ALERTING"; case ATM_MSG_CALL_PROC: return "CALL_PROCEEDING"; case ATM_MSG_CONNECT: return "CONNECT"; case ATM_MSG_CONN_ACK: return "CONNECT_ACK"; case ATM_MSG_RESTART: return "RESTART"; case ATM_MSG_RELEASE: return "RELEASE"; case ATM_MSG_REST_ACK: return "REST_ACK"; case ATM_MSG_REL_COMP: return "REL_COMP"; case ATM_MSG_NOTIFY: return "NOTIFY"; case ATM_MSG_STATUS_ENQ: return "STATUS_ENQ"; case ATM_MSG_STATUS: return "STATUS"; case ATM_MSG_ADD_PARTY: return "ADD_PARTY"; case ATM_MSG_ADD_PARTY_ACK: return "ADD_PARTY_ACK"; case ATM_MSG_ADD_PARTY_REJ: return "ADD_PARTY_REJECT"; case ATM_MSG_PARTY_ALERT: return "PARTY_ALERTING"; case ATM_MSG_DROP_PARTY: return "DROP_PARTY"; case ATM_MSG_DROP_PARTY_ACK: return "DROP_PARTY_ACK"; case ATM_MSG_MODIFY_REQ: return "MODIFY_REQUEST"; case ATM_MSG_MODIFY_ACK: return "MODIFY_ACK"; case ATM_MSG_MODIFY_REJ: return "MODIFY_REJECT"; case ATM_MSG_CONN_AVAIL: return "CONN_AVAIL"; case ATM_MSG_LEAF_FAILURE: return "LEAF SETUP FAIL"; case ATM_MSG_LEAF_REQUEST: return "LEAF SETUP REQ"; case ATM_MSG_RESERVED: return "Reserved..."; default: return "???"; } } void send_kernel(atm_kptr_t vcc,atm_kptr_t listen_vcc, enum atmsvc_msg_type type,int reply,const struct sockaddr_atmpvc *pvc, const struct sockaddr_atmsvc *svc,const struct sockaddr_atmsvc *local, const struct atm_sap *sap,const struct atm_qos *qos) { struct atmsvc_msg *msg; msg = alloc_t(struct atmsvc_msg); msg->vcc = vcc; msg->listen_vcc = listen_vcc; msg->type = type; msg->reply = reply; if (pvc) msg->pvc = *pvc; else memset(&msg->pvc,0,sizeof(msg->pvc)); if (sap) msg->sap = *sap; else memset(&msg->sap,0,sizeof(msg->sap)); if (qos) msg->qos = *qos; else memset(&msg->qos,0,sizeof(msg->qos)); if (local) msg->local = *local; else memset(&msg->local,0,sizeof(msg->local)); if (svc) msg->svc = *svc; else memset(&msg->svc,0,sizeof(msg->svc)); to_kernel(msg); free(msg); } void send_release(SOCKET *sock,unsigned char reason,...) { va_list ap; Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_RELEASE); q_assign(&dsc,QF_call_ref,sock->call_ref); q_assign(&dsc,QF_cause,reason); va_start(ap,reason); switch (reason) { case ATM_CV_TIMER_EXP: { char buf[4]; sprintf(buf,"%d",va_arg(ap,int)); q_write(&dsc,QF_timer,buf,3); break; } } va_end(ap); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); } void send_release_complete(SIG_ENTITY *sig,unsigned long call_ref, unsigned char cause,...) { va_list ap; Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_REL_COMP); q_assign(&dsc,QF_call_ref,call_ref); if (cause) { q_assign(&dsc,QF_cause,cause); va_start(ap,cause); switch (cause) { case ATM_CV_INVALID_IE: { unsigned char ie; ie = va_arg(ap,int); q_write(&dsc,QF_ie_id6,&ie,1); } break; } va_end(ap); } if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); } void send_modify_reject(SOCKET *sock,unsigned char reason) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_MODIFY_REJ); q_assign(&dsc,QF_call_ref,sock->call_ref); q_assign(&dsc,QF_cause,reason); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); } void set_error(SOCKET *sock,int code) { if (!sock->error) sock->error = code; } void send_close(SOCKET *sock) { if (sock->error == 1234) diag(COMPONENT,DIAG_FATAL,"BUG! BUG! BUG!"); send_kernel(sock->id,kptr_null,as_close,sock->error,NULL,NULL,NULL,NULL, NULL); sock->error = 1234; } void q_report(int severity,const char *msg,...) { va_list ap; va_start(ap,msg); vdiag("QMSG",severity,msg,ap); va_end(ap); } int get_vci(int itf) { SOCKET *walk; int s,vci; s = get_pvc(itf,&vci); if (s < 0) return s; for (walk = sockets; walk; walk = walk->next) if (walk->pvc.sap_addr.itf == itf && walk->pvc.sap_addr.vci == vci) { vci = get_vci(itf); /* this recursion will keep all the busy ones open until we return */ break; } (void) close(s); return vci; } void enter_vpci(SIG_ENTITY *sig,int vpci,int itf) { VPCI *entry; for (entry = sig->vpcis; entry; entry = entry->next) if (entry->vpci == vpci) { diag(COMPONENT,DIAG_ERROR,"ignoring duplicate VPCI %d (itf %d)", vpci,itf); return; } entry = alloc_t(VPCI); entry->vpci = vpci; entry->itf = itf; entry->local_addr[0].state = ls_unused; entry->next = sig->vpcis; sig->vpcis = entry; } void set_vpi_0(SIG_ENTITY *sig) { VPCI *vpci; for (vpci = sig->vpcis; vpci; vpci = vpci->next) if (!vpci->vpci) return; enter_vpci(sig,0,sig->signaling_pvc.sap_addr.itf); } int get_itf(SIG_ENTITY *sig,int *vpci) { VPCI *best,*walk; best = NULL; for (walk = sig->vpcis; walk; walk = walk->next) if (walk->vpci <= *vpci && (!best || best->vpci < walk->vpci)) best = walk; if (!best) return sig->signaling_pvc.sap_addr.itf; *vpci -= best->vpci; return best->itf; } void init_addr(SIG_ENTITY *sig) { VPCI *vpci; for (vpci = sig->vpcis; vpci; vpci = vpci->next) sync_addr(vpci); } void itf_reload(int itf) { SIG_ENTITY *sig; VPCI *vpci; for (sig = entities; sig; sig = sig->next) for (vpci = sig->vpcis; vpci; vpci = vpci->next) if (vpci->itf == itf) sync_addr(vpci); } static struct sockaddr_atmsvc *do_get_local(SIG_ENTITY *sig) { VPCI *vpci; LOCAL_ADDR *local; for (vpci = sig->vpcis; vpci; vpci = vpci->next) for (local = vpci->local_addr; local->state != ls_unused; local++) if (local->state == ls_same && atmsvc_addr_in_use(local->addr)) return &local->addr; return NULL; } struct sockaddr_atmsvc *get_local(SIG_ENTITY *sig) { SIG_ENTITY *entity; struct sockaddr_atmsvc *local; if (sig) return do_get_local(sig); for (entity = entities; entity; entity = entity->next) { local = do_get_local(entity); if (local) return local; } return NULL; } /* * The following code is stolen from switch/route.c. Eventually, all this * should move into a library. */ #include typedef struct _route { struct sockaddr_atmsvc addr; int len; SIG_ENTITY *sig; struct _route *next; } ROUTE; static ROUTE *routes = NULL; void add_route(SIG_ENTITY *sig,struct sockaddr_atmsvc *addr,int len) { ROUTE *route; for (route = routes; route; route = route->next) if (route->len == len && (!len || atm_equal((struct sockaddr *) addr, (struct sockaddr *) &route->addr,len, AXE_PRVOPT | (len == INT_MAX ? 0 : AXE_WILDCARD)))) diag(COMPONENT,DIAG_FATAL,"duplicate route"); route = alloc_t(ROUTE); if (addr) route->addr = *addr; route->len = len; route->sig = sig; route->next = routes; routes = route; } SIG_ENTITY *route_remote(struct sockaddr_atmsvc *addr) { ROUTE *best,*route; int best_len; if (!routes) return entities; best = NULL; best_len = -1; for (route = routes; route; route = route->next) if (route->len > best_len && (!route->len || atm_equal((struct sockaddr *) addr,(struct sockaddr *) &route->addr, route->len, AXE_PRVOPT | (route->len == INT_MAX ? 0 : AXE_WILDCARD)))) { if (route->len == INT_MAX) return route->sig; best_len = route->len; best = route; } return best ? best->sig : NULL; } SIG_ENTITY *route_local(struct sockaddr_atmsvc *addr) { SIG_ENTITY *sig; VPCI *vpci; LOCAL_ADDR *walk; /* * @@@ This is quite close to the truth but still not entirely correct: * the actual result should be the VPCI to use. While this is irrelevant * when the connection identifier is assigned by the peer, the VPI * selection should be based on the VPCI we find here if it's atmsigd who * assigns the connection identifier. The bottom line is that VPI > 0 plus * connection identifier assignment by atmsigd doesn't work yet. */ for (sig = entities; sig; sig = sig->next) for (vpci = sig->vpcis; vpci; vpci = vpci->next) for (walk = vpci->local_addr; walk->state != ls_unused; walk++) if (walk->state == ls_same && atm_equal((struct sockaddr *) &walk->addr,(struct sockaddr *) addr,(ATM_ESA_LEN-1)*8, AXE_WILDCARD)) return sig; return NULL; } int get_max_rate(SIG_ENTITY *sig) { VPCI *vpci; int max; if (sig->mode == sm_switch) return 0; /* switches don't use ATM_MAX_PCR */ max = 0; for (vpci = sig->vpcis; vpci; vpci = vpci->next) { int curr; curr = get_link_rate(vpci->itf); if (curr > max) max = curr; } return max; } linux-atm-2.5.1/src/sigd/proto.h0000644000200100001440000001345510203711252015312 0ustar chasusers/* proto.h - Common protocol functions and structures */ /* Written 1995-1999 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef PROTO_H #define PROTO_H #include #include #include "atmsap.h" #include "atmd.h" #include "saal.h" #ifdef MULTIPOINT typedef enum { p2p, p2mp } CALL_TYPE; #endif typedef enum { /* formatting aligned with state_map and others */ ss_invalid, ss_null, ss_listening, ss_connecting, ss_connected, ss_indicated, ss_accepting, ss_zombie, ss_wait_rel, ss_wait_close, ss_rel_req, ss_rel_ind, ss_proceeding, ss_listen_zombie, #if defined(Q2963_1) || defined(DYNAMIC_UNI) ss_mod_lcl, ss_mod_req, ss_mod_rcv, ss_mod_fin_ack, ss_mod_fin_ok, ss_mod_fin_fail #endif } STATE; typedef enum { cs_null,cs_call_init,cs_out_proc = 3,cs_conn_req = 8, cs_in_proc,cs_active,cs_rel_req,cs_rel_ind, #if defined(Q2963_1) || defined (DYNAMIC_UNI) cs_mod_req,cs_mod_rcv #endif } CALL_STATE; typedef enum { ps_null,ps_add_init,ps_add_recv = 6,ps_drop_init = 11, ps_drop_recv,ps_active = 10 } PARTY_STATE; #define S_UNI30 1 /* UNI 3.0 or ALLOW_UNI30 */ #define S_UNI31 2 /* UNI 3.1 or ALLOW_UNI30 */ #define S_UNI40 4 /* UNI 4.0 */ #define S_Q2963_1 8 /* UNI 4.0 plus Q.2963.1 */ typedef enum { sm_unknown,sm_user,sm_net,sm_switch } SIGNALING_MODE; typedef struct { enum { ls_unused,ls_added,ls_removed,ls_same } state; struct sockaddr_atmsvc addr; } LOCAL_ADDR; #define MAX_LOCAL_ADDRS 32 typedef struct _vpci { int vpci; int itf; // struct _sig_entity *sig; /* back pointer */ LOCAL_ADDR local_addr[MAX_LOCAL_ADDRS+1]; struct _vpci *next; } VPCI; typedef struct _sig_entity { int signaling; /* fd */ int uni; SIGNALING_MODE mode; int sig_pcr; /* @@@ remove soon */ const char *sig_qos; int max_rate; struct sockaddr_atmpvc signaling_pvc; SAAL_DSC saal; VPCI *vpcis; struct _sig_entity *next; } SIG_ENTITY; typedef struct _socket { STATE state; SIG_ENTITY *sig; struct sockaddr_atmpvc pvc; /* --- socket layer information ---------------------------------------- */ atm_kptr_t id; struct sockaddr_atmsvc local; /* local address */ struct sockaddr_atmsvc remote; /* remote address */ #ifdef MULTIPOINT CALL_TYPE ct; #endif struct atm_sap sap; /* SAP (BHLI and BLLI) */ struct atm_qos qos; /* QOS parameters */ #if defined(Q2963_1) || defined(DYNAMIC_UNI) struct atm_qos new_qos; /* during modification */ int owner; /* non-zero if connection owner */ #endif int error; /* error code for close */ /* --- UNI information ------------------------------------------------- */ CALL_STATE call_state; unsigned long call_ref; /* bit 24 like when sending */ int ep_ref; /* endpoint reference value when sending ; -1 for p2p */ TIMER *conn_timer; /* current connection timer */ /* --- some meta-information ------------------------------------------- */ struct _socket *listen; /* to pending connections, also used for "more" */ struct _socket *next; /* next socket */ } SOCKET; extern SOCKET *sockets; /* * SOCKET uses a horrible linked list structure. Lists should be at least * doubly-linked and there should be a few hashes (by id and by call_ref) for * reasonable fast lookup. All this will have to wait till that version is * stable enough to be useful to test the "real" thing against it. */ extern atm_kptr_t kptr_null; #define S_PVC(e) \ (e)->signaling_pvc.sap_addr.itf, \ (e)->signaling_pvc.sap_addr.vpi, \ (e)->signaling_pvc.sap_addr.vci extern SIG_ENTITY *entities; extern SIG_ENTITY _entity; extern const CALL_STATE state_map[]; extern const PARTY_STATE eps_map[]; extern const char *state_name[],*cs_name[],*as_name[]; extern unsigned char q_buffer[]; #define DEFAULT_TRACE_SIZE 20 #define DEFAULT_DUMP_DIR "/var/tmp" extern int pretty; extern const char *dump_dir; extern int stop; #define SEND_ERROR(vcc,code) \ send_kernel(vcc,kptr_null,as_error,code,NULL,NULL,NULL,NULL,NULL) void poll_signals(void); void from_kernel(struct atmsvc_msg *msg,int size); void sync_addr(VPCI *vpci); void to_uni(SIG_ENTITY *sig,void *msg,int size); void send_kernel(atm_kptr_t vcc,atm_kptr_t listen_vcc, enum atmsvc_msg_type type,int reply,const struct sockaddr_atmpvc *pvc, const struct sockaddr_atmsvc *svc,const struct sockaddr_atmsvc *local, const struct atm_sap *sap,const struct atm_qos *qos); void from_net(SIG_ENTITY *sig,void *msg,int size); void to_signaling(SIG_ENTITY *sig,void *msg,int size); void saal_failure(SIG_ENTITY *sig); void saal_okay(SIG_ENTITY *sig); void clear_all_calls(SIG_ENTITY *sig); void clear_all_calls_on_T309(SIG_ENTITY *sig); SOCKET *new_sock(atm_kptr_t id); void free_sock(SOCKET *sock); void free_leaves(atm_kptr_t *id); int count_leaves(atm_kptr_t *id); void new_state(SOCKET *sock,STATE state); SOCKET *lookup_sap(const struct sockaddr_atmsvc *addr, const struct atm_sap *sap,const struct atm_qos *qos, struct sockaddr_atmsvc *res_addr,struct atm_sap *res_sap, struct atm_qos *res_qos,int exact_match); void send_release(SOCKET *sock,unsigned char reason,...); void send_release_complete(SIG_ENTITY *sig,unsigned long call_ref, unsigned char cause,...); int send_call_proceeding(SOCKET *sock); void send_modify_reject(SOCKET *sock,unsigned char reason); const char *mid2name(unsigned char mid); void set_error(SOCKET *sock,int code); void send_close(SOCKET *sock); int get_vci(int itf); void enter_vpci(SIG_ENTITY *sig,int vpci,int itf); void set_vpi_0(SIG_ENTITY *sig); int get_itf(SIG_ENTITY *sig,int *vpci); void init_addr(SIG_ENTITY *sig); void itf_reload(int itf); struct sockaddr_atmsvc *get_local(SIG_ENTITY *sig); void add_route(SIG_ENTITY *sig,struct sockaddr_atmsvc *addr,int len); SIG_ENTITY *route_remote(struct sockaddr_atmsvc *addr); SIG_ENTITY *route_local(struct sockaddr_atmsvc *addr); int get_max_rate(SIG_ENTITY *sig); #endif linux-atm-2.5.1/src/sigd/sap.c0000644000200100001440000002721011235645151014731 0ustar chasusers/* sap.c - SAP manipulations */ /* Written 1996-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "atmd.h" #include "uni.h" #include "qlib.h" #include #include "proto.h" #include "sap.h" #define COMPONENT "SAP" static int class_compat(const struct atm_trafprm *tx, const struct atm_trafprm *rx) { if (tx->traffic_class == ATM_NONE || tx->traffic_class == ATM_ANYCLASS) return 1; if (rx->traffic_class == ATM_UBR || rx->traffic_class == ATM_ANYCLASS) return 1; /* don't apply CAC to PCR */ if (tx->traffic_class != rx->traffic_class) return 0; /* ignore special cases like CBR to VBR for now */ switch (tx->traffic_class) { case ATM_CBR: if (!rx->max_pcr || rx->max_pcr == ATM_MAX_PCR) return 1; return tx->min_pcr <= rx->max_pcr; /* Actually, we shouldn't look at min_pcr, because there's no bandwidth negotiation anyway. */ default: diag(COMPONENT,DIAG_ERROR,"unsupported traffic class %d\n", tx->traffic_class); return 0; } } int sap_compat(const struct sockaddr_atmsvc *old_addr, const struct sockaddr_atmsvc *new_addr,struct sockaddr_atmsvc *res_addr, const struct atm_sap *old_sap,const struct atm_sap *new_sap, struct atm_sap *res_sap,const struct atm_qos *old_qos, const struct atm_qos *new_qos,struct atm_qos *res_qos) { if (atmsvc_addr_in_use(*old_addr) && !atm_equal((struct sockaddr *) old_addr,(struct sockaddr *) new_addr,0,0)) return 0; if (res_qos) *res_qos = *new_qos; if (old_qos->txtp.max_sdu && new_qos->txtp.max_sdu && old_qos->txtp.max_sdu > new_qos->txtp.max_sdu) return 0; if (new_qos->rxtp.max_sdu && old_qos->rxtp.max_sdu && new_qos->rxtp.max_sdu > old_qos->rxtp.max_sdu) return 0; if (!class_compat(&old_qos->rxtp,&new_qos->rxtp) || !class_compat(&new_qos->txtp,&old_qos->txtp)) return 0; if (!sap_equal(old_sap,new_sap, SXE_COMPATIBLE | SXE_NEGOTIATION | (res_sap ? SXE_RESULT : 0),res_sap)) return 0; return 1; } static int encode_blli(Q_DSC *dsc,const struct atm_blli *blli) { if (blli->l2_proto != ATM_L2_NONE) { q_assign(dsc,QF_uil2_proto,blli->l2_proto); switch (blli->l2_proto) { case ATM_L2_X25_LL: case ATM_L2_X25_ML: case ATM_L2_HDLC_ARM: case ATM_L2_HDLC_NRM: case ATM_L2_HDLC_ABM: case ATM_L2_Q922: case ATM_L2_ISO7776: if (blli->l2.itu.mode != ATM_IMD_NONE) q_assign(dsc,QF_l2_mode,blli->l2.itu.mode); if (blli->l2.itu.window) q_assign(dsc,QF_window_size,blli->l2.itu.window); break; case ATM_L2_USER: q_assign(dsc,QF_user_l2,blli->l2.user); break; default: break; } } if (blli->l3_proto != ATM_L3_NONE) { q_assign(dsc,QF_uil3_proto,blli->l3_proto); switch (blli->l3_proto) { case ATM_L3_X25: case ATM_L3_ISO8208: case ATM_L3_X223: if (blli->l3.itu.mode != ATM_IMD_NONE) q_assign(dsc,QF_l3_mode,blli->l3.itu.mode); if (blli->l3.itu.def_size) q_assign(dsc,QF_def_pck_size,blli->l3.itu.def_size); if (blli->l3.itu.window) q_assign(dsc,QF_pck_win_size,blli->l3.itu.window); break; case ATM_L3_TR9577: q_assign(dsc,QF_ipi_high,blli->l3.tr9577.ipi >> 1); q_assign(dsc,QF_ipi_low,blli->l3.tr9577.ipi & 1); if (blli->l3.tr9577.ipi == NLPID_IEEE802_1_SNAP) { q_write(dsc,QF_oui,blli->l3.tr9577.snap,3); q_write(dsc,QF_pid,blli->l3.tr9577.snap+3,2); } break; case ATM_L3_USER: q_assign(dsc,QF_user_l3,blli->l3.user); break; default: diag(COMPONENT,DIAG_ERROR,"bad l3_proto (%d)", blli->l3_proto); return -EINVAL; } } return 0; } int sap_encode(Q_DSC *dsc,const struct sockaddr_atmsvc *addr, const struct atm_sap *sap,const struct atm_qos *qos,int uni,int max_rate) { int error,pcr; if (*addr->sas_addr.pub) q_write(dsc,QF_cdpn_e164,(void *) addr->sas_addr.pub, strlen(addr->sas_addr.pub)); else if (*addr->sas_addr.prv) q_write(dsc,QF_cdpn_esa,(void *) addr->sas_addr.prv,ATM_ESA_LEN); else return -EDESTADDRREQ; if (qos) { if (qos->txtp.traffic_class == ATM_UBR || qos->rxtp.traffic_class == ATM_UBR) { q_assign(dsc,QF_best_effort,0); #if defined(UNI30) || defined(ALLOW_UNI30) || defined(DYNAMIC_UNI) if (uni & S_UNI30) q_assign(dsc,QF_trans_cap,ATM_TC_VBR_NRT_R00); /* force presence - UNI 3.0 wants this */ #endif } if (qos->txtp.traffic_class == ATM_CBR || qos->rxtp.traffic_class == ATM_CBR) q_assign(dsc,QF_trans_cap,ATM_TC_CBR); switch (qos->txtp.traffic_class) { case ATM_NONE: q_assign(dsc,QF_fw_pcr_01,0); break; case ATM_UBR: /* fall through */ case ATM_CBR: /* here's a bit of policy: send the highest value we have */ pcr = SELECT_TOP_PCR(qos->txtp); diag(COMPONENT,DIAG_DEBUG,"fwd %d (%d..%d)",pcr, qos->txtp.min_pcr,qos->txtp.max_pcr); if (pcr == ATM_MAX_PCR) pcr = max_rate; q_assign(dsc,QF_fw_pcr_01,pcr); break; default: diag(COMPONENT,DIAG_ERROR,"bad TX class (%d)", qos->txtp.traffic_class); return -EINVAL; } switch (qos->rxtp.traffic_class) { case ATM_NONE: q_assign(dsc,QF_bw_pcr_01,0); break; case ATM_UBR: /* fall through */ case ATM_CBR: pcr = SELECT_TOP_PCR(qos->rxtp); diag(COMPONENT,DIAG_DEBUG,"bwd %d (%d..%d)",pcr, qos->rxtp.min_pcr,qos->rxtp.max_pcr); if (pcr == ATM_MAX_PCR) pcr = max_rate; q_assign(dsc,QF_bw_pcr_01,pcr); break; default: diag(COMPONENT,DIAG_ERROR,"bad RX class (%d)", qos->rxtp.traffic_class); return -EINVAL; } if (qos->txtp.max_sdu || qos->rxtp.max_sdu) { q_assign(dsc,QF_fw_max_sdu,qos->txtp.max_sdu); q_assign(dsc,QF_bw_max_sdu,qos->rxtp.max_sdu); } } /* @@@ bearer class ? */ /* @@@ QOS class ? */ if (sap->bhli.hl_type != ATM_HL_NONE) { q_assign(dsc,QF_hli_type,sap->bhli.hl_type-1); switch (sap->bhli.hl_type) { case ATM_HL_ISO: q_write(dsc,QF_iso_hli,sap->bhli.hl_info,sap->bhli.hl_length); break; case ATM_HL_USER: q_write(dsc,QF_user_hli,sap->bhli.hl_info,sap->bhli.hl_length); break; #if defined(UNI30) || defined(DYNAMIC_UNI) case ATM_HL_HLP: if (!(uni & S_UNI30)) return -EINVAL; q_write(dsc,QF_hlp,sap->bhli.hl_info,4); break; #endif case ATM_HL_VENDOR: q_write(dsc,QF_hli_oui,sap->bhli.hl_info,3); q_write(dsc,QF_app_id, sap->bhli.hl_info+3,4); break; default: diag(COMPONENT,DIAG_ERROR,"bad hl_type (%d)", sap->bhli.hl_type); return -EINVAL; } } if (!blli_in_use(sap->blli[0])) return 0; q_instance(dsc,QG_blli1); error = encode_blli(dsc,sap->blli); if (error) return 0; if (!blli_in_use(sap->blli[1])) return 0; q_instance(dsc,QG_blli2); error = encode_blli(dsc,sap->blli+1); if (error) return 0; if (!blli_in_use(sap->blli[2])) return 1; q_instance(dsc,QG_blli3); return encode_blli(dsc,sap->blli+2); } static void decode_blli(Q_DSC *dsc,struct atm_blli *blli) { #define GET(var,field) \ ({ if (q_present(dsc,field)) blli->var = q_fetch(dsc,field); }) if (q_present(dsc,QF_uil2_proto)) { blli->l2_proto = q_fetch(dsc,QF_uil2_proto); GET(l2.itu.mode,QF_l2_mode); GET(l2.itu.window,QF_window_size); GET(l2.user,QF_user_l2); } if (q_present(dsc,QF_uil3_proto)) { blli->l3_proto = q_fetch(dsc,QF_uil3_proto); GET(l3.itu.mode,QF_l3_mode); GET(l3.itu.def_size,QF_def_pck_size); GET(l3.itu.window,QF_pck_win_size); GET(l3.user,QF_user_l3); if (q_present(dsc,QF_ipi_high)) { blli->l3.tr9577.ipi = q_fetch(dsc,QF_ipi_high) << 1; if (blli->l3.tr9577.ipi != NLPID_IEEE802_1_SNAP) blli->l3.tr9577.ipi |= q_fetch(dsc,QF_ipi_low); else if (!q_present(dsc,QF_oui)) blli->l3.tr9577.ipi |= 1; else { q_read(dsc,QF_oui,blli->l3.tr9577.snap,3); q_read(dsc,QF_pid,blli->l3.tr9577.snap+3,2); } } } #undef GET } /* * NOTE: the incoming call sap is converted to a "local view" * in preparation for use by a local socket. Therefore, the * forward values are assigned to atm_qos->rxtp and the * backward values are assigned to atm_qos->txtp. This has * implications later for sap_compat() when we compare the * forward/backward parameters. */ unsigned int sap_decode(Q_DSC *dsc,struct sockaddr_atmsvc *addr, struct atm_sap *sap,struct atm_qos *qos,int uni) { memset(addr,0,sizeof(*addr)); memset(sap,0,sizeof(*sap)); memset(qos,0,sizeof(*qos)); addr->sas_family = AF_ATMSVC; if (q_present(dsc,QF_cdpn_e164)) (void) q_read(dsc,QF_cdpn_e164,(void *) &addr->sas_addr.pub, ATM_E164_LEN); else if (q_present(dsc,QF_cdpn_esa)) (void) q_read(dsc,QF_cdpn_esa,(void *) &addr->sas_addr.prv, ATM_ESA_LEN); qos->aal = ATM_AAL5; /* default and only choice */ if (q_present(dsc,QF_aal_type)) if (q_fetch(dsc,QF_aal_type) != 5) { diag(COMPONENT,DIAG_ERROR,"AAL type %d requested", q_fetch(dsc,QF_aal_type)); #ifdef DYNAMIC_UNI return IE_PROBLEM( uni & S_UNI30 ? ATM_CV_AAL_UNSUPP_OLD : ATM_CV_AAL_UNSUPP_NEW,0); #else #ifdef UNI30 return IE_PROBLEM(ATM_CV_AAL_UNSUPP_OLD,0); #else return IE_PROBLEM(ATM_CV_AAL_UNSUPP_NEW,0); #endif /* UNI30 */ #endif /* DYNAMIC_UNI */ } if (q_present(dsc,QF_best_effort)) { qos->txtp.traffic_class = qos->rxtp.traffic_class = ATM_UBR; diag(COMPONENT,DIAG_DEBUG,"UBR"); } else { qos->txtp.traffic_class = qos->rxtp.traffic_class = ATM_CBR; diag(COMPONENT,DIAG_DEBUG,"CBR"); } qos->txtp.max_pcr = qos->rxtp.max_pcr = 0; /* unbalanced decoding - always sets upper bound */ if (q_present(dsc,QF_fw_pcr_01)) { qos->rxtp.min_pcr = 0; qos->rxtp.max_pcr = q_fetch(dsc,QF_fw_pcr_01); } if (q_present(dsc,QF_bw_pcr_01)) { qos->txtp.min_pcr = 0; qos->txtp.max_pcr = q_fetch(dsc,QF_bw_pcr_01); } if (!qos->txtp.max_pcr) qos->txtp.traffic_class = ATM_NONE; if (!qos->rxtp.max_pcr) qos->rxtp.traffic_class = ATM_NONE; diag(COMPONENT,DIAG_DEBUG,"fwd %d..%d bwd %d..%d", qos->rxtp.min_pcr,qos->rxtp.max_pcr,qos->txtp.min_pcr, qos->txtp.max_pcr); /* SHOULD ... fail call if anything is missing ... @@@ */ if (q_present(dsc,QF_bw_max_sdu)) qos->txtp.max_sdu = q_fetch(dsc,QF_bw_max_sdu); if (q_present(dsc,QF_fw_max_sdu)) qos->rxtp.max_sdu = q_fetch(dsc,QF_fw_max_sdu); if (q_present(dsc,QG_bhli)) { sap->bhli.hl_type = q_fetch(dsc,QF_hli_type)+1; switch (sap->bhli.hl_type) { case ATM_HL_ISO: sap->bhli.hl_length = q_length(dsc,QF_iso_hli); q_read(dsc,QF_iso_hli,sap->bhli.hl_info,sap->bhli.hl_length); break; case ATM_HL_USER: sap->bhli.hl_length = q_length(dsc,QF_user_hli); q_read(dsc,QF_user_hli,sap->bhli.hl_info,sap->bhli.hl_length); break; case ATM_HL_VENDOR: sap->bhli.hl_length = 7; q_read(dsc,QF_hli_oui,sap->bhli.hl_info,3); q_read(dsc,QF_app_id,sap->bhli.hl_info+3,4); break; #if defined(UNI30) || defined(DYNAMIC_UNI) case ATM_HL_HLP: if (!(uni & S_UNI30)) { sap->bhli.hl_length = 4; q_read(dsc,QF_hlp,sap->bhli.hl_info,4); break; } /* fall through */ #endif default: diag(COMPONENT,DIAG_ERROR,"unrecognized hl_type %d", sap->bhli.hl_type); return IE_PROBLEM(ATM_CV_INVALID_IE,ATM_IE_BHLI); } } if (!q_present(dsc,QG_blli1)) return 0; q_instance(dsc,QG_blli1); decode_blli(dsc,sap->blli); if (!q_present(dsc,QG_blli2)) return 0; q_instance(dsc,QG_blli2); decode_blli(dsc,sap->blli+1); if (!q_present(dsc,QG_blli3)) return 0; q_instance(dsc,QG_blli3); decode_blli(dsc,sap->blli+2); return 0; } linux-atm-2.5.1/src/sigd/sap.h0000644000200100001440000000207407360675443014752 0ustar chasusers/* sap.h - SAP manipulations */ /* Written 1996-2000 by Werner Almesberger, EPFL-LRC/ICA */ #ifndef SAP_H #define SAP_H #include #include #include "atmsap.h" #define IE_PROBLEM(cause,ie) (((cause) << 8) | (ie)) #define IE_PB_CAUSE(problem) ((problem) >> 8) #define IE_PB_IE(problem) ((problem) & 0xff) int sap_compat(const struct sockaddr_atmsvc *old_addr, const struct sockaddr_atmsvc *new_addr,struct sockaddr_atmsvc *res_addr, const struct atm_sap *old_sap,const struct atm_sap *new_sap, struct atm_sap *res_sap,const struct atm_qos *old_qos, const struct atm_qos *new_qos,struct atm_qos *res_qos); int sap_encode(Q_DSC *dsc,const struct sockaddr_atmsvc *addr, const struct atm_sap *sap,const struct atm_qos *qos,int uni,int max_rate); /* * sap_encode returns zero on success, -errno on error. */ unsigned int sap_decode(Q_DSC *dsc,struct sockaddr_atmsvc *addr, struct atm_sap *sap,struct atm_qos *qos,int uni); /* * sap_decode returns zero on success, the problem report (encoded with * IE_PROBLEM) on error. */ #endif linux-atm-2.5.1/src/sigd/timeout.c0000644000200100001440000000645010203711252015625 0ustar chasusers/* timeout.c - Processing of signaling timeout events */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "atmd.h" #include "uni.h" #include "proto.h" #include "timeout.h" #define COMPONENT "UNI" static void complain(SOCKET *sock,const char *timer) { diag(COMPONENT,DIAG_FATAL,"Timer %s expired in incompatible state %s", timer,state_name[sock->state]); } #ifdef MULTIPOINT void on_T398(void *user) /* DROPPARTY */ { SOCKET *sock = user; if (sock == NULL) return; SEND_ERROR(sock->id, -ETIMEDOUT); /* should retry once and then give up */ sock->conn_timer = NULL; free_sock(sock); } void on_T399(void *user) /* ADDPARTY */ { SOCKET *sock = user; if (sock == NULL) return; diag(COMPONENT,DIAG_INFO,"Timer T399 expired in state %s", state_name[sock->state]); SEND_ERROR(sock->id, -ETIMEDOUT); sock->conn_timer = NULL; free_sock(sock); } #endif void on_T303(void *user) /* CONNECTING */ { SOCKET *sock = user; diag(COMPONENT,DIAG_DEBUG,"T303 on %s",kptr_print(&sock->id)); if (sock->state != ss_connecting) complain(sock,"T303"); SEND_ERROR(sock->id,-ETIMEDOUT); sock->conn_timer = NULL; free_sock(sock); } void on_T308_1(void *user) /* WAIT_REL or REL_REQ */ { SOCKET *sock = user; diag(COMPONENT,DIAG_DEBUG,"T308_1 on %s",kptr_print(&sock->id)); if (sock->state != ss_wait_rel && sock->state != ss_rel_req) complain(sock,"T308_1"); send_release(sock,ATM_CV_TIMER_EXP,308); /* @@@ ? */ sock->conn_timer = NULL; START_TIMER(sock,T308_2); } void on_T308_2(void *user) /* WAIT_REL or REL_REQ */ { SOCKET *sock = user; diag(COMPONENT,DIAG_WARN,"Trouble: T308_2 has expired"); if (sock->state != ss_wait_rel && sock->state != ss_rel_req) complain(sock,"T308_2"); sock->conn_timer = NULL; if (sock->state == ss_rel_req) send_close(sock); free_sock(sock); } void on_T309(void *user) { diag(COMPONENT,DIAG_DEBUG,"T309 has expired"); clear_all_calls_on_T309(user); } void on_T310(void *user) { on_T303(user); diag(COMPONENT,DIAG_DEBUG,"(it's actually T310)"); } void on_T313(void *user) /* ACCEPTING */ { SOCKET *sock = user; diag(COMPONENT,DIAG_DEBUG,"T313 on %s",kptr_print(&sock->id)); if (sock->state != ss_accepting) complain(sock,"T313"); send_release(sock,ATM_CV_TIMER_EXP,313); sock->conn_timer = NULL; START_TIMER(sock,T308_1); new_state(sock,ss_rel_req); } #if defined(Q2963_1) || defined(DYNAMIC_UNI) void on_T360(void *user) { SOCKET *sock = user; diag(COMPONENT,DIAG_DEBUG,"T360 on %s",kptr_print(&sock->id)); if (sock->state != ss_mod_req) complain(sock,"T360"); send_release(sock,ATM_CV_TIMER_EXP,360); sock->conn_timer = NULL; START_TIMER(sock,T308_1); new_state(sock,ss_rel_req); } void on_T361(void *user) { SOCKET *sock = user; diag(COMPONENT,DIAG_DEBUG,"T361 on %s",kptr_print(&sock->id)); if (sock->state != ss_connected) complain(sock,"T361"); sock->qos = sock->new_qos; send_kernel(sock->id,kptr_null,as_modify,ATM_MF_SET,NULL,NULL,NULL,NULL, &sock->qos); sock->conn_timer = NULL; new_state(sock,ss_mod_fin_ack); } #endif linux-atm-2.5.1/src/sigd/timeout.h0000644000200100001440000000176710203711252015640 0ustar chasusers/* timeout.h - Processing of signaling timeout events */ /* Written 1995-1997 by Werner Almesberger, EPFL-LRC */ #ifndef TIMEOUT_H #define TIMEOUT_H #define T303_TIME 4000000 /* 4 sec */ #define T308_1_TIME 30000000 /* 30 sec */ #define T308_2_TIME 30000000 /* 30 sec */ #define T309_TIME 10000000 /* 10 sec */ #define T310_TIME 10000000 /* 10 sec */ #define T313_TIME 4000000 /* 4 sec */ #define T360_TIME 30000000 /* 30 sec */ #define T361_TIME 20000000 /* 20 sec */ #define T399_TIME 14000000 /* 14 sec */ #define T398_TIME 4000000 /* 4 sec */ #define START_TIMER(u,t) { assert(!u->conn_timer); \ u->conn_timer = start_timer(t##_TIME,on_##t,u); } #define STOP_TIMER(u) { stop_timer(u->conn_timer); u->conn_timer = NULL; } void on_T398(void *user); void on_T399(void *user); void on_T303(void *user); void on_T308_1(void *user); void on_T308_2(void *user); void on_T309(void *user); void on_T310(void *user); void on_T313(void *user); void on_T360(void *user); void on_T361(void *user); #endif linux-atm-2.5.1/src/sigd/trace.c0000644000200100001440000001434607360675443015265 0ustar chasusers/* trace.c - Support functions for message tracing */ /* Written 1996-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "atm.h" #include #include "atmd.h" #include "atmsap.h" #include "trace.h" #include "proto.h" #define DUMP_MODE #include "qlib.h" typedef struct _entry { int number; struct timeval time; void (*print)(void *msg,int size); const char *comment; struct sockaddr_atmpvc pvc; /* unused if !sap_family */ void *msg; int size; struct _entry *next; } ENTRY; int trace_size = DEFAULT_TRACE_SIZE; static struct sockaddr_atmpvc null_pvc; static int current_size = 0; static int sequence = 0; static ENTRY *first = NULL,*last = NULL; static char *string = NULL; static int curr_len; static int new_line; static inline void append_chunk(const char *str,int len) { if (!string) curr_len = 0; if (!(string = realloc(string,curr_len+len+1))) { perror("realloc"); exit(1); } memcpy(string+curr_len,str,len); curr_len += len; string[curr_len] = 0; } static void vappend(const char *fmt,va_list ap) { const char *walk,*next; for (walk = next = fmt; *walk; walk++) if (*walk == '%') { if (walk != next) append_chunk(next,walk-next); if (*++walk == 's') { const char *str; str = va_arg(ap,const char *); append_chunk(str,strlen(str)); } else { char buf[21]; /* big enough for 64 bits */ int num; while (isdigit(*walk) || *walk == 'l') walk++; /* @@@ FIXME */ if (*walk != 'd' && *walk != 'x') { fprintf(stderr,"bad format character %c (%d)\n",*walk, *walk); exit(1); } num = va_arg(ap,int); sprintf(buf,*walk == 'd' ? "%d" : "%x",num); append_chunk(buf,strlen(buf)); } next = walk+1; } if (walk != next) append_chunk(next,walk-next); } static void append(const char *fmt,...) { va_list ap; va_start(ap,fmt); vappend(fmt,ap); va_end(ap); } static void print_text(void *msg,int size) { append(" %s\n",msg); } static void append_svc(const struct sockaddr_atmsvc *svc) { char buffer[MAX_ATM_ADDR_LEN+1]; if (atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) svc, A2T_NAME | A2T_LOCAL | A2T_PRETTY) < 0) strcpy(buffer,""); append("%s\n",buffer); } static void append_sap(const struct atm_sap *sap) { char buffer[MAX_ATM_SAP_LEN+1]; if (sap2text(buffer,MAX_ATM_SAP_LEN+1,sap,S2T_NAME | S2T_LOCAL) < 0) strcpy(buffer,""); append("%s\n",buffer); } static void append_qos(const struct atm_qos *qos) { char buffer[MAX_ATM_QOS_LEN+1]; if (qos2text(buffer,MAX_ATM_QOS_LEN+1,qos,0) < 0) strcpy(buffer,""); append("%s\n",buffer); } static void qd_vdump(const char *msg,va_list ap) { if (new_line) append(" "); vappend(msg,ap); if (string && curr_len) new_line = string[curr_len-1] == '\n'; else new_line = 1; } void qd_dump(const char *msg,...) { va_list ap; va_start(ap,msg); qd_vdump(msg,ap); va_end(ap); } void qd_report(int severity,const char *msg,...) { va_list ap; if (severity > Q_ERROR) return; va_start(ap,msg); qd_vdump(msg,ap); va_end(ap); qd_dump("\n"); } static void print_uni(void *msg,int size) { Q_DSC dsc; (void) qd_open(&dsc,msg,size); qd_close(&dsc); } static void print_kernel(void *msg,int size) { static const char *type[] = { "as_catch_null","as_bind","as_connect", "as_accept","as_reject","as_listen","as_okay","as_error","as_indicate", "as_close","as_itf_notify","as_modify","as_identify" }; struct atmsvc_msg *m = msg; append(" %s (vcc %s, listen_vcc %s)\n",m->type < sizeof(type)/ sizeof(*type) ? type[m->type] : "???",kptr_print(&m->vcc), kptr_print(&m->listen_vcc)); append(" reply %d",m->reply); if (m->reply) { const char *error; error = strerror(m->reply > 0 ? m->reply : -m->reply); append(" (%s)",error ? error : "???"); } append(", aal %d\n",m->qos.aal); append(" pvc %d.%d.%d\n",m->pvc.sap_addr.itf,m->pvc.sap_addr.vpi, m->pvc.sap_addr.vci); append(" local "); append_svc(&m->local); append(" qos "); append_qos(&m->qos); append(" svc "); append_svc(&m->svc); append(" sap "); append_sap(&m->sap); } static void store(void (*print)(void *msg,int size),const char *comment, const struct sockaddr_atmpvc *pvc,void *msg,int size) { ENTRY *entry; entry = alloc_t(ENTRY); (void) gettimeofday(&entry->time,NULL); entry->number = sequence++; entry->print = print; entry->comment = comment; entry->pvc = *pvc; entry->msg = msg; entry->size = size; entry->next = NULL; if (current_size < trace_size) current_size++; else { /* handle trace_size < 1 (< 0) too */ ENTRY *next; next = first->next; free(first->msg); free(first); if (first == last) last = NULL; /* someone set trace_size < 2 */ first = next; } if (last) last->next = entry; else first = entry; last = entry; } void trace_msg(const char *msg) { char *buf; if (!trace_size) return; buf = alloc(strlen(msg)+1); strcpy(buf,msg); store(&print_text,"MESSAGE",&null_pvc,buf,strlen(msg)); } void trace_uni(const char *comment,const SIG_ENTITY *sig,const void *msg, int size) { char *buf; if (!trace_size) return; buf = alloc(size); memcpy(buf,msg,size); store(&print_uni,comment,&sig->signaling_pvc,buf,size); } void trace_kernel(const char *comment,const struct atmsvc_msg *msg) { struct atmsvc_msg *buf; if (!trace_size) return; buf = alloc_t(struct atmsvc_msg); *buf = *msg; store(&print_kernel,comment,&null_pvc,buf,sizeof(*msg)); } char *get_trace(void) { ENTRY *walk; if (string) { free(string); string = NULL; } for (walk = first; walk; walk = walk->next) { append("%6d (%d.%06d) %s",walk->number,walk->time.tv_sec, walk->time.tv_usec,walk->comment); if (!walk->pvc.sap_family) append(":\n"); else append(" (%d.%d.%d):\n",walk->pvc.sap_addr.itf, walk->pvc.sap_addr.vpi,walk->pvc.sap_addr.vci); new_line = 1; walk->print(walk->msg,walk->size); } return string; } linux-atm-2.5.1/src/sigd/trace.h0000644000200100001440000000067007360675443015265 0ustar chasusers/* trace.h - Support functions for message tracing */ /* Written 1996,1998 by Werner Almesberger, EPFL-LRC */ #ifndef TRACE_H #define TRACE_H #include #include "proto.h" extern int trace_size; void trace_msg(const char *msg); void trace_uni(const char *comment,const SIG_ENTITY *sig,const void *msg, int size); void trace_kernel(const char *comment,const struct atmsvc_msg *msg); char *get_trace(void); #endif linux-atm-2.5.1/src/sigd/uni.c0000644000200100001440000006104310203711252014731 0ustar chasusers/* uni.c - Processing of incoming UNI signaling messages */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include "atmd.h" #include "uni.h" #include "qlib.h" #include #include "proto.h" #include "sap.h" #include "io.h" #include "policy.h" #include "timeout.h" #include "trace.h" #define COMPONENT "UNI" extern const char *cause_text[]; /* from mess.c */ static Q_DSC in_dsc; static TIMER *t309 = NULL; static unsigned short cvt_ep_ref(SIG_ENTITY *sig,unsigned short ep_ref) { return sig->uni == S_UNI30 ? ep_ref & 0x7fff : ep_ref ^ 0x8000; } int send_call_proceeding(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_CALL_PROC); q_assign(&dsc,QF_call_ref,sock->call_ref); if (sock->sig->mode == sm_net) { int vpci,vci; sock->pvc.sap_family = AF_ATMPVC; vpci = sock->sig->signaling_pvc.sap_addr.itf; sock->pvc.sap_addr.itf = get_itf(sock->sig,&vpci); sock->pvc.sap_addr.vpi = vpci; vci = get_vci(sock->pvc.sap_addr.itf); if (vci < 0) { (void) q_close(&dsc); return vci; } sock->pvc.sap_addr.vci = vci; } if (sock->sig->mode != sm_user) { q_assign(&dsc,QF_vpi,sock->pvc.sap_addr.vpi); q_assign(&dsc,QF_vci,sock->pvc.sap_addr.vci); } if (sock->ep_ref >= 0) q_assign(&dsc,QF_ep_ref,sock->ep_ref); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); return 0; } static void setup_call(SIG_ENTITY *sig,unsigned long call_ref) { SOCKET *sock,*this,**walk; struct sockaddr_atmsvc in_addr; struct atm_sap in_sap; struct atm_qos in_qos; unsigned int problem; int i; problem = sap_decode(&in_dsc,&in_addr,&in_sap,&in_qos,sig->uni); if (problem) { send_release_complete(sig,call_ref,IE_PB_CAUSE(problem), IE_PB_IE(problem)); return; } if (!atmsvc_addr_in_use(in_addr)) { send_release_complete(sig,call_ref,ATM_CV_UNALLOC); return; } if (!allow(&in_addr,ACL_IN)) { send_release_complete(sig,call_ref,ATM_CV_REJ_CLIR); return; } this = new_sock(kptr_null); this->sig = sig; sock = lookup_sap(&in_addr,&in_sap,&in_qos,&this->local,&this->sap, &this->qos,0); if (!sock) { free_sock(this); send_release_complete(sig,call_ref,ATM_CV_INCOMP_DEST); return; } this->state = sig->mode == sm_net ? ss_proceeding : ss_indicated; this->call_state = cs_in_proc; this->call_ref = call_ref; if (q_present(&in_dsc,QF_ep_ref)) this->ep_ref = cvt_ep_ref(sig,q_fetch(&in_dsc,QF_ep_ref)); #ifdef CISCO else #endif if (sig->mode == sm_net) { int error; error = send_call_proceeding(this); if (error) { free_sock(this); send_release_complete(sig,call_ref,ATM_CV_NO_CI); return; } } /* if (sock->local) *this->local->sas_addr = sock->local->sas_addr; ??? */ diag(COMPONENT,DIAG_DEBUG,"AAL type %ld",q_fetch(&in_dsc,QF_aal_type)); if (sig->mode == sm_user) { /* already set by send_call_proceeding */ int vpci; vpci = q_fetch(&in_dsc,QF_vpi); this->pvc.sap_family = AF_ATMPVC; this->pvc.sap_addr.itf = get_itf(sig,&vpci); this->pvc.sap_addr.vpi = vpci; this->pvc.sap_addr.vci = q_fetch(&in_dsc,QF_vci); } diag(COMPONENT,DIAG_DEBUG,"ITF.VPI.VCI: %d.%d.%d",this->pvc.sap_addr.itf, this->pvc.sap_addr.vpi,this->pvc.sap_addr.vci); if (q_present(&in_dsc,QF_cgpn)) { /* should handle E.164 too */ char buffer[MAX_ATM_ADDR_LEN+1]; int plan; plan = q_fetch(&in_dsc,QF_cgpn_plan); switch (plan) { case ATM_NP_AEA: i = q_read(&in_dsc,QF_cgpn,(void *) this->remote.sas_addr.prv, ATM_ESA_LEN); break; case ATM_NP_E164: i = q_read(&in_dsc,QF_cgpn,(void *) this->remote.sas_addr.pub, ATM_E164_LEN); break; default: diag(COMPONENT,DIAG_WARN,"Ignoring cgpn with unrecognized " "numbering plan 0x%x\n",plan); i = 0; } if (i) { this->remote.sas_family = AF_ATMSVC; if (atm2text(buffer,MAX_ATM_ADDR_LEN+1, (struct sockaddr *) &this->remote,pretty) < 0) strcpy(buffer,""); diag(COMPONENT,DIAG_DEBUG,"Incoming call from %s",buffer); } } send_kernel(kptr_null,sock->id,as_indicate,0,&this->pvc,&this->remote, &in_addr,&this->sap,&this->qos); for (walk = &sock->listen; *walk; walk = &(*walk)->listen); *walk = this; diag(COMPONENT,DIAG_DEBUG,"SE vpi.vci=%d.%d",this->pvc.sap_addr.vpi, this->pvc.sap_addr.vci); } static void send_status(SIG_ENTITY *sig,SOCKET *sock,unsigned long call_ref, unsigned char cause,...) { va_list ap; Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_STATUS); if (sock) { q_assign(&dsc,QF_call_ref,sock->call_ref); q_assign(&dsc,QF_call_state,(int) sock->call_state); if (sock->ep_ref >= 0) { q_assign(&dsc,QF_ep_ref,sock->ep_ref); q_assign(&dsc,QF_ep_state,eps_map[sock->call_state]); } } else { q_assign(&dsc,QF_call_ref,call_ref); q_assign(&dsc,QF_call_state,0); /* U0 - Null / REST 0 - Null */ } q_assign(&dsc,QF_cause,cause); va_start(ap,cause); switch (cause) { case ATM_CV_UNKNOWN_MSG_TYPE: case ATM_CV_INCOMP_MSG: q_assign(&dsc,QF_bad_msg_type,va_arg(ap,unsigned int)); break; case ATM_CV_MAND_IE_MISSING: case ATM_CV_INVALID_IE: { unsigned char ie; ie = va_arg(ap,unsigned int); q_write(&dsc,QF_ie_id6,&ie,1); break; } default: ; } va_end(ap); if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); } static void send_status_enq(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_STATUS_ENQ); q_assign(&dsc,QF_call_ref,sock->call_ref); if (sock->ep_ref >= 0) q_assign(&dsc,QF_ep_ref,sock->ep_ref); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); /* @@@ should start T322 */ } static void send_connect_ack(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_CONN_ACK); q_assign(&dsc,QF_call_ref,sock->call_ref); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); } static void send_restart_ack(SIG_ENTITY *sig,unsigned long call_ref,int vpi, int vci) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_REST_ACK); q_assign(&dsc,QF_call_ref,call_ref); if (!vpi && !vci) q_assign(&dsc,QF_rst_class,ATM_RST_ALL_VC); else { q_assign(&dsc,QF_rst_class,ATM_RST_IND_VC); q_assign(&dsc,QF_vpi,vpi); q_assign(&dsc,QF_vci,vci); } if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); } static void send_drop_party_ack(SIG_ENTITY *sig,unsigned long call_ref, unsigned short ep_ref,unsigned char cause) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_DROP_PARTY_ACK); q_assign(&dsc,QF_call_ref,call_ref); q_assign(&dsc,QF_ep_ref,ep_ref); q_assign(&dsc,QF_cause,cause); if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); } #if defined(Q2963_1) || defined(DYNAMIC_UNI) static void send_conn_avail(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_CONN_AVAIL); q_assign(&dsc,QF_call_ref,sock->call_ref); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); } #endif static void uni_call(SOCKET *sock,unsigned char mid) { char buffer[MAX_ATM_ADDR_LEN+1]; int error; switch (mid) { case ATM_MSG_STATUS: /* 5.5.6.12 */ { CALL_STATE state; /* * NOTE: T322 isn't implemented yet, but when it is, make sure * to only stop it on STATUS iff the cause is * ATM_CV_RESP_STAT_ENQ. Supplementary services break if * you stop on any STATUS. */ state = q_fetch(&in_dsc,QF_call_state); if (state == cs_null) break; /* clear call */ if (sock->call_state == cs_rel_req || sock->call_state == cs_rel_ind) return; if (state != sock->call_state) diag(COMPONENT,DIAG_WARN,"STATUS %s received in state %s", cs_name[state],cs_name[sock->call_state]); } return; default: ; } switch (mid) { case ATM_MSG_CALL_PROC: /* CONNECTING, WAIT_REL, REL_REQ */ if (sock->state == ss_wait_rel || sock->state == ss_rel_req) { send_status(sock->sig,sock,0,ATM_CV_INCOMP_MSG, ATM_MSG_CALL_PROC); return; } if (sock->state != ss_connecting) break; /* check for 2nd CALL_PROC @@@ */ STOP_TIMER(sock); if (q_present(&in_dsc,QG_conn_id)) { int vpci; vpci = q_fetch(&in_dsc,QF_vpi); sock->pvc.sap_family = AF_ATMPVC; sock->pvc.sap_addr.itf = get_itf(sock->sig,&vpci); sock->pvc.sap_addr.vpi = vpci; sock->pvc.sap_addr.vci = q_fetch(&in_dsc,QF_vci); diag(COMPONENT,DIAG_DEBUG,"ITF.VPI.VCI: %d.%d.%d", sock->pvc.sap_addr.itf,sock->pvc.sap_addr.vpi, sock->pvc.sap_addr.vci); } START_TIMER(sock,T310); sock->call_state = cs_out_proc; return; case ATM_MSG_CONNECT: /* CONNECTING, REL_REQ */ if (sock->state == ss_rel_req) { send_status(sock->sig,sock,0,ATM_CV_INCOMP_MSG,ATM_MSG_CONNECT); return; } if (sock->state != ss_connecting) break; STOP_TIMER(sock); if (q_present(&in_dsc,QG_conn_id)) { int vpci; vpci = q_fetch(&in_dsc,QF_vpi); sock->pvc.sap_family = AF_ATMPVC; sock->pvc.sap_addr.itf = get_itf(sock->sig,&vpci); sock->pvc.sap_addr.vpi = vpci; sock->pvc.sap_addr.vci = q_fetch(&in_dsc,QF_vci); diag(COMPONENT,DIAG_DEBUG,"ITF.VPI.VCI: %d/%d.%d", sock->pvc.sap_addr.itf,sock->pvc.sap_addr.vpi, sock->pvc.sap_addr.vci); } error = 0; if (!sock->pvc.sap_addr.vpi && !sock->pvc.sap_addr.vci) error = -EPROTO; /* more problems */ if (error) { set_error(sock,error); send_release(sock,0); /* @@@ cause follows reason ??? */ START_TIMER(sock,T308_1); new_state(sock,ss_rel_req); return; } send_connect_ack(sock); /* @@@ fill in sock->remote */ /* @@@ fill in traffic parameters */ send_kernel(sock->id,kptr_null,as_okay,0,&sock->pvc,NULL, &sock->local,&sock->sap,&sock->qos); new_state(sock,ss_connected); #if defined(Q2963_1) || defined(DYNAMIC_UNI) sock->owner = 1; #endif if (atm2text(buffer,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) &sock->remote,0) < 0) strcpy(buffer,""); diag(COMPONENT,DIAG_INFO,"Active open succeeded (CR 0x%06X, " "ID %s, to %s)",sock->call_ref,kptr_print(&sock->id),buffer); return; case ATM_MSG_CONN_ACK: /* ACCEPTING, WAIT_REL, REL_REQ */ diag(COMPONENT,DIAG_DEBUG,"CA vpi.vci=%d.%d", sock->pvc.sap_addr.vpi,sock->pvc.sap_addr.vci); if (sock->state == ss_wait_rel || sock->state == ss_rel_req) { send_status(sock->sig,sock,0,ATM_CV_INCOMP_MSG, ATM_MSG_CONN_ACK); return; } if (sock->state != ss_accepting) break; STOP_TIMER(sock); send_kernel(sock->id,kptr_null,as_okay,0,NULL,NULL,&sock->local, &sock->sap,NULL); new_state(sock,ss_connected); #if defined(Q2963_1) || defined(DYNAMIC_UNI) sock->owner = 0; #endif if (atm2text(buffer,MAX_ATM_ADDR_LEN+1, (struct sockaddr *) &sock->remote,0) < 0) strcpy(buffer,""); diag(COMPONENT,DIAG_INFO,"Passive open succeeded (CR 0x%06X, " "ID %s, from %s)",sock->call_ref,kptr_print(&sock->id),buffer); return; case ATM_MSG_RELEASE: /* all states */ { unsigned char cause; cause = q_fetch(&in_dsc,QF_cause); diag(COMPONENT,DIAG_DEBUG,"Cause %d (%s)",cause,cause > 127 ? "invalid cause" : cause_text[cause]); } switch (sock->state) { case ss_connecting: set_error(sock,-ECONNREFUSED); /* fall through */ case ss_accepting: set_error(sock,-ECONNRESET); /* ERESTARTSYS ? */ send_release_complete(sock->sig,sock->call_ref,0); SEND_ERROR(sock->id,sock->error); STOP_TIMER(sock); free_sock(sock); return; case ss_rel_req: send_close(sock); /* fall through */ case ss_wait_rel: STOP_TIMER(sock); free_sock(sock); return; #if defined(Q2963_1) || defined(DYNAMIC_UNI) case ss_mod_req: #endif STOP_TIMER(sock); /* fall through */ #if defined(Q2963_1) || defined(DYNAMIC_UNI) case ss_mod_lcl: case ss_mod_rcv: case ss_mod_fin_ok: case ss_mod_fin_fail: case ss_mod_fin_ack: #endif case ss_connected: diag(COMPONENT,DIAG_INFO,"Passive close (CR 0x%06X)", sock->call_ref); #if defined(Q2963_1) || defined(DYNAMIC_UNI) if (timer_handler(sock->conn_timer) == on_T361) STOP_TIMER(sock); #endif send_close(sock); new_state(sock,ss_rel_ind); return; case ss_indicated: /* fall through */ case ss_proceeding: send_release_complete(sock->sig,sock->call_ref,0); new_state(sock,ss_zombie); /* fall through */ case ss_rel_ind: return; default: send_release_complete(sock->sig,sock->call_ref,0); /* @@@ should be ATM_CV_INCOMP_MSG */ break; } break; case ATM_MSG_RESTART: set_error(sock,-ENETRESET); /* fall through */ case ATM_MSG_STATUS: /* fall through when clearing */ case ATM_MSG_REL_COMP: /* basically any state (except LISTENING and ZOMBIE) */ { unsigned char cause; if (mid != ATM_MSG_REL_COMP || !q_present(&in_dsc,QF_cause)) cause = 0; else { cause = q_fetch(&in_dsc,QF_cause); diag(COMPONENT,DIAG_DEBUG,"Cause %d (%s)",cause, cause > 127 ? "invalid cause" : cause_text[cause]); } switch (sock->state) { case ss_connecting: set_error(sock,cause == ATM_CV_UNALLOC ? -EADDRNOTAVAIL : cause == ATM_CV_RES_UNAVAIL || #if defined(UNI31) || defined(UNI40) || defined(DYNAMIC_UNI) cause == ATM_CV_UCR_UNAVAIL_NEW || #endif cause == ATM_CV_NO_ROUTE_DEST ? -EHOSTUNREACH : cause == ATM_CV_NUM_CHANGED ? -EREMCHG : cause == ATM_CV_DEST_OOO ? -EHOSTDOWN : -ECONNREFUSED); /* fall through */ case ss_accepting: set_error(sock,-ECONNRESET); /* ERESTARTSYS ? */ SEND_ERROR(sock->id,sock->error); STOP_TIMER(sock); free_sock(sock); return; case ss_rel_req: send_close(sock); /* fall through */ case ss_wait_rel: STOP_TIMER(sock); #ifdef MULTIPOINT /* Need to free all endpoints if this is a pmp call */ if (sock->ct == p2mp) free_leaves(&sock->id); else #endif free_sock(sock); return; #if defined(Q2963_1) || defined(DYNAMIC_UNI) case ss_mod_req: #endif STOP_TIMER(sock); /* fall through */ #if defined(Q2963_1) || defined(DYNAMIC_UNI) case ss_mod_lcl: case ss_mod_rcv: case ss_mod_fin_ok: case ss_mod_fin_fail: case ss_mod_fin_ack: #endif case ss_connected: diag(COMPONENT,DIAG_INFO,"Passive close (CR 0x%06X)", sock->call_ref); #if defined(Q2963_1) || defined(DYNAMIC_UNI) if (timer_handler(sock->conn_timer) == on_T361) STOP_TIMER(sock); #endif send_close(sock); /* fall through */ case ss_rel_ind: new_state(sock,ss_wait_close); return; case ss_indicated: /* fall through */ case ss_proceeding: new_state(sock,ss_zombie); return; default: break; } break; /* fail */ } case ATM_MSG_ALERTING: /* * We basically ignore this junk message, except for the connection * identifier it may carry. */ if (q_present(&in_dsc,QG_conn_id)) { int vpci; vpci = q_fetch(&in_dsc,QF_vpi); sock->pvc.sap_family = AF_ATMPVC; sock->pvc.sap_addr.itf = get_itf(sock->sig,&vpci); sock->pvc.sap_addr.vpi = vpci; sock->pvc.sap_addr.vci = q_fetch(&in_dsc,QF_vci); diag(COMPONENT,DIAG_DEBUG,"ITF.VPI.VCI: %d.%d.%d", sock->pvc.sap_addr.itf,sock->pvc.sap_addr.vpi, sock->pvc.sap_addr.vci); } return; case ATM_MSG_NOTIFY: /* silently ignore this junk */ return; #ifdef MULTIPOINT case ATM_MSG_ADD_PARTY_REJ: STOP_TIMER(sock); send_drop_party_ack(sock->sig,sock->call_ref,sock->ep_ref,ATM_CV_CALL_REJ); send_kernel(sock->id, kptr_null, as_addparty, -1, NULL, NULL, NULL, NULL, NULL); diag(COMPONENT, DIAG_INFO, "addparty failed"); /* If no other leaves, should close entire call */ free_sock(sock); return; case ATM_MSG_ADD_PARTY_ACK: STOP_TIMER(sock); send_kernel(sock->id, kptr_null, as_addparty, sock->ep_ref, NULL, NULL, NULL, NULL, NULL); diag(COMPONENT, DIAG_INFO, "addparty succeeded"); new_state(sock, ss_connected); return; case ATM_MSG_DROP_PARTY_ACK: STOP_TIMER(sock); send_kernel(sock->id, kptr_null, as_dropparty, 0, NULL, NULL, NULL, NULL, NULL); diag(COMPONENT, DIAG_INFO, "dropparty succeeded"); free_sock(sock); return; case ATM_MSG_DROP_PARTY: diag(COMPONENT, DIAG_INFO, "received dropparty"); switch (sock->state) { case ss_connecting: case ss_connected: case ss_rel_req: case ss_wait_rel: send_drop_party_ack(sock->sig, sock->call_ref, sock->ep_ref, ATM_CV_NORMAL_CLEAR); break; default: send_drop_party_ack(sock->sig, sock->call_ref, sock->ep_ref, 0); } free_sock(sock); return; #endif #if defined(Q2963_1) || defined(DYNAMIC_UNI) /* * Buglet ahead: should actually test "call_state" */ case ATM_MSG_MODIFY_REQ: if (!(sock->sig->uni & S_Q2963_1)) goto _default; if (sock->state != ss_connected || sock->owner) break; sock->new_qos = sock->qos; if (q_present(&in_dsc,QF_fw_pcr_01)) sock->new_qos.rxtp.max_pcr = q_fetch(&in_dsc,QF_fw_pcr_01); if (q_present(&in_dsc,QF_bw_pcr_01)) sock->new_qos.txtp.max_pcr = q_fetch(&in_dsc,QF_bw_pcr_01); send_kernel(sock->id,kptr_null,as_modify, ATM_MF_INC_RSV | ATM_MF_DEC_RSV | ATM_MF_DEC_SHP, NULL,NULL,NULL,NULL,&sock->new_qos); new_state(sock,ss_mod_rcv); return; case ATM_MSG_MODIFY_ACK: if (!(sock->sig->uni & S_Q2963_1)) goto _default; if (sock->state != ss_mod_req) break; STOP_TIMER(sock); sock->qos = sock->new_qos; if (q_present(&in_dsc,QG_bbrt)) send_conn_avail(sock); send_kernel(sock->id,kptr_null,as_modify,ATM_MF_SET,NULL,NULL,NULL, NULL,&sock->qos); new_state(sock,ss_mod_fin_ok); return; case ATM_MSG_MODIFY_REJ: if (!(sock->sig->uni & S_Q2963_1)) goto _default; if (sock->state != ss_mod_req) break; STOP_TIMER(sock); sock->error = -EAGAIN; send_kernel(sock->id,kptr_null,as_modify,ATM_MF_SET,NULL,NULL,NULL, NULL,&sock->qos); new_state(sock,ss_mod_fin_fail); return; case ATM_MSG_CONN_AVAIL: if (!(sock->sig->uni & S_Q2963_1)) goto _default; if (sock->state != ss_connected || sock->owner) break; STOP_TIMER(sock); send_kernel(sock->id,kptr_null,as_modify,ATM_MF_SET,NULL,NULL,NULL, NULL,&sock->qos); new_state(sock,ss_mod_fin_ack); return; _default: /* jump here if we don't want to understand a message */ #endif default: diag(COMPONENT,DIAG_WARN,"Bad signaling message %d",mid); send_status(sock->sig,sock,0,ATM_CV_UNKNOWN_MSG_TYPE,mid); return; } diag(COMPONENT,DIAG_WARN, "Signaling message %s is incompatible with state %s/%s (%d?%d)", mid2name(mid),state_name[sock->state],cs_name[sock->call_state], (int) sock->state,(int) sock->call_state); send_status(sock->sig,sock,0,ATM_CV_INCOMP_MSG,mid); } void clear_all_calls(SIG_ENTITY *sig) { SOCKET *curr,*next; for (curr = sockets; curr; curr = next) { next = curr->next; if (curr->sig == sig && curr->call_state != cs_null) uni_call(curr,ATM_MSG_RESTART); } } void clear_all_calls_on_T309(SIG_ENTITY *sig) { clear_all_calls(sig); t309 = NULL; } void saal_failure(SIG_ENTITY *sig) { SOCKET *curr,*next; trace_msg("SAAL went down"); for (curr = sockets; curr; curr = next) { next = curr->next; if (curr->sig != sig || curr->call_state == cs_null) continue; if (curr->call_state != cs_active) uni_call(curr,ATM_MSG_RESTART); else if (!t309) t309 = start_timer(T309_TIME,on_T309,sig); } } void saal_okay(SIG_ENTITY *sig) { SOCKET *curr; trace_msg("SAAL came up"); #ifdef THOMFLEX /* * Some versions of the Thomson Thomflex 5000 won't do any signaling before * they get a RESTART. Whenever SAAL comes up, this may indicate that the * switch got booted, so we send that RESTART. We also have to clear all * pending connections, which isn't that nice ... Note that the rest of the * RESTART state machine is not implemented, so the RESTART ACKNOWLEDGE * will yield a warning. */ { Q_DSC dsc; int size; clear_all_calls(sig); q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,QMSG_RESTART); q_assign(&dsc,QF_call_ref,0); q_assign(&dsc,QF_rst_class,ATM_RST_ALL_VC); if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); } #endif if (!t309) return; stop_timer(t309); t309 = NULL; for (curr = sockets; curr; curr = curr->next) if (curr->sig == sig && curr->call_state != cs_null) send_status_enq(curr); } static void process_uni(SIG_ENTITY *sig,void *msg) { SOCKET *curr; unsigned long call_ref; unsigned short ep_ref; unsigned char mid; call_ref = q_fetch(&in_dsc,QF_call_ref)^0x800000; mid = q_fetch(&in_dsc,QF_msg_type); if (mid == ATM_MSG_REST_ACK) return; if (mid == ATM_MSG_RESTART) { /* 5.5.5.2 */ int rst_class; rst_class = q_fetch(&in_dsc,QF_rst_class); switch (rst_class) { case ATM_RST_IND_VC: { int vpi,vci; if (!q_present(&in_dsc,QG_conn_id)) { send_status(sig,NULL,call_ref,ATM_CV_MAND_IE_MISSING, ATM_IE_CONN_ID); return; } vpi = q_fetch(&in_dsc,QF_vpi); vci = q_fetch(&in_dsc,QF_vci); for (curr = sockets; curr; curr = curr->next) if (curr->sig == sig && curr->pvc.sap_addr.vpi == vpi && curr->pvc.sap_addr.vci == vci) break; if (!curr) { send_status(sig,NULL,call_ref,ATM_CV_INVALID_IE, ATM_IE_CONN_ID); return; } uni_call(curr,mid); send_restart_ack(sig,call_ref,vpi,vci); } break; case ATM_RST_ALL_VC: clear_all_calls(sig); send_restart_ack(sig,call_ref,0,0); break; default: send_status(sig,NULL,call_ref,ATM_CV_INVALID_IE,ATM_IE_RESTART); } return; } if (!(call_ref & 0x7fffff)) { diag(COMPONENT,DIAG_ERROR,"unrecognized global call ref"); return; } #ifdef MULTIPOINT if (q_present(&in_dsc,QF_ep_ref)) { ep_ref = cvt_ep_ref(sig,q_fetch(&in_dsc,QF_ep_ref)); for (curr = sockets; curr; curr = curr->next) if (curr->sig == sig && curr->call_ref == call_ref && curr->ep_ref == ep_ref) break; } else #endif for (curr = sockets; curr; curr = curr->next) if (curr->sig == sig && curr->call_ref == call_ref) break; diag(COMPONENT,DIAG_DEBUG,"FROM SAAL %d.%d.%d: %s (0x%02X) CR 0x%06lx for " "%s",S_PVC(sig),mid2name(((unsigned char *) msg)[5]), ((unsigned char *) msg)[5],call_ref,curr ? kptr_print(&curr->id) : "?"); if (mid == ATM_MSG_SETUP) { if (!curr) setup_call(sig,call_ref); return; } if (mid == ATM_MSG_STATUS_ENQ) { send_status(sig,curr,call_ref,ATM_CV_RESP_STAT_ENQ); return; } if (curr && q_present(&in_dsc,QF_ep_ref) && mid != ATM_MSG_ADD_PARTY && mid != ATM_MSG_DROP_PARTY_ACK) { ep_ref = cvt_ep_ref(sig,q_fetch(&in_dsc,QF_ep_ref)); if (curr->ep_ref != ep_ref) { send_drop_party_ack(sig,call_ref,ep_ref,ATM_CV_INV_EPR); return; } } if (!curr || curr->call_state == cs_null) { if (mid == ATM_MSG_REL_COMP) return; if (mid != ATM_MSG_STATUS) send_release_complete(sig,call_ref,ATM_CV_INV_CR); else if (q_fetch(&in_dsc,QF_call_state) != (int) cs_null) send_release_complete(sig,call_ref,ATM_CV_INCOMP_MSG); return; } uni_call(curr,mid); } static void abort_call(SIG_ENTITY *sig,unsigned char *msg,int size) { SOCKET *curr; unsigned long call_ref; if (size < 6) { diag(COMPONENT,DIAG_ERROR,"message too short (%d bytes)",size); return; } /* hope that at least the call ref is okay ... */ call_ref = ((msg[3] << 16) | (msg[4] << 8) | msg[5])^0x800000; diag(COMPONENT,DIAG_ERROR,"can't parse message - aborting the call " "(CR 0x%06lx)",call_ref); for (curr = sockets; curr; curr = curr->next) if (curr->sig == sig && curr->call_ref == call_ref) { uni_call(curr,ATM_MSG_RESTART); break; } send_release_complete(sig,call_ref,ATM_CV_PROTOCOL_ERROR); } void to_uni(SIG_ENTITY *sig,void *msg,int size) { if (q_open(&in_dsc,msg,size) < 0) { abort_call(sig,msg,size); return; } process_uni(sig,msg); if (q_close(&in_dsc) < 0) diag(COMPONENT,DIAG_ERROR,"q_close returned <0 in to_uni"); } linux-atm-2.5.1/src/sigd/Makefile.in0000644000200100001440000005745311304770377016071 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ sbin_PROGRAMS = atmsigd$(EXEEXT) subdir = src/sigd DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ cfg_l.c cfg_y.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man4dir)" \ "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(sysconfdir)" PROGRAMS = $(sbin_PROGRAMS) am_atmsigd_OBJECTS = atmsigd.$(OBJEXT) io.$(OBJEXT) kernel.$(OBJEXT) \ proto.$(OBJEXT) uni.$(OBJEXT) sap.$(OBJEXT) timeout.$(OBJEXT) \ trace.$(OBJEXT) policy.$(OBJEXT) cfg_y.$(OBJEXT) \ cfg_l.$(OBJEXT) atmsigd_OBJECTS = $(am_atmsigd_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) YLWRAP = $(top_srcdir)/ylwrap YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) SOURCES = $(atmsigd_SOURCES) DIST_SOURCES = $(atmsigd_SOURCES) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man4dir = $(mandir)/man4 man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) DATA = $(sysconf_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ INCLUDES = -I$(top_builddir)/src/q2931 -I$(srcdir)/../q2931 -I$(srcdir)/../saal -I. atmsigd_SOURCES = atmsigd.c io.c io.h kernel.c proto.c proto.h uni.c \ sap.c sap.h timeout.c timeout.h trace.c trace.h \ policy.c policy.h cfg_y.y cfg_l.l atmsigd_XTRAS = mess.o $(top_builddir)/src/q2931/q.out.o \ $(top_builddir)/src/q2931/qd.dump.o \ $(top_builddir)/src/lib/libatm.la \ $(top_builddir)/src/saal/libsaal.a atmsigd_LDADD = $(atmsigd_XTRAS) -lfl atmsigd_DEPENDENCIES = mess.c $(atmsigd_XTRAS) CLEANFILES = mess.c sysconf_DATA = atmsigd.conf man_MANS = atmsigd.conf.4 atmsigd.8 EXTRA_DIST = cfg_y.h $(man_MANS) $(sysconf_DATA) mkmess.pl README all: all-am .SUFFIXES: .SUFFIXES: .c .l .lo .o .obj .y $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sigd/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/sigd/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list atmsigd$(EXEEXT): $(atmsigd_OBJECTS) $(atmsigd_DEPENDENCIES) @rm -f atmsigd$(EXEEXT) $(LINK) $(atmsigd_OBJECTS) $(atmsigd_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmsigd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfg_l.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfg_y.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kernel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/policy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proto.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uni.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< .l.c: $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man4: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man4dir)" || $(MKDIR_P) "$(DESTDIR)$(man4dir)" @list=''; test -n "$(man4dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.4[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^4][0-9a-z]*$$,4,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man4dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man4dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man4dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man4dir)" || exit $$?; }; \ done; } uninstall-man4: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man4dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.4[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^4][0-9a-z]*$$,4,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man4dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man4dir)" && rm -f $$files; } install-man8: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" @list=''; test -n "$(man8dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } install-sysconfDATA: $(sysconf_DATA) @$(NORMAL_INSTALL) test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)" @list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \ done uninstall-sysconfDATA: @$(NORMAL_UNINSTALL) @list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(sysconfdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sysconfdir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man4dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(sysconfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f cfg_l.c -rm -f cfg_y.c clean: clean-am clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-sbinPROGRAMS install-sysconfDATA install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man4 install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-sbinPROGRAMS \ uninstall-sysconfDATA uninstall-man: uninstall-man4 uninstall-man8 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-sbinPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man4 install-man8 install-pdf install-pdf-am \ install-ps install-ps-am install-sbinPROGRAMS install-strip \ install-sysconfDATA installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am uninstall-man \ uninstall-man4 uninstall-man8 uninstall-sbinPROGRAMS \ uninstall-sysconfDATA mess.c: $(top_builddir)/src/q2931/uni.h mkmess.pl @PERL@ $(srcdir)/mkmess.pl <$(srcdir)/../q2931/uni.h >mess.c # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/switch/0000755000200100001440000000000011304770377014361 5ustar chasuserslinux-atm-2.5.1/src/switch/CVS/0000755000200100001440000000000011304767140015006 5ustar chasuserslinux-atm-2.5.1/src/switch/CVS/Root0000644000200100001440000000007411304767140015655 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/switch/CVS/Repository0000644000200100001440000000002511304767140017105 0ustar chasuserslinux-atm/src/switch linux-atm-2.5.1/src/switch/CVS/Entries0000644000200100001440000000165111304767140016345 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:29 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:07 2001//TV2_5_1 /Makefile.am/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /README/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /cfg_l.l/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /cfg_y.y/1.2.2.1.2.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /control.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /dispatch.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /dispatch.h/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /fab.h/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /proto.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /proto.h/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /relay.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /route.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /route.h/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /sig.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /sig.h/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /swc.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /swc.h/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 D/debug//// D/tcp//// linux-atm-2.5.1/src/switch/CVS/Tag0000644000200100001440000000001011304767140015433 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/switch/.cvsignore0000644000200100001440000000007610666025265016363 0ustar chasusersMakefile Makefile.in .deps .libs cfg_l.c cfg_y.c cfg_y.h swc linux-atm-2.5.1/src/switch/Makefile-0.790000644000200100001440000000056007360675443016422 0ustar chasusersLDLIBS=-latmd LIBDEPS=../lib/libatmd.a SW_OBJS=control.o dispatch.o proto.o relay.o route.o sig.o lex.yy.o y.tab.o SUBDIRS=debug tcp PGMS=swc all: do_all: libsw.a include ../Rules.make lex.yy.c: cfg.l y.tab.h ../lib/atm.h $(LEX) cfg.l y.tab.c y.tab.h: cfg.y ../lib/atmd.h route.h sig.h $(YACC) -d cfg.y libsw.a: $(SW_OBJS) ar rcs libsw.a $(SW_OBJS) linux-atm-2.5.1/src/switch/Makefile.am0000644000200100001440000000063207360675444016424 0ustar chasusersSUBDIRS = . debug tcp noinst_PROGRAMS = swc noinst_LIBRARIES = libsw.a swc_SOURCES = swc.c swc.h swc_LDADD = $(top_builddir)/src/lib/libatm.la swc_DEPENDENCIES = $(swc_LDADD) $(top_builddir)/src/include/atm.h \ $(top_builddir)/src/include/atmd.h libsw_a_SOURCES = control.c dispatch.c dispatch.h proto.c proto.h relay.c \ route.c route.h sig.c sig.h cfg_y.y cfg_l.l fab.h EXTRA_DIST = cfg_y.h README linux-atm-2.5.1/src/switch/README0000644000200100001440000000035707360675444015254 0ustar chasusersSwitch fabric control. The actual switch interfaces are in the following subdirectories: debug/ a very simple debugging switch tcp/ an ATMTCP switch, based on sw_debug See the README in the respective directory for further details. linux-atm-2.5.1/src/switch/cfg_l.l0000644000200100001440000000265607360675444015627 0ustar chasusers%{ /* cfg.l - switch configuration language */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include "atm.h" #include "cfg_y.h" static int lineno = 1; static int token; /* f@#%ing flex doesn't grok return after BEGIN */ void yyerror(const char *s); %} %s N %s P %% BEGIN(N); option { BEGIN(P); token = TOK_OPTION; } control { BEGIN(P); token = TOK_CONTROL; } command return TOK_COMMAND; socket { BEGIN(P); token = TOK_SOCKET; } vpci return TOK_VPCI; itf return TOK_ITF; route { BEGIN(P); token = TOK_ROUTE; } default return TOK_DEFAULT; \"[^"\t\n]*\" { yylval.str = strdup(yytext+1); *strrchr(yylval.str,'"') = 0; return TOK_STR; } [0-9]+ { char *end; yylval.num = strtoul(yytext,&end,10); if (*end) yyerror("invalid number"); return TOK_NUM; } [0-9]+\.[0-9]+(\.[0-9]+)? { if (text2atm(yytext,(struct sockaddr *) &yylval.pvc, sizeof(yylval.pvc),T2A_PVC) < 0) yyerror("invalid VC"); return TOK_PVC; }

[^\t\n ]+ { BEGIN(N); yylval.str = strdup(yytext); if (!yylval.str) { perror("strdup"); exit(1); } return token; } \n?[\t ]* lineno += *yytext == '\n'; #[^\n]*\n lineno++; . return *yytext; %% void yyerror(const char *s) { fprintf(stderr,"line %d: %s near \"%s\"\n",lineno,s,yytext); exit(1); } linux-atm-2.5.1/src/switch/cfg_y.y0000644000200100001440000000340411235572166015642 0ustar chasusers%{ /* cfg.y - switch configuration language */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include "atm.h" #include "fab.h" #include "sig.h" #include "route.h" #include "swc.h" static int itf; static SIGNALING_ENTITY *sig; void yyerror(const char *s); int yylex(void); %} %union { int num; char *str; struct sockaddr_atmpvc pvc; }; %token TOK_COMMAND TOK_VPCI TOK_ITF TOK_DEFAULT %token TOK_ROUTE TOK_STR TOK_SOCKET TOK_OPTION TOK_CONTROL %token TOK_NUM %token TOK_PVC %type opt_command %% all: | option all | sig all | TOK_CONTROL all { control_init($1); } ; option: TOK_OPTION TOK_STR { fab_option($1,$2); } ; sig: opt_command TOK_SOCKET '{' { itf = 0; } opt_itf { char *tmp; tmp = strdup($2); if (!tmp) yyerror(strerror(errno)); sig = sig_vc($1,tmp,itf); } opt_via routes '}' ; opt_command: { $$ = NULL; } | TOK_COMMAND TOK_STR { $$ = strdup($2); if (!$$) yyerror(strerror(errno)); } ; opt_itf: | TOK_ITF TOK_NUM { itf = $2; } ; opt_via: | TOK_PVC { sig->pvc = $1; } ; routes: | route routes | TOK_DEFAULT { put_route(NULL,0,sig); } routes ; route: TOK_ROUTE { struct sockaddr_atmsvc addr; char *mask; mask = strchr($1,'/'); if (mask) *mask++ = 0; if (text2atm($1,(struct sockaddr *) &addr,sizeof(addr), T2A_SVC | T2A_WILDCARD | T2A_NAME | T2A_LOCAL) < 0) { yyerror("invalid address"); YYABORT; } put_route(&addr,mask ? strtol(mask,NULL,10) : INT_MAX,sig); } ; linux-atm-2.5.1/src/switch/control.c0000644000200100001440000001026007360675444016212 0ustar chasusers/* control.c - User control command processing */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "fab.h" #include "dispatch.h" #include "swc.h" #define COMPONENT "COMMAND" typedef struct _user_call { CALL call; struct _user_call *next; } USER_CALL; typedef struct { USER_CALL *u_call; UN_CTX un_ctx; } CONTEXT; static int s_control = -1; static USER_CALL *calls = NULL; static USER_CALL *find_call(const struct sockaddr_atmpvc *in, const struct sockaddr_atmpvc *out) { USER_CALL *u_call; for (u_call = calls; u_call; u_call = u_call->next) if (atm_equal((struct sockaddr *) in, (struct sockaddr *) &u_call->call.in.pvc,0,0) && atm_equal((struct sockaddr *) out, (struct sockaddr *) &u_call->call.out.pvc,0,0)) break; return u_call; } static void add_cb(CALL *call,int cause,void *more,void *user) { CONTEXT *context = user; SWC_MSG msg; USER_CALL **walk; memset(&msg,0,sizeof(msg)); msg.type = smt_add; msg.n = cause ? -EIO : 0; /* @@@ */ if (cause) free(context->u_call); else { for (walk = &calls; *walk && *walk; walk = &(*walk)->next); *walk = context->u_call; } if (un_send(&context->un_ctx,&msg,sizeof(msg)) < 0) diag(COMPONENT,DIAG_ERROR,"control_msg: un_send: %s",strerror(errno)); } static void del_cb(CALL *call,int cause,void *more,void *user) { CONTEXT *context = user; SWC_MSG msg; USER_CALL **walk; memset(&msg,0,sizeof(msg)); msg.type = smt_del; msg.n = cause ? -EIO : 0; /* @@@ */ if (!cause) { for (walk = &calls; *walk && *walk != context->u_call; walk = &(*walk)->next); if (!*walk) diag(COMPONENT,DIAG_FATAL,"del_cb: call %p not found", context->u_call); *walk = (*walk)->next; free(context->u_call); } if (un_send(&context->un_ctx,&msg,sizeof(msg)) < 0) diag(COMPONENT,DIAG_ERROR,"control_msg: un_send: %s",strerror(errno)); } static void control_msg(int sock,void *dummy) { CONTEXT context; SWC_MSG msg; USER_CALL *u_call; int len,i; len = un_recv(&context.un_ctx,s_control,&msg,sizeof(msg)); if (len < 0) { diag(COMPONENT,DIAG_ERROR,"control_msg: un_recv: %s",strerror(errno)); return; } if (len != sizeof(SWC_MSG)) diag(COMPONENT,DIAG_FATAL,"control_msg: bad length (%d != %d)",len, sizeof(SWC_MSG)); switch (msg.type) { case smt_get: /* * This code only shows VCs set up using the manual configuration * interface. Any VCs set up by signaling are invisible. To fix * this we'll need a "list fabric" function in the fabric-specific * part. (The relay doesn't maintain a list of active connections, * nor should it.) */ i = msg.n; for (u_call = calls; i && u_call; u_call = u_call->next) i--; if (!u_call) { msg.n = -ENOENT; break; } msg.in = u_call->call.in.pvc; msg.out = u_call->call.out.pvc; msg.qos = u_call->call.out.qos; break; case smt_add: u_call = find_call(&msg.in,&msg.out); if (u_call) { msg.n = -EEXIST; break; } u_call = alloc_t(USER_CALL); memset(u_call,0,sizeof(USER_CALL)); u_call->call.in.pvc = msg.in; u_call->call.out.pvc = msg.out; fab_init(&u_call->call); context.u_call = u_call; fab_op(&u_call->call,RM_CLAIM(_RM_ANY) | RM_RSV(_RM_ANY),&msg.qos, add_cb,&context); return; case smt_del: u_call = find_call(&msg.in,&msg.out); if (!u_call) { msg.n = -ENOENT; break; } context.u_call = u_call; fab_op(&u_call->call,RM_FREE,NULL,del_cb,&context); return; default: diag(COMPONENT,DIAG_FATAL,"control_msg: unknown message type %d", msg.type); } if (un_send(&context.un_ctx,&msg,sizeof(msg)) < 0) diag(COMPONENT,DIAG_ERROR,"control_msg: un_send: %s",strerror(errno)); } void control_init(const char *path) { if (s_control != -1) diag(COMPONENT,DIAG_FATAL,"control channel is already set"); s_control = un_create(path,0600); if (s_control < 0) diag(COMPONENT,DIAG_FATAL,"un_create: %s",strerror(errno)); dsp_fd_add(s_control,control_msg,NULL); } linux-atm-2.5.1/src/switch/dispatch.c0000644000200100001440000000434207360675444016335 0ustar chasusers/* dispatch.c - Event dispatcher */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "atmd.h" #include "dispatch.h" typedef struct _fd_entry { int fd; void (*callback)(int fd,void *user); void *user; struct _fd_entry *next; } FD_ENTRY; static FD_ENTRY *fd_idle = NULL,*fd_active = NULL; static int fds = 0; static fd_set r_set; void dsp_fd_add(int fd,void (*callback)(int fd,void *user),void *user) { FD_ENTRY *entry; for (entry = fd_idle; entry; entry = entry->next) if (entry->fd == fd) break; if (!entry) for (entry = fd_active; entry; entry = entry->next) if (entry->fd == fd) break; if (entry) { fprintf(stderr,"dsp_fd_add: duplicate fd %d\n",fd); exit(1); } if (fd >= fds) fds = fd+1; FD_SET(fd,&r_set); entry = alloc_t(FD_ENTRY); entry->fd = fd; entry->callback = callback; entry->user = user; entry->next = fd_idle; fd_idle = entry; } void dsp_fd_remove(int fd) { FD_ENTRY **walk,*next; FD_CLR(fd,&r_set); for (walk = &fd_idle; *walk; walk = &(*walk)->next) { if ((*walk)->fd != fd) continue; next = (*walk)->next; free(*walk); *walk = next; return; } for (walk = &fd_active; *walk; walk = &(*walk)->next) { if ((*walk)->fd != fd) continue; next = (*walk)->next; free(*walk); *walk = next; return; } fprintf(stderr,"dsp_fd_remove: fd %d not found\n",fd); exit(1); } void dsp_init(void) { FD_ZERO(&r_set); } void dsp_poll(void) { FD_ENTRY **walk,*next,*entry; fd_set r_poll; int num; while (!fd_active) { r_poll = r_set; num = select(fds+1,&r_poll,NULL,NULL,NULL); if (num < 0) { if (errno != EINTR) perror("select"); continue; } for (walk = &fd_idle; num;) { next = (*walk)->next; if (!FD_ISSET((*walk)->fd,&r_poll)) { walk = &(*walk)->next; continue; } (*walk)->next = fd_active; fd_active = *walk; *walk = next; num--; } } entry = fd_active; fd_active = entry->next; entry->next = fd_idle; fd_idle = entry; entry->callback(entry->fd,entry->user); } linux-atm-2.5.1/src/switch/dispatch.h0000644000200100001440000000142607360675444016342 0ustar chasusers/* dispatch.h - Event dispatcher */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #ifndef DISPATCH_H #define DISPATCH_H /* * Add a file descriptor to probe for reading in the central dispatcher. If * the FD if readable, the callback function is invoked. The dispatcher does * not attempt to read itself. */ void dsp_fd_add(int fd,void (*callback)(int fd,void *user),void *user); /* * Remove a file descriptor from the central dispatcher. This function can be * invoked from within a callback function. */ void dsp_fd_remove(int fd); /* * Initialize the dispatcher. */ void dsp_init(void); /* * Wait until one of the file descriptors becomes readable and execute the * callback function. dsp_poll only handles one event at a time. */ void dsp_poll(void); #endif linux-atm-2.5.1/src/switch/fab.h0000644000200100001440000000461107360675444015272 0ustar chasusers/* fab.h - Generic switch fabric interface */ /* Written 1997,1998 by Werner Almesberger, EPFL DI-ICA */ #ifndef _FAB_H #define _FAB_H #include "proto.h" #define RM_FREE 0 #define RM_IN_TX 1 #define RM_IN_RX 2 #define RM_IN (RM_IN_TX | RM_IN_RX) #define RM_OUT_TX 4 #define RM_OUT_RX 8 #define RM_OUT (RM_OUT_TX | RM_OUT_RX) #define RM_PATH_TX 16 #define RM_PATH_RX 32 #define RM_PATH (RM_PATH_TX | RM_PATH_RX) #define _RM_ANY (RM_IN | RM_OUT | RM_PATH) #define _RM_SHIFT(what) ((what) << 6) #define _RM_UNSHIFT(what) ((what) >> 6) #define RM_RSV(what) (what) #define RM_CLAIM(what) _RM_SHIFT(what) /* --- Provided by fabric control ------------------------------------------ */ /* * fab_option passes an option name/value pair from the configuration file to * the fabric control. fab_option is invoked once for each "option" clause in * the configuration file. All invocations of fab_option occur before * fab_start. */ void fab_option(const char *name,const char *value); /* * Initialize the fabric interface. The fabric control invokes port_notify * whenever a port is added to or removed from the switch. fab_start may * invoke port_notify before returning. port_notify(X,0) most not be invoked * until all fab_ops on that port have completed. */ void fab_start(void (*port_notify)(int number,int up)); /* * Initialize the fabric-specific part of a call structure, i.e. allocate a * fab-specific descriptor and attach it to call->fab. This function is called * before the first fab_op or fab_destroy. */ void fab_init(CALL *call); /* * Destroy the fab-specific part of a call structure. This function is only * invoked once per call and only after any pending fab_op has completed. */ void fab_destroy(CALL *call); /* * Allocate/change resources and set up paths in the switch fabric. fab_op may * be requested to operate on several parts of a call (i.e. the incoming side, * the outgoing side, or the path through the switch fabric) at the same time. * Internal scheduling is left to fab_op. Upon completion, fab_op invokes the * callback function (once). fab_op may invoke the callback function before * returning. Only one fab_op may be in progress at a time for a call, but any * number of concurrent calls can be processed. */ void fab_op(CALL *call,int op,const struct atm_qos *qos, void (*callback)(CALL *call,int cause,void *more,void *user),void *user); #endif linux-atm-2.5.1/src/switch/proto.c0000644000200100001440000001273607360675444015707 0ustar chasusers/* proto.c - Common protocol functions and structures */ /* Written 1997-1998 by Roman Pletka, EPFL-SSC */ /* Modified 1998,2000 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "atmd.h" #include "sig.h" #include "fab.h" #include "proto.h" #define COMPONENT "SWITCH" static const char *as_msgs[] = { "as_catch_null", "as_bind", "as_connect", "as_accept", "as_reject","as_listen", "as_okay", "as_error", "as_indicate", "as_close", "as_itf_notify", "as_modify", "as_identify"}; static const char *cs_states[]= { "cs_invalid", "cs_null", "cs_listening", "cs_connected", "cs_indicated", "cs_called_accepted", "cs_rm_accepted", "cs_rm_accepted2", "cs_caller_error", "cs_rejected", "cs_rejected2", "cs_caller_closing", "cs_called_closed", "cs_called_closed2", "cs_free_rm", "cs_rejecting", "cs_will_close", "cs_call_indicated", "cs_caller_closed" }; static const char *sources[4] = {"CALLER","CALLED","RM"}; CALL *new_call(void) { CALL *call; call = alloc_t(CALL); memset(call,0,sizeof(CALL)); call->state = cs_invalid; fab_init(call); return call; } void free_call(CALL *call) { fab_destroy(call); call->state = cs_invalid; free(call); printf("Call 0x%p killed\n",call); } void new_state(CALL *call,STATE state) { call->state = state; print_state(call); } void send_listen(SIGNALING_ENTITY *sig) { struct atmsvc_msg msg; memset(&msg,0,sizeof(msg)); /* compose the message */ msg.type = as_listen; *(unsigned long *) &msg.vcc = (unsigned long) sig; msg.svc.sas_family = AF_ATMSVC; msg.qos.aal = ATM_AAL5; msg.qos.txtp.traffic_class = msg.qos.rxtp.traffic_class = ATM_ANYCLASS; /* msg.sap ; */ sig_send(sig,&msg); } void send_identify(CALL *call) { struct atmsvc_msg msg; /* this is always sent to caller */ memset(&msg,0,sizeof(msg)); /* compose the message */ msg.type = as_identify; *(unsigned long *) &msg.vcc = (unsigned long) call | CALLER; *(unsigned long *) &msg.listen_vcc = (unsigned long) call->in.sig; /* We have to complete the message (vci,vpi..) */ msg.pvc = call->in.pvc; sig_send(call->in.sig,&msg); } void send_connect(CALL *call) { struct atmsvc_msg msg; /* this is always sent to called */ memset(&msg,0,sizeof(msg)); /* compose the message */ msg.type = as_connect; *(unsigned long *) &msg.vcc = (unsigned long) call | CALLED; /* some kind of magic... */ msg.local = call->in.svc; msg.qos.aal = call->in.qos.aal; /* or should we rather use out.qos ? @@@ */ msg.qos.txtp = call->in.qos.rxtp; msg.qos.rxtp = call->in.qos.txtp; msg.svc = call->out.svc; msg.sap = call->sap; /* we have to give VCI/VPI */ msg.pvc = call->out.pvc; sig_send(call->out.sig,&msg); } void send_reject(CALL *call, int err_code) { struct atmsvc_msg msg; /* this is always sent to caller */ memset(&msg,0,sizeof(msg)); msg.type = as_reject; *(unsigned long *) &msg.vcc = (unsigned long) call | CALLER; msg.reply = err_code; sig_send(call->in.sig,&msg); } void send_reject_not_id(SIGNALING_ENTITY *sig, int err_code) { struct atmsvc_msg msg; /* this is always sent to caller */ memset(&msg,0,sizeof(msg)); msg.type = as_reject; *(unsigned long *) &msg.listen_vcc = (unsigned long) sig; msg.reply = err_code; sig_send(sig,&msg); } void send_close(CALL *call,int dest) { struct atmsvc_msg msg; memset(&msg,0,sizeof(msg)); msg.type = as_close; *(unsigned long *) &msg.vcc = (unsigned long) call | dest; /* dest: CALLER or CALLED */ /* msg.reply = ??!! */ sig_send(dest == CALLER ? call->in.sig : call->out.sig,&msg); } void send_accept(CALL *call) { struct atmsvc_msg msg; memset(&msg,0,sizeof(msg)); msg.type = as_accept; *(unsigned long *) &msg.vcc = (unsigned long) call | CALLER; sig_send(call->in.sig,&msg); } /*****************************************************************************/ /* Demultiplexing with magic number: caller - called - rm */ /*****************************************************************************/ CALL *demux_in(unsigned long *srce, struct atmsvc_msg *msg) { /* The multiplexing informations are in the 3 least significant bits of the call pointer. We can do this, because the compiler aligns memory reservation to pointers with 3 ls-bits = 0. */ *srce = *(unsigned long *) &msg->vcc & 3; return (CALL *) (*(unsigned long *) &msg->vcc & ~3); } /*****************************************************************************/ /* Debugging functions */ /*****************************************************************************/ void print_msg(struct atmsvc_msg *msg, CALL *call,unsigned long source) { printf("Msg '%s' received from %s vcc=%s for call 0x%p, listen: %s\n", as_msgs[msg->type], sources[source], kptr_print(&msg->vcc), call, kptr_print(&msg->listen_vcc)); } void print_state(CALL *call) { printf(" Call 0x%p entered state '%s'\n", call , cs_states[call->state]); } void print_call(CALL *call) { printf(" Call 0x%p in state %s, caller-id:%p, called-id:%p\n", call, cs_states[call->state], call->in.sig, call->out.sig); } linux-atm-2.5.1/src/switch/proto.h0000644000200100001440000000445107360675444015707 0ustar chasusers/* proto.h - Common protocol functions and structures */ /* Written 1997-1998 by Roman Pletka, EPFL SSC */ /* Modified 1998,2000 by Werner Almesberger, EPFL ICA */ #ifndef PROTO_H #define PROTO_H #define CALLER 0 /* We add this to the call pointer. It */ #define CALLED 1 /* helps us to find out the source of the */ #define RM 2 /* message. */ #include #include "atmsap.h" #include "atmd.h" #include "sig.h" typedef enum { /* call states */ cs_invalid, cs_null, cs_listening, cs_connected, cs_indicated, cs_called_accepted, cs_rm_accepted, cs_rm_accepted2, cs_caller_error, cs_rejected, cs_rejected2, cs_caller_closing, cs_called_closed, cs_called_closed2, cs_free_rm, cs_rejecting, cs_will_close, cs_call_indicated, cs_caller_closed } STATE; typedef struct _party { SIGNALING_ENTITY *sig; /* signaling entity */ struct sockaddr_atmpvc pvc; /* itf and CI */ struct sockaddr_atmsvc svc; /* remote address */ struct atm_qos qos; /* QOS parameters */ } PARTY; typedef struct _call { STATE state; PARTY in; /* caller data */ PARTY out; /* called data */ struct atm_sap sap; /* SAP (BHLI and BLLI) */ int error; /* error code for close */ /* --- switch fabric control data -------------------------------------- */ void *fab; } CALL; /* * Note that the fabric may only look at call.in.pvc, call.in.pvc, * call.out.pvc, call.out.qos, and call.fab. All other fields may be set to * arbitrary values by the signaling relay. */ void send_identify(CALL *call); void send_listen(SIGNALING_ENTITY *sig); void send_connect(CALL *call); void send_reject(CALL *call, int err_code); void send_reject_not_id(SIGNALING_ENTITY *sig, int err_code); void send_close(CALL *call,int dest); void send_accept(CALL *call); CALL *new_call(void); void free_call(CALL *call); void new_state(CALL *call,STATE state); CALL *demux_in(unsigned long *srce, struct atmsvc_msg *msg); /* some debugging functions */ void print_msg(struct atmsvc_msg *msg, CALL *call,unsigned long source); void print_state(CALL *call); void print_call(CALL *call); int from_sigd(SIGNALING_ENTITY *sig,struct atmsvc_msg *msg); #endif linux-atm-2.5.1/src/switch/relay.c0000644000200100001440000001731107360675444015652 0ustar chasusers/* switch.c - Handles signaling an ATM switch */ /* Written 1997-1998 by Roman Pletka, EPFL SSC */ /* Modified 1998-2000 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "atmd.h" #include "fab.h" #include "dispatch.h" #include "sig.h" #include "route.h" #include "proto.h" #define COMPONENT "RELAY" #define CONFIG_FILE "switch.conf" extern int yyparse(void); extern FILE *yyin; static void from_fab(CALL *call,int cause,void *more,void *user) { printf("%p: fab returns cause %d\n",call,cause); print_call(call); switch (call->state) { case cs_indicated: if (!cause) { /* send connect to called and enter state cs_rm_accepted */ send_identify(call); send_connect(call); new_state(call,cs_rm_accepted); } else { /* send as_reject to caller and enter state cs_invalid */ send_reject_not_id(call->in.sig,-EREMOTEIO); /* @@@ use cause*/ new_state(call,cs_invalid); free_call(call); } break; case cs_called_accepted: if (!cause) { /* send accept to caller */ send_accept(call); new_state(call,cs_rm_accepted2); } else { /* send reject to caller and close to called */ send_reject(call,-EREMOTEIO); /* @@@ use cause */ send_close(call,CALLED); new_state(call,cs_rejected); } break; case cs_rejecting: if (cause) free_call(call); else { /* free resources */ new_state(call, cs_free_rm); fab_op(call,RM_FREE,NULL,from_fab,NULL); } break; case cs_free_rm: if (cause) printf("Error: RM couldn't free resources\n"); free_call(call); break; default: diag(COMPONENT,DIAG_FATAL,"invalid state for fab callback"); break; } } static void from_caller(CALL *call,struct atmsvc_msg *msg) { switch (call->state) { case cs_rm_accepted2: /* msg from: caller(error,okay) or called(close) */ switch(msg->type) { case as_okay: /* complete the call */ new_state(call, cs_connected); return; case as_error: /* send close called */ send_close(call, CALLED); new_state(call, cs_caller_error); return; default: break; } break; case cs_connected: if (msg->type != as_close) break; send_close(call, CALLER); send_close(call, CALLED); new_state(call, cs_caller_closed); return; case cs_called_closed: switch(msg->type) { case as_error: new_state(call, cs_free_rm); fab_op(call,RM_FREE,NULL,from_fab,NULL); break; case as_okay: send_close(call, CALLER); new_state(call, cs_caller_closing); break; default: break; } break; case cs_called_closed2: case cs_caller_closing: if (msg->type != as_close) break; new_state(call, cs_free_rm); fab_op(call,RM_FREE,NULL,from_fab,NULL); return; default: break; } diag(COMPONENT,DIAG_FATAL,"invalid combination"); } static void from_called(CALL *call,struct atmsvc_msg *msg) { switch (call->state) { case cs_rm_accepted: switch(msg->type) { case as_okay: /* save msg content in call */ call->out.qos = msg->qos; new_state(call,cs_called_accepted); fab_op(call,RM_CLAIM(_RM_ANY),&msg->qos,from_fab,NULL); return; case as_error: send_reject(call,msg->reply); new_state(call,cs_invalid); free_call(call); return; default: break; } break; case cs_rm_accepted2: /* msg from: caller(error,okay) or called(close) */ if (msg->type != as_close) break; /* send close to called */ send_close(call, CALLED); new_state(call, cs_called_closed); return; case cs_rejected: /* wait for close msg from called */ if (msg->type != as_close) break; free_call(call); return; case cs_called_accepted: if (msg->type != as_close) break; /* send reject to caller and send close to called */ send_reject(call, msg->reply); send_close(call,CALLED); new_state(call,cs_rejecting); return; case cs_connected: if (msg->type != as_close) break; send_close(call, CALLER); send_close(call, CALLED); new_state(call, cs_called_closed2); return; case cs_caller_error: case cs_caller_closed: if (msg->type != as_close) break; new_state(call, cs_free_rm); fab_op(call,RM_FREE,NULL,from_fab,NULL); return; default: break; } diag(COMPONENT,DIAG_FATAL,"invalid combination"); } static void from_listening(SIGNALING_ENTITY *sig,struct atmsvc_msg *msg) { SIGNALING_ENTITY *out; CALL *call; /* try to find a route */ out = find_route(&msg->svc,&msg->local,&msg->qos); if (!out) { send_reject_not_id(sig,-EHOSTUNREACH); return; } /* now work starts... */ call = new_call(); /* set up caller side */ call->in.sig = sig; if (atmpvc_addr_in_use(msg->pvc)) call->in.pvc = msg->pvc; else { call->in.pvc.sap_addr.itf = sig->itf; call->in.pvc.sap_addr.vpi = ATM_VPI_ANY; call->in.pvc.sap_addr.vci = ATM_VCI_ANY; } call->in.pvc.sap_family = AF_ATMPVC; call->in.svc = msg->svc; call->in.qos = msg->qos; /* set up what little we know about the called side */ call->out.sig = out; call->out.pvc.sap_family = AF_ATMPVC; call->out.pvc.sap_addr.itf = out->itf; call->out.pvc.sap_addr.vpi = ATM_VPI_ANY; call->out.pvc.sap_addr.vci = ATM_VCI_ANY; call->out.svc = msg->local; call->sap = msg->sap; new_state(call,cs_indicated); fab_op(call,RM_RSV(_RM_ANY),&msg->qos,from_fab,NULL); /* * This is bogus. txtp and rxtp are exchanged on the input and the output * side. This can be fixed by defining txtp/rxtp as meaning "forward" and * "backward", respectively, in the switch. I guess that's what I'll do. */ } int from_sigd(SIGNALING_ENTITY *sig,struct atmsvc_msg *msg) { if (msg->type == as_indicate) from_listening(sig,msg); else { CALL *call; unsigned long source; call = demux_in(&source,msg); print_msg(msg,call,source); print_call(call); switch (source) { case CALLER: from_caller(call,msg); break; case CALLED: from_called(call,msg); break; default: diag(COMPONENT,DIAG_FATAL,"unrecognized source %d\n",source); } } return 0; } /*****************************************************************************/ /* M A I N */ /*****************************************************************************/ static void usage(const char *name) { fprintf(stderr,"usage: %s [ -b ] [ -c config_file ] [ -d ]\n",name); exit(1); } int main(int argc, char *argv[]) { const char *config_file; int background; int c; background = 0; config_file = CONFIG_FILE; while ((c = getopt(argc,argv,"bc:d")) != EOF) switch (c) { case 'b': background = 1; break; case 'c': config_file = optarg; break; case 'd': set_verbosity(NULL,DIAG_DEBUG); break; default: usage(argv[0]); } if (argc != optind) usage(argv[0]); dsp_init(); /* initialize dispatcher */ /* * Later: call fab_something to scan all ports and launch atmsigds. * For now, everything is handled by static configuration. */ if (!(yyin = fopen(config_file,"r"))) diag(COMPONENT,DIAG_FATAL,"%s: %s",config_file,strerror(errno)); if (yyparse()) diag(COMPONENT,DIAG_FATAL,"Error in config file. - Aborting."); fab_start(sig_notify); if (background) { pid_t pid; pid = fork(); if (pid < 0) diag(COMPONENT,DIAG_FATAL,"fork: %s",strerror(errno)); if (pid) { diag(COMPONENT,DIAG_DEBUG,"Backgrounding (PID %d)",pid); exit(0); } } while (1) dsp_poll(); } linux-atm-2.5.1/src/switch/route.c0000644000200100001440000000417407360675444015677 0ustar chasusers/* route.c - ATM switch routing database */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include "atm.h" #include "atmd.h" #include "route.h" #define COMPONENT "ROUTE" typedef struct _route { struct sockaddr_atmsvc addr; int mask; SIGNALING_ENTITY *sig; struct _route *next; } ROUTE; static ROUTE *routes = NULL; void put_route(struct sockaddr_atmsvc *addr,int addr_mask,SIGNALING_ENTITY *sig) { ROUTE *route; for (route = routes; route; route = route->next) if (route->mask == addr_mask && (!addr_mask || atm_equal((struct sockaddr *) addr, (struct sockaddr *) &route->addr,addr_mask, AXE_PRVOPT | (addr_mask == INT_MAX ? 0 : AXE_WILDCARD)))) diag(COMPONENT,DIAG_FATAL,"duplicate route"); route = alloc_t(ROUTE); if (addr) route->addr = *addr; route->mask = addr_mask; route->sig = sig; route->next = routes; routes = route; } void get_routes(SIGNALING_ENTITY *sig, void (*callback)(struct sockaddr_atmsvc *addr,int addr_mask,void *user), void *user) { ROUTE *route; for (route = routes; route; route = route->next) if (route->sig == sig) callback(&route->addr,route->mask,user); } static SIGNALING_ENTITY *dfl_find_route(struct sockaddr_atmsvc *from, struct sockaddr_atmsvc *to,struct atm_qos *qos) { ROUTE *best,*route; int best_len; best = NULL; best_len = -1; for (route = routes; route; route = route->next) if (route->mask > best_len && (!route->mask || atm_equal((struct sockaddr *) to,(struct sockaddr *) &route->addr, route->mask, AXE_PRVOPT | (route->mask == INT_MAX ? 0 : AXE_WILDCARD)))) { if (route->mask == INT_MAX) return route->sig; best_len = route->mask; best = route; } return best->sig; } static void dfl_route_sig(SIGNALING_ENTITY *sig,struct sockaddr_atmpvc *pvc, int up) { /* do nothing */ } SIGNALING_ENTITY *(*find_route)(struct sockaddr_atmsvc *from, struct sockaddr_atmsvc *to,struct atm_qos *qos) = &dfl_find_route; void (*route_sig)(SIGNALING_ENTITY *sig,struct sockaddr_atmpvc *pvc,int up) = &dfl_route_sig; linux-atm-2.5.1/src/switch/route.h0000644000200100001440000000233107360675444015675 0ustar chasusers/* route.h - ATM switch routing database */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #ifndef ROUTE_H #define ROUTE_H #include "atm.h" #include "sig.h" /* * PUT_ROUTE is invoked during configuration time to add static routes. */ void put_route(struct sockaddr_atmsvc *addr,int addr_mask, SIGNALING_ENTITY *sig); /* * GET_ROUTES can be invoked to obtain static routes of a signaling entity. A * non-default routing mechanism may call GET_ROUTES from ROUTE_SIG to retrieve * pre-configured static routes. */ void get_routes(SIGNALING_ENTITY *sig, void (*callback)(struct sockaddr_atmsvc *addr,int addr_mask,void *user), void *user); /* * FIND_ROUTE obtains the signaling entity for calls from FROM to TO with the * QoS QOS. The default implementation only considers FROM for its routing * decisions. */ extern SIGNALING_ENTITY *(*find_route)(struct sockaddr_atmsvc *from, struct sockaddr_atmsvc *to,struct atm_qos *qos); /* * ROUTE_SIG is invoked whenever a signaling entity becomes operational * (UP != 0) or when it is shut down (UP == 0). This can be used to initate * routing protocol activities. */ extern void (*route_sig)(SIGNALING_ENTITY *sig,struct sockaddr_atmpvc *pvc, int up); #endif linux-atm-2.5.1/src/switch/sig.c0000644000200100001440000000731407360675444015322 0ustar chasusers/* sig.c - signaling entity handling */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "atmd.h" #include "dispatch.h" #include "proto.h" #include "sig.h" #include "route.h" #include "fab.h" #define COMPONENT "SIG" static SIGNALING_ENTITY *entities = NULL; static int sig_check_listen(SIGNALING_ENTITY *sig,struct atmsvc_msg *msg) { return msg->type == as_okay ? 0 : msg->reply; } static int sig_recv(SIGNALING_ENTITY *sig, int (*handler)(SIGNALING_ENTITY *sig,struct atmsvc_msg *msg)) { char buf[sizeof(struct atmsvc_msg)+1]; int len; len = read(sig->s,buf,sizeof(buf)); if (len == sizeof(struct atmsvc_msg)) return handler(sig,(struct atmsvc_msg *) buf); if (len < 0) diag(COMPONENT,DIAG_ERROR,"read isp msg: %s",strerror(errno)); else diag(COMPONENT,DIAG_ERROR,"bad isp msg: %d != %d",len, sizeof(struct atmsvc_msg)); return -1; } static void sig_data(int fd,void *sig) { (void) sig_recv(sig,from_sigd); } SIGNALING_ENTITY *sig_vc(const char *command,const char *path,int itf) { SIGNALING_ENTITY *sig; sig = alloc_t(SIGNALING_ENTITY); sig->command = command; sig->path = path; sig->pvc.sap_addr.itf = -1; sig->itf = itf; sig->next = entities; entities = sig; return sig; } void sig_send(SIGNALING_ENTITY *sig,struct atmsvc_msg *msg) { int len; len = write(sig->s,msg,sizeof(*msg)); if (len == sizeof(*msg)) return; if (len < 0) diag(COMPONENT,DIAG_ERROR,"write isp msg: %s",strerror(errno)); else diag(COMPONENT,DIAG_ERROR,"bad isp msg write: %d != %d",len, sizeof(*msg)); } static void up_callback(CALL *call,int cause,void *more,void *user) { SIGNALING_ENTITY *sig = user; int error; if (cause) { diag(COMPONENT,DIAG_ERROR,"up_callback: error (cause %d)",cause); return; } if (sig->command) system(sig->command); sig->s = un_attach(sig->path); if (sig->s < 0) diag(COMPONENT,DIAG_FATAL,"un_attach %s: %s",sig->path,strerror(errno)); send_listen(sig); error = sig_recv(sig,sig_check_listen); if (error) diag(COMPONENT,DIAG_FATAL,"listen failed: %s",strerror(error)); dsp_fd_add(sig->s,sig_data,sig); route_sig(sig,&sig->call->out.pvc,1); } static void remove_entity(SIGNALING_ENTITY *sig) { struct atmsvc_msg msg; msg.type = as_terminate; sig_send(sig,&msg); dsp_fd_remove(sig->s); (void) close(sig->s); } static void down_callback(CALL *call,int cause,void *more,void *user) { if (cause) diag(COMPONENT,DIAG_ERROR,"down_callback: error (cause %d)",cause); } void sig_notify(int itf,int up) { SIGNALING_ENTITY *sig; for (sig = entities; sig; sig = sig->next) if (sig->itf == itf) break; if (!sig) { diag(COMPONENT,DIAG_ERROR,"%s notification for unknown interface %d", up ? "up" : "down",itf); return; } if (sig->pvc.sap_addr.itf == -1) return; if (up) { struct atm_qos qos; sig->call = new_call(); sig->call->in.pvc = sig->pvc; sig->call->out.pvc.sap_addr.itf = sig->itf; sig->call->out.pvc.sap_addr.vpi = 0; sig->call->out.pvc.sap_addr.vci = 5; memset(&qos,0,sizeof(qos)); qos.txtp.traffic_class = qos.rxtp.traffic_class = ATM_UBR; fab_op(sig->call,RM_CLAIM(_RM_ANY),&qos,up_callback,sig); } else { route_sig(sig,&sig->call->out.pvc,0); remove_entity(sig); fab_op(sig->call,RM_FREE,NULL,down_callback,NULL); free_call(sig->call); } } void sig_start_all(void (*port_notify)(int number,int up)) { SIGNALING_ENTITY *sig; for (sig = entities; sig; sig = sig->next) { sig->call = NULL; up_callback(NULL,0,NULL,sig); } } linux-atm-2.5.1/src/switch/sig.h0000644000200100001440000000171307360675444015324 0ustar chasusers/* sig.h - signaling entity handling */ /* Written 1998-2000 by Werner Almesberger, EPFL ICA */ #ifndef SIG_H #define SIG_H #include #include typedef struct _signaling_entity { int s; /* socket */ const char *command; /* command to start sigd; NULL if none */ const char *path; /* path to the Unix domain socket */ struct sockaddr_atmpvc pvc; /* signaling VC; itf = -1 if not used */ short itf; /* interface we manage */ struct _signaling_entity *next; struct _call *call; /* used to route VCI 5 to signaling */ } SIGNALING_ENTITY; SIGNALING_ENTITY *sig_vc(const char *command,const char *path,int itf); void sig_send(SIGNALING_ENTITY *sig,struct atmsvc_msg *msg); void sig_notify(int itf,int up); /* * sig_start can be called by fab_start if fab_start has no knowledge of * ports, e.g. if ports are virtual and pre-configured. */ void sig_start_all(void (*port_notify)(int number,int up)); #endif linux-atm-2.5.1/src/switch/swc.c0000644000200100001440000000576507360675444015344 0ustar chasusers/* swc.c - User switch control */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include "swc.h" static void dialog(int s,SWC_MSG *msg) { int size; size = write(s,msg,sizeof(*msg)); if (size < 0) { perror("write"); exit(1); } if (size != sizeof(*msg)) { fprintf(stderr,"bad write: %d != %d\n",size,sizeof(*msg)); exit(1); } size = read(s,msg,sizeof(*msg)); if (size < 0) { perror("read"); exit(1); } if (size != sizeof(*msg)) { fprintf(stderr,"bad read: %d != %d\n",size,sizeof(*msg)); exit(1); } } static void usage(const char *name) { fprintf(stderr,"usage: %s \n",name); fprintf(stderr," commands: show\n"); fprintf(stderr," add []\n"); fprintf(stderr," del \n"); exit(1); } int main(int argc,const char **argv) { char buffer[MAX_ATM_ADDR_LEN+1]; SWC_MSG msg; int s; if (argc < 3) usage(*argv); s = un_attach(argv[1]); if (s < 0) { perror(argv[1]); return 1; } memset(&msg,0,sizeof(msg)); if (!strcmp(argv[2],"show")) { if (argc != 3) usage(*argv); msg.type = smt_get; msg.n = 0; while (1) { dialog(s,&msg); if (msg.type != smt_get) { fprintf(stderr,"unexpeced message type %d != %d\n",msg.type, smt_get); } if (msg.n < 0) return 0; if (msg.in.sap_addr.vci != ATM_VCI_UNSPEC) printf("VC "); else { printf("VP "); msg.out.sap_addr.vci = ATM_VCI_UNSPEC; } if (atm2text(buffer,sizeof(buffer),(struct sockaddr *) &msg.in, A2T_PRETTY) < 0) strcpy(buffer,""); printf("%s %c-%c ",buffer,msg.qos.rxtp.traffic_class ? '<' : '-', msg.qos.txtp.traffic_class ? '>' : '-'); if (atm2text(buffer,sizeof(buffer),(struct sockaddr *) &msg.out, A2T_PRETTY) < 0) strcpy(buffer,""); printf("%s\n",buffer); msg.n++; } } if (!strcmp(argv[2],"add")) { msg.type = smt_add; msg.qos.txtp.traffic_class = msg.qos.rxtp.traffic_class = ATM_UBR; msg.qos.aal = ATM_AAL5; if (argc == 6) { if (text2qos(argv[5],&msg.qos,0) < 0) { fprintf(stderr,"invalid QOS specification: %s\n",argv[5]); return 1; } } else if (argc != 5) usage(*argv); } else if (!strcmp(argv[2],"del")) { if (argc != 5) usage(*argv); msg.type = smt_del; } else usage(*argv); if (text2atm(argv[3],(struct sockaddr *) &msg.in,sizeof(msg.in), T2A_PVC | T2A_UNSPEC | T2A_NAME) < 0) { fprintf(stderr,"invalid PVC address: %s\n",argv[3]); return 1; } if (text2atm(argv[4],(struct sockaddr *) &msg.out,sizeof(msg.out), T2A_PVC | T2A_UNSPEC | T2A_NAME) < 0) { fprintf(stderr,"invalid PVC address: %s\n",argv[4]); return 1; } dialog(s,&msg); if (msg.n < 0) { fprintf(stderr,"%s\n",strerror(-msg.n)); return 1; } return 0; } linux-atm-2.5.1/src/switch/swc.h0000644000200100001440000000125107360675444015333 0ustar chasusers/* swc.h - Switch control interface */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #ifndef SWC_H #define SWC_H #include typedef enum { smt_invalid, /* catch uninitialized variables */ smt_get, /* get/return n-th entry */ smt_add, /* add one-way VC */ smt_del /* remove one-way VC */ } SWC_MSG_TYPE; typedef struct swc_msg { SWC_MSG_TYPE type; /* message type */ int n; /* index (for tmt_get) and error code (for tmt_get, tmt_set, tmt_del) */ struct sockaddr_atmpvc in; struct sockaddr_atmpvc out; struct atm_qos qos; /* currently unused */ } SWC_MSG; extern void control_init(const char *path); #endif linux-atm-2.5.1/src/switch/debug/0000755000200100001440000000000011304770377015447 5ustar chasuserslinux-atm-2.5.1/src/switch/debug/CVS/0000755000200100001440000000000011304767140016074 5ustar chasuserslinux-atm-2.5.1/src/switch/debug/CVS/Root0000644000200100001440000000007411304767140016743 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/switch/debug/CVS/Repository0000644000200100001440000000003311304767140020172 0ustar chasuserslinux-atm/src/switch/debug linux-atm-2.5.1/src/switch/debug/CVS/Entries0000644000200100001440000000046511304767140017435 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:31 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /Makefile.am/1.2.2.1.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /README/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /debug.c/1.2.2.1/Tue Sep 27 23:16:26 2005//TV2_5_1 /demo/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 D linux-atm-2.5.1/src/switch/debug/CVS/Tag0000644000200100001440000000001011304767140016521 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/switch/debug/.cvsignore0000644000200100001440000000005210666025267017445 0ustar chasusersMakefile Makefile.in .deps .libs sw_debug linux-atm-2.5.1/src/switch/debug/Makefile-0.790000644000200100001440000000032107360675444017504 0ustar chasusersLIBS=-lsw -latmd -L.. LIBDEPS=../../lib/libatmd.a ../libsw.a INCLUDES=-I../../qgen OBJS=debug.o PGMS=sw_debug include ../Rules.make sw_debug: $(OBJS) $(CC) $(LDFLAGS) -o sw_debug $(OBJS) $(LIBS) $(LDLIBS) linux-atm-2.5.1/src/switch/debug/Makefile.am0000644000200100001440000000044711235645151017502 0ustar chasusersnoinst_PROGRAMS = sw_debug INCLUDES = -I$(srcdir)/../../q2931 sw_debug_SOURCES = debug.c sw_debug_XTRAS = $(top_builddir)/src/switch/libsw.a \ $(top_builddir)/src/lib/libatm.la sw_debug_LDADD = $(sw_debug_XTRAS) -lfl sw_debug_DEPENDENCIES = $(sw_debug_XTRAS) EXTRA_DIST = demo README linux-atm-2.5.1/src/switch/debug/README0000644000200100001440000000666707360675444016354 0ustar chasusersThis is a little sample configuration with two terminals connected to a switch. All of the network elements are on the same host and atmtcp takes care of the the real kernel with multiple terminals on the same machine. At least not yet.) Note that no data transfer or such is possible yet. This is only signaling. This is the example setup: +-------+ +------+ +-------+ | isp | |switch| | isp | |atmsigd|-----| |-----|atmsigd| +-------+ +------+ +-------+ Preparation (only once): # atmtcp virtual 1 listen-bg 8412 # atmtcp virtual 2 connect localhost 8412 bg # atmtcp virtual 3 listen-bg 8434 # atmtcp virtual 4 connect localhost 8434 bg # atmaddr -a 1 +123 Start the "network" (no privileges required): % atmsigd -b 1.0.105 /tmp/1 % atmsigd -b -m switch 2.0.105 /tmp/2 % atmsigd -b -m switch 3.0.105 /tmp/3 % atmsigd -b 4.0.105 /tmp/4 % ./sw_debug -d % isp /tmp/4 <4.isp % isp /tmp/1 <1.isp In more detail: +------------------------------------------+ | ./sw_debug | +------------------------------------------+ | | /tmp/2 /tmp/3 | | +----------------------------------+ +----------------------------------+ | atmsigd -m switch 2.0.105 /tmp/2 | | atmsigd -m switch 3.0.105 /tmp/3 | +----------------------------------+ +----------------------------------+ | | itf 2 | | | +--------------------------------------------+ | | atmtcp virtual 2 connect localhost 8412 bg | | +--------------------------------------------+ | | atmtcp virtual 1 listen-bg 8412 | | +--------------------------------------------+ itf 3 | | itf 1 +--------------------------------------------+ | | atmtcp virtual 3 listen-bg 8434 | | +--------------------------------------------+ | | atmtcp virtual 4 connect localhost 8434 bg | | +--------------------------------------------+ | | | itf 4 | | +------------------------+ +------------------------+ | atmsigd 1.0.105 /tmp/1 | | atmsigd 4.0.105 /tmp/4 | +------------------------+ +------------------------+ | | /tmp/1 /tmp/4 | | +-------------------+ +-------------------+ | isp /tmp/1 <1.isp | | isp /tmp/4 <4.isp | +-------------------+ +-------------------+ You can use the script "demo" to run this setup. You need to build the switch library and the debug switch first: cd ..; make cd debug; make --- switch.conf -------------------------------------------------------------- socket /tmp/2 { itf 2 2.0.5 route +1 } socket /tmp/3 { itf 3 2.0.5 default } --- 1.isp -------------------------------------------------------------------- send connect vcc=1 svc=+234 local=+123 qos=ubr,aal5 receive okay vcc=1 send close vcc=1 receive close vcc=1 --- 4.isp -------------------------------------------------------------------- send listen vcc=1 svc=+234 qos=ubr,aal5 receive okay vcc=1 receive indicate listen_vcc=1 send accept vcc=2 listen_vcc=1 receive okay vcc=2 receive close vcc=2 send close vcc=2 linux-atm-2.5.1/src/switch/debug/debug.c0000644000200100001440000000565710316351312016700 0ustar chasusers/* debug.c - Simple debugging "switch" */ /* Written 1998-2000 by Werner Almesberger, EPFL DI-ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include "uni.h" #include "../fab.h" #define COMPONENT "FAB(debug)" #define PRV(call) ((FAB *) (call)->fab) typedef struct _fab { CALL *next; /* relay.c may not keep track of calls, but WE are */ } FAB; static CALL *calls; void fab_option(const char *name,const char *value) { diag(COMPONENT,DIAG_FATAL,"unrecognized fabric option \"%s\"",name); } void fab_start(void (*port_notify)(int number,int up)) { sig_start_all(port_notify); } void fab_init(CALL *call) { FAB *fab; fab = alloc_t(FAB); call->fab = fab; fab->next = calls; calls = call; } void fab_destroy(CALL *call) { CALL **walk; for (walk = &calls; *walk; walk = &PRV(*walk)->next) if (*walk == call) break; if (!*walk) diag(COMPONENT,DIAG_FATAL,"fab_destroy: call %p not found",call); *walk = PRV(call)->next; free(PRV(call)); call->fab = NULL; } /* * This function is rather simple-minded, because it only considers a single * port. Should go directly to the fabric control. @@@ */ static int vci_exists(int vci,int threshold) { CALL *call; int found; found = 0; for (call = calls; call; call = PRV(call)->next) if (call->in.pvc.sap_addr.vci == vci || call->out.pvc.sap_addr.vci == vci) if (++found > threshold) return 1; return 0; } static int check_ci(struct sockaddr_atmpvc *pvc) { int vci; if (pvc->sap_addr.vpi == ATM_VPI_ANY) pvc->sap_addr.vpi = 0; /* that was easy :-) */ for (vci = ATM_NOT_RSV_VCI; pvc->sap_addr.vci == ATM_VCI_ANY; vci++) if (!vci_exists(vci,0)) pvc->sap_addr.vci = vci; return !vci_exists(vci,1); } void fab_op(CALL *call,int op,const struct atm_qos *qos, void (*callback)(CALL *call,int cause,void *more,void *user),void *user) { diag(COMPONENT,DIAG_INFO,"fab_op%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", !op ? " FREE" : "",op & RM_RSV(_RM_ANY) ? " RM_RSV:" : "", op & RM_IN_TX ? " IN_TX" : "",op & RM_IN_RX ? " IN_RX" : "", op & RM_OUT_TX ? " OUT_TX" : "",op & RM_OUT_RX ? " OUT_RX" : "", op & RM_PATH_TX ? " PATH_TX" : "",op & RM_PATH_RX ? " PATH_RX" : "", op & RM_CLAIM(_RM_ANY) ? " RM_CLAIM:" : "", op & _RM_SHIFT(RM_IN_TX) ? " IN_TX" : "", op & _RM_SHIFT(RM_IN_RX) ? " IN_RX" : "", op & _RM_SHIFT(RM_OUT_TX) ? " OUT_TX" : "", op & _RM_SHIFT(RM_OUT_RX) ? " OUT_RX" : "", op & _RM_SHIFT(RM_PATH_TX) ? " PATH_TX" : "", op & _RM_SHIFT(RM_PATH_RX) ? " PATH_RX" : ""); if (op & (RM_RSV(RM_IN) | RM_CLAIM(RM_IN))) if (!check_ci(&call->in.pvc)) { callback(call,ATM_CV_CI_UNAVAIL,NULL,user); return; } if (op & (RM_RSV(RM_OUT) | RM_CLAIM(RM_OUT))) if (!check_ci(&call->out.pvc)) { callback(call,ATM_CV_CI_UNAVAIL,NULL,user); return; } callback(call,0,NULL,user); } linux-atm-2.5.1/src/switch/debug/demo0000755000200100001440000000212307360675444016325 0ustar chasusers#!/usr/bin/perl @cmd = ("xterm -fn 5x7 -geometry +25+400", "xterm -fn 5x7 -geometry +25+200", "xterm -fn 5x7 -geometry +450+200", "xterm -fn 5x7 -geometry +450+400", "xterm -fn 5x7 -geometry 132x24+110+0", "xterm -fn 5x7 -geometry +475+600", "xterm -fn 5x7 -geometry +0+600"); open(IN,"README") || die "open README: $!"; while () { if (/^---\s*(\S+)\s*/) { if ($mode eq "F") { close OUT || die "close: $!"; } open(OUT,">$1") || die "create $1: $!"; $mode = "F"; next; } if (/^Preparation/) { $mode = "P"; next; } if (/^Start/) { $mode = "S"; next; } if ($mode eq "P") { chop; $_ .= " &" if /-l/; push(@do,$') if /^\s*#\s*/; next; } if ($mode eq "S") { chop; next unless /^\s*%\s*/; $c = $'; $c =~ s/-b/-d -l stderr/; $c =~ s/isp/isp -v/; $o = $c; $c = "sh -c \"$c; sleep 300\"" if $c =~ /isp/; push(@do,shift(@cmd)." -T '$o' -e $c &"); next; } if ($mode eq "F") { print OUT $_ || die "write: $!"; } } if ($mode eq "F") { close OUT || die "close: $!"; } for (@do) { print "$_\n"; system($_); sleep(1); } linux-atm-2.5.1/src/switch/debug/Makefile.in0000644000200100001440000003423211304770377017520 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = sw_debug$(EXEEXT) subdir = src/switch/debug DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_sw_debug_OBJECTS = debug.$(OBJEXT) sw_debug_OBJECTS = $(am_sw_debug_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(sw_debug_SOURCES) DIST_SOURCES = $(sw_debug_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ INCLUDES = -I$(srcdir)/../../q2931 sw_debug_SOURCES = debug.c sw_debug_XTRAS = $(top_builddir)/src/switch/libsw.a \ $(top_builddir)/src/lib/libatm.la sw_debug_LDADD = $(sw_debug_XTRAS) -lfl sw_debug_DEPENDENCIES = $(sw_debug_XTRAS) EXTRA_DIST = demo README all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/switch/debug/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/switch/debug/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list sw_debug$(EXEEXT): $(sw_debug_OBJECTS) $(sw_debug_DEPENDENCIES) @rm -f sw_debug$(EXEEXT) $(LINK) $(sw_debug_OBJECTS) $(sw_debug_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/switch/tcp/0000755000200100001440000000000011304770377015147 5ustar chasuserslinux-atm-2.5.1/src/switch/tcp/CVS/0000755000200100001440000000000011304767140015574 5ustar chasuserslinux-atm-2.5.1/src/switch/tcp/CVS/Root0000644000200100001440000000007411304767140016443 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/switch/tcp/CVS/Repository0000644000200100001440000000003111304767140017670 0ustar chasuserslinux-atm/src/switch/tcp linux-atm-2.5.1/src/switch/tcp/CVS/Entries0000644000200100001440000000047011304767140017131 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:31 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /Makefile.am/1.2.2.1.2.1/Mon Aug 3 20:36:57 2009//TV2_5_1 /README/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /mkfiles/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /tcpsw.c/1.2.2.1/Tue Sep 27 23:16:26 2005//TV2_5_1 D linux-atm-2.5.1/src/switch/tcp/CVS/Tag0000644000200100001440000000001011304767140016221 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/switch/tcp/.cvsignore0000644000200100001440000000005010666025267017143 0ustar chasusersMakefile Makefile.in .deps .libs sw_tcp linux-atm-2.5.1/src/switch/tcp/Makefile-0.790000644000200100001440000000031407360675444017206 0ustar chasusersLIBS=-lsw -latmd -L.. LIBDEPS=../../lib/libatmd.a ../libsw.a INCLUDES=-I../../qgen OBJS=tcpsw.o PGMS=sw_tcp include ../Rules.make sw_tcp: $(OBJS) $(CC) $(LDFLAGS) -o sw_tcp $(OBJS) $(LIBS) $(LDLIBS) linux-atm-2.5.1/src/switch/tcp/Makefile.am0000644000200100001440000000042711235645151017200 0ustar chasusersnoinst_PROGRAMS = sw_tcp INCLUDES = -I$(srcdir)/../../q2931 sw_tcp_SOURCES = tcpsw.c sw_tcp_XTRAS = $(top_builddir)/src/switch/libsw.a \ $(top_builddir)/src/lib/libatm.la sw_tcp_LDADD = $(sw_tcp_XTRAS) -lfl sw_tcp_DEPENDENCIES = $(sw_tcp_XTRAS) EXTRA_DIST = mkfiles README linux-atm-2.5.1/src/switch/tcp/README0000644000200100001440000001075607360675444016046 0ustar chasusersThe following sequence works. Figuring out why is left as an exercise to the reader ;-) Commands: lrcpc4:~/w/atm/switch/tcp# ./sw_tcp -b -d lrcpc4:~# atmtcp virtual 1 switch localhost 1 bg lrcpc4:~# atmtcp virtual 2 switch localhost 2 bg lrcpc4:~# atmaddr -a 2 +1 lrcpc4:~/w/atm/switch/tcp# atmsigd -b -c 2.conf lrcpc15:~# atmtcp virtual 1 switch lrcpc4 3 bg lrcpc15:~# atmaddr -a 1 +2 lrcpc15:~/w/atm/switch/tcp# atmsigd -b -c 1.conf lrcpc15:~$ ttcp_atm -r -a lrcpc4:~$ ttcp_atm -t -a +2 --- switch.conf --------------------------------------------------------------- command "atmsigd -c s1.conf -b -m switch 1.0.100 /tmp/1" socket /tmp/1 { itf 2 1.0.100 route +1 } command "atmsigd -c s2.conf -b -m switch 1.0.101 /tmp/2" socket /tmp/2 { itf 3 1.0.101 default } --- s1.conf ------------------------------------------------------------------- debug log stderr debug level warn sig level debug sig vpci 0 itf 2 --- s2.conf ------------------------------------------------------------------- debug log stderr debug level warn sig level debug sig vpci 0 itf 3 --- 1.conf -------------------------------------------------------------------- debug log stderr debug level warn sig level debug io vc 1.0.5 sig vpci 0 itf 1 --- 2.conf -------------------------------------------------------------------- debug log stderr debug level warn sig level debug io vc 2.0.5 sig vpci 0 itf 2 --- - The following picture shows a simplified view of the configuration. Note that the command-line options have been choosen for clarity (and minor details like the vpci settings in the configuration file have been omitted) and are not identical with the ones given above. +-----------------------------------------------------------------------+ | ./sw_tcp | | | | +---------+ +----------------------------------+ 1.0.100 | | | |--/tmp/1--| atmsigd -m switch 1.0.100 /tmp/1 |---+ | | | | +----------------------------------+ | | | | | +-----+ | | | | +----------------------------------+ | | | | | |--/tmp/2--| atmsigd -m switch 1.0.101 /tmp/2 |---+ | | | +---------+ +----------------------------------+ 1.0.101 | | | | | | | | +--------------+ | | | | | | | | | | control | | | | | +----------------------| | itf 1 | | | | | | | | | | | | 2.0.5 <--> 1.0.100 | | | | | 3.0.5 <--> 1.0.101 | 2 3 1 | | | | +--------------+ | | | | | | | | +-------------------------------|-----|----|------------------------|---+ | | | | +------------+ | | | | | | | +-----------------------------------+ | +-----------------------------------+ |atmtcp virtual 2 switch localhost 2| | |atmtcp virtual 1 switch localhost 1| +-----------------------------------+ | +-----------------------------------+ | | itf 2 (+1) +---- - - - - - ----+ | | +---------------+ | on lrcpc15: | | atmsigd 2.0.5 | | +---------------+ | | | | +--------------------------------+ | |atmtcp virtual 1 switch lrcpc4 3| | +--------------------------------+ | | itf 1 (+2) | | +---------------+ | atmsigd 1.0.5 | | +---------------+ In order to control the switch with swc, add the line control to switch.conf, e.g. control /var/run/tcpswc Then invoke swc as follows: swc show To add VCs, use add .. , to add VPs, use add ..? linux-atm-2.5.1/src/switch/tcp/mkfiles0000755000200100001440000000064607360675444016543 0ustar chasusers#!/usr/bin/perl open(IN,"README") || die "open README: $!"; while () { if (/^---\s*(\S+)\s*/) { if ($writing) { close OUT || die "close: $!"; $writing = 0; } next if $1 eq "-"; open(OUT,">$1") || die "create $1: $!"; $writing = 1; next; } print OUT $_ || die "write: $!" if $writing; } close OUT || die "close: $!" if $writing; for (@do) { print "$_\n"; system($_); sleep(1); } linux-atm-2.5.1/src/switch/tcp/tcpsw.c0000644000200100001440000002672010316351312016444 0ustar chasusers/* tcpsw.c - ATMTCP switch */ /* Written 1998 by Werner Almesberger, EPFL ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include "uni.h" #include "../fab.h" #include "../dispatch.h" #include "../swc.h" #define COMPONENT "FAB(tcp)" #define PRV(call) ((FAB *) (call)->fab) #define MAX_VCI 1024 #define PORT 2812 /* @@@ should merge with atmtcp.c */ #define MAX_PACKET (ATM_MAX_AAL5_PDU+sizeof(struct atmtcp_hdr)) #define BUFFER_SIZE (MAX_PACKET*2) typedef struct _table { struct _link *out; /* output port */ uint16_t in_vpi; /* input VPI */ int in_vci; /* input VCI (may be ATM_VCI_ANY) */ uint16_t out_vpi; /* output VPI */ uint16_t out_vci; /* output VCI */ struct _table *next; } TABLE; typedef struct _link { enum { id_none,id_set,id_reval } state; int id; /* switch port ID */ int fd; int len; /* length of data in the buffer */ char buffer[BUFFER_SIZE]; TABLE *table; /* switching table */ struct _link *next; } LINK; typedef struct _fab { int active; /* non-zero if there's an entry in the fabric */ CALL *next; /* relay.c may not keep track of calls, but WE are */ } FAB; static CALL *calls = NULL; static LINK *links = NULL; static void (*notify)(int number,int up); static LINK *find_link(int id) { LINK *lnk; for (lnk = links; lnk; lnk = lnk->next) if (lnk->state == id_set && lnk->id == id) break; return lnk; } static LINK *route(LINK *in,struct atmtcp_hdr *hdr) { TABLE *entry; for (entry = in->table; entry; entry = entry->next) if (ntohs(hdr->vpi) == entry->in_vpi && (entry->in_vci == ATM_VCI_UNSPEC || ntohs(hdr->vci) == entry->in_vci)) { hdr->vpi = htons(entry->out_vpi); if (entry->in_vci != ATM_VCI_UNSPEC) hdr->vci = htons(entry->out_vci); return entry->out; } return NULL; } static int add_entry(struct sockaddr_atmpvc *from,struct sockaddr_atmpvc *to) { LINK *l_from,*l_to; TABLE *entry; l_from = find_link(from->sap_addr.itf); l_to = find_link(to->sap_addr.itf); if (!l_from || !l_to) return -ENODEV; for (entry = l_from->table; entry; entry = entry->next) if (entry->in_vpi == from->sap_addr.vpi && (entry->in_vci == ATM_VCI_UNSPEC || from->sap_addr.vci == ATM_VCI_UNSPEC || entry->in_vci == from->sap_addr.vci)) return -EEXIST; entry = alloc_t(TABLE); entry->out = l_to; entry->in_vpi = from->sap_addr.vpi; entry->in_vci = from->sap_addr.vci; entry->out_vpi = to->sap_addr.vpi; entry->out_vci = to->sap_addr.vci; entry->next = l_from->table; l_from->table = entry; if (entry->in_vci == ATM_VCI_UNSPEC) diag(COMPONENT,DIAG_INFO,"added VP %d.%d -> %d.%d",l_from->id, entry->in_vpi,l_to->id,entry->out_vpi); else diag(COMPONENT,DIAG_INFO,"added VC %d.%d.%d -> %d.%d.%d",l_from->id, entry->in_vpi,entry->in_vci,l_to->id,entry->out_vpi,entry->out_vci); return 0; } static int del_entry(struct sockaddr_atmpvc *from,struct sockaddr_atmpvc *to) { LINK *l_from,*l_to; TABLE **entry,*this; l_from = find_link(from->sap_addr.itf); l_to = find_link(to->sap_addr.itf); if (!l_from || !l_to) return -ENODEV; for (entry = &l_from->table; *entry; entry = &(*entry)->next) if ((*entry)->out == l_to && (*entry)->in_vpi == from->sap_addr.vpi && (*entry)->in_vci == from->sap_addr.vci && ((*entry)->in_vci == ATM_VCI_UNSPEC || (*entry)->out_vci == to->sap_addr.vci)) break; if (!*entry) return -EHOSTUNREACH; this = *entry; *entry = this->next; if (this->in_vci == ATM_VCI_UNSPEC) diag(COMPONENT,DIAG_INFO,"deleted VP %d.%d -> %d.%d",l_from->id, this->in_vpi,l_to->id,this->out_vpi); else diag(COMPONENT,DIAG_INFO,"deleted VC %d.%d.%d -> %d.%d.%d",l_from->id, this->in_vpi,this->in_vci,l_to->id,this->out_vpi,this->out_vci); free(this); return 0; } static void drop_link(LINK *lnk) { diag(COMPONENT,DIAG_INFO,"dropped link %d",lnk->id); if (lnk->state == id_set) { notify(lnk->id,0); lnk->state = id_reval; } dsp_fd_remove(lnk->fd); #if 0 LINK **walk,**next_link,**entry,**next_entry; /* remove link from the list and delete all references to link */ for (walk = &links; *walk; walk = next_link) { next_link = &(*walk)->next; if (*walk == lnk) *walk = *next_link; else for (entry = &(*walk)->table; *entry; entry = next_entry) { next_entry = &(*entry)->next; if ((*entry)->out == lnk) { TABLE *this; this = *entry; *entry = *next_entry; free(this); } } } *walk = lnk->next; /* remove link's switching table */ while (lnk->table) { TABLE *next; next = lnk->table->next; free(lnk->table); lnk->table = next; } /* drop memory */ free(*lnk); #endif } static void new_data(int fd,void *user) { LINK *lnk = user; int got; got = read(fd,lnk->buffer+lnk->len,BUFFER_SIZE-lnk->len); if (got < 0) perror("read"); if (got <= 0) drop_link(lnk); lnk->len += got; if (lnk->state != id_set) { LINK *walk; char *end; int id; if (!memchr(lnk->buffer,0,lnk->len)) return; id = strtol(lnk->buffer,&end,0); if (*end) { diag(COMPONENT,DIAG_ERROR,"invalid line id \"%s\"",lnk->buffer); drop_link(lnk); return; } for (walk = links; walk; walk = walk->next) if (walk->state != id_none && id == walk->id) break; if (walk) { if (walk->state == id_set) { diag(COMPONENT,DIAG_ERROR,"line state mismatch (id %d)",id); drop_link(lnk); return; } diag(COMPONENT,DIAG_INFO,"reconnected link %d",id); walk->state = id_set; walk->fd = lnk->fd; walk->len = lnk->len; memcpy(walk->buffer,lnk->buffer,lnk->len); drop_link(lnk); lnk = walk; dsp_fd_add(lnk->fd,new_data,walk); } else { diag(COMPONENT,DIAG_INFO,"new link %d",id); lnk->state = id_set; lnk->id = id; } notify(lnk->id,1); lnk->len -= strlen(lnk->buffer)+1; memmove(lnk->buffer,lnk->buffer-strlen(lnk->buffer)-1,lnk->len); } while (lnk->len >= sizeof(struct atmtcp_hdr)) { struct atmtcp_hdr *hdr = (struct atmtcp_hdr *) lnk->buffer; LINK *out; int size; size = sizeof(struct atmtcp_hdr)+ntohl(hdr->length); if (lnk->len < size) break; out = route(lnk,hdr); if (out) { int sent; sent = write(out->fd,lnk->buffer,size); if (sent < 0) perror("write"); else if (sent != size) diag(COMPONENT,DIAG_ERROR,"bad write: %d != %d",sent,size); if (sent != size) drop_link(out); } lnk->len -= size; memmove(lnk->buffer,lnk->buffer+size,lnk->len); } } static void new_link(int sock,void *dummy) { LINK *lnk; int fd; fd = accept(sock,NULL,NULL); if (fd < 0) { perror("accept"); return; } lnk = alloc_t(LINK); lnk->state = id_none; lnk->id = -1; lnk->fd = fd; lnk->len = 0; lnk->table = NULL; lnk->next = links; links = lnk; dsp_fd_add(fd,new_data,lnk); } static int vci_exists(LINK *lnk,int vpi,int vci) { TABLE *walk; for (walk = lnk->table; walk; walk = walk->next) if (walk->in_vpi == vpi && walk->in_vci == vci) return 1; return 0; } static int check_ci(struct sockaddr_atmpvc *pvc) { LINK *lnk; TABLE *walk; int vci; lnk = find_link(pvc->sap_addr.itf); if (!lnk) return 0; if (pvc->sap_addr.vpi == ATM_VPI_ANY) pvc->sap_addr.vpi = 0; /* that was easy :-) */ for (walk = lnk->table; walk; walk = walk->next) if (walk->in_vpi == pvc->sap_addr.vpi) break; if (walk && walk->in_vci == ATM_VCI_UNSPEC) return 0; if (pvc->sap_addr.vci == ATM_VCI_UNSPEC) return !walk; if (pvc->sap_addr.vci != ATM_VCI_ANY) return !vci_exists(lnk,pvc->sap_addr.vpi,pvc->sap_addr.vci); for (vci = ATM_NOT_RSV_VCI; vci < MAX_VCI; vci++) if (!vci_exists(lnk,pvc->sap_addr.vpi,vci)) { pvc->sap_addr.vci = vci; return 1; } return 0; } void fab_option(const char *name,const char *value) { diag(COMPONENT,DIAG_FATAL,"unrecognized fabric option \"%s\"",name); } void fab_start(void (*port_notify)(int number,int up)) { struct sockaddr_in addr; int s_listen; notify = port_notify; addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = htonl(INADDR_ANY); if ((s_listen = socket(PF_INET,SOCK_STREAM,0)) < 0) diag(COMPONENT,DIAG_FATAL,"socket: %s",strerror(errno)); if (bind(s_listen,(struct sockaddr *) &addr,sizeof(addr)) < 0) diag(COMPONENT,DIAG_FATAL,"bind: %s",strerror(errno)); if (listen(s_listen,5) < 0) diag(COMPONENT,DIAG_FATAL,"listen: %s",strerror(errno)); dsp_fd_add(s_listen,new_link,NULL); } void fab_init(CALL *call) { FAB *fab; call->fab = alloc_t(FAB); fab = PRV(call); fab->active = 0; fab->next = calls; calls = call; } void fab_destroy(CALL *call) { CALL **walk; for (walk = &calls; *walk; walk = &PRV(*walk)->next) if (*walk == call) break; if (!*walk) diag(COMPONENT,DIAG_FATAL,"fab_destroy: call %p not found",call); *walk = PRV(call)->next; free(PRV(call)); call->fab = NULL; } void fab_op(CALL *call,int op,const struct atm_qos *qos, void (*callback)(CALL *call,int cause,void *more,void *user),void *user) { int error,error2; diag(COMPONENT,DIAG_INFO,"fab_op%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", !op ? " FREE" : "",op & RM_RSV(_RM_ANY) ? " RM_RSV:" : "", op & RM_IN_TX ? " IN_TX" : "",op & RM_IN_RX ? " IN_RX" : "", op & RM_OUT_TX ? " OUT_TX" : "",op & RM_OUT_RX ? " OUT_RX" : "", op & RM_PATH_TX ? " PATH_TX" : "",op & RM_PATH_RX ? " PATH_RX" : "", op & RM_CLAIM(_RM_ANY) ? " RM_CLAIM:" : "", op & _RM_SHIFT(RM_IN_TX) ? " IN_TX" : "", op & _RM_SHIFT(RM_IN_RX) ? " IN_RX" : "", op & _RM_SHIFT(RM_OUT_TX) ? " OUT_TX" : "", op & _RM_SHIFT(RM_OUT_RX) ? " OUT_RX" : "", op & _RM_SHIFT(RM_PATH_TX) ? " PATH_TX" : "", op & _RM_SHIFT(RM_PATH_RX) ? " PATH_RX" : ""); if (op & (RM_RSV(RM_IN) | RM_CLAIM(RM_IN))) { if (!check_ci(&call->in.pvc)) { callback(call,ATM_CV_CI_UNAVAIL,NULL,user); return; } call->in.qos = *qos; } if (op & (RM_RSV(RM_OUT) | RM_CLAIM(RM_OUT))) { if (!check_ci(&call->out.pvc)) { callback(call,ATM_CV_CI_UNAVAIL,NULL,user); return; } call->out.qos = *qos; } if (op & RM_CLAIM(RM_PATH)) { error = 0; if (call->in.qos.txtp.traffic_class != ATM_NONE) error = add_entry(&call->in.pvc,&call->out.pvc); if (!error) { if (call->in.qos.rxtp.traffic_class != ATM_NONE) error = add_entry(&call->out.pvc,&call->in.pvc); if (error && call->in.qos.txtp.traffic_class != ATM_NONE) { error2 = del_entry(&call->in.pvc,&call->out.pvc); if (error2) diag(COMPONENT,DIAG_ERROR,"del_entry: %s",strerror(error2)); } } if (error) { diag(COMPONENT,DIAG_ERROR,"add_entry: %s",strerror(error)); callback(call,ATM_CV_RES_UNAVAIL,NULL,user); return; } PRV(call)->active = 1; } if (!op && PRV(call)->active) { error = error2 = 0; if (call->in.qos.txtp.traffic_class != ATM_NONE) { error = del_entry(&call->in.pvc,&call->out.pvc); if (error) diag(COMPONENT,DIAG_ERROR,"del_entry: %s",strerror(error)); } if (call->in.qos.rxtp.traffic_class != ATM_NONE) { error2 = del_entry(&call->out.pvc,&call->in.pvc); if (error2) diag(COMPONENT,DIAG_ERROR,"del_entry: %s",strerror(error2)); } if (error || error2) { callback(call,ATM_CV_TEMP_FAIL,NULL,user); return; } } callback(call,0,NULL,user); } linux-atm-2.5.1/src/switch/tcp/Makefile.in0000644000200100001440000003416211304770377017222 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = sw_tcp$(EXEEXT) subdir = src/switch/tcp DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_sw_tcp_OBJECTS = tcpsw.$(OBJEXT) sw_tcp_OBJECTS = $(am_sw_tcp_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(sw_tcp_SOURCES) DIST_SOURCES = $(sw_tcp_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ INCLUDES = -I$(srcdir)/../../q2931 sw_tcp_SOURCES = tcpsw.c sw_tcp_XTRAS = $(top_builddir)/src/switch/libsw.a \ $(top_builddir)/src/lib/libatm.la sw_tcp_LDADD = $(sw_tcp_XTRAS) -lfl sw_tcp_DEPENDENCIES = $(sw_tcp_XTRAS) EXTRA_DIST = mkfiles README all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/switch/tcp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/switch/tcp/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list sw_tcp$(EXEEXT): $(sw_tcp_OBJECTS) $(sw_tcp_DEPENDENCIES) @rm -f sw_tcp$(EXEEXT) $(LINK) $(sw_tcp_OBJECTS) $(sw_tcp_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tcpsw.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/switch/Makefile.in0000644000200100001440000005236211304770377016436 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = swc$(EXEEXT) subdir = src/switch DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ cfg_l.c cfg_y.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru libsw_a_AR = $(AR) $(ARFLAGS) libsw_a_LIBADD = am_libsw_a_OBJECTS = control.$(OBJEXT) dispatch.$(OBJEXT) \ proto.$(OBJEXT) relay.$(OBJEXT) route.$(OBJEXT) sig.$(OBJEXT) \ cfg_y.$(OBJEXT) cfg_l.$(OBJEXT) libsw_a_OBJECTS = $(am_libsw_a_OBJECTS) PROGRAMS = $(noinst_PROGRAMS) am_swc_OBJECTS = swc.$(OBJEXT) swc_OBJECTS = $(am_swc_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) YLWRAP = $(top_srcdir)/ylwrap YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) SOURCES = $(libsw_a_SOURCES) $(swc_SOURCES) DIST_SOURCES = $(libsw_a_SOURCES) $(swc_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = . debug tcp noinst_LIBRARIES = libsw.a swc_SOURCES = swc.c swc.h swc_LDADD = $(top_builddir)/src/lib/libatm.la swc_DEPENDENCIES = $(swc_LDADD) $(top_builddir)/src/include/atm.h \ $(top_builddir)/src/include/atmd.h libsw_a_SOURCES = control.c dispatch.c dispatch.h proto.c proto.h relay.c \ route.c route.h sig.c sig.h cfg_y.y cfg_l.l fab.h EXTRA_DIST = cfg_y.h README all: all-recursive .SUFFIXES: .SUFFIXES: .c .l .lo .o .obj .y $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/switch/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/switch/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libsw.a: $(libsw_a_OBJECTS) $(libsw_a_DEPENDENCIES) -rm -f libsw.a $(libsw_a_AR) libsw.a $(libsw_a_OBJECTS) $(libsw_a_LIBADD) $(RANLIB) libsw.a clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list swc$(EXEEXT): $(swc_OBJECTS) $(swc_DEPENDENCIES) @rm -f swc$(EXEEXT) $(LINK) $(swc_OBJECTS) $(swc_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfg_l.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfg_y.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/control.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dispatch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proto.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relay.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/route.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< .l.c: $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LIBRARIES) $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f cfg_l.c -rm -f cfg_y.c clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \ ctags-recursive distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/test/0000755000200100001440000000000011304770377014037 5ustar chasuserslinux-atm-2.5.1/src/test/CVS/0000755000200100001440000000000011304767140014464 5ustar chasuserslinux-atm-2.5.1/src/test/CVS/Root0000644000200100001440000000007411304767140015333 0ustar chasusers:ext:chas3@linux-atm.cvs.sourceforge.net:/cvsroot/linux-atm linux-atm-2.5.1/src/test/CVS/Repository0000644000200100001440000000002311304767140016561 0ustar chasuserslinux-atm/src/test linux-atm-2.5.1/src/test/CVS/Entries0000644000200100001440000000175411304767140016027 0ustar chasusers/.cvsignore/1.1.2.1/Fri Aug 31 14:50:32 2007//TV2_5_1 /Makefile-0.79/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /Makefile.am/1.2.2.4.2.1/Wed Aug 5 17:24:43 2009//TV2_5_1 /README.isp/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /align.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /aping.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /aread.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /atmswitch.c/1.1.2.1/Tue Feb 24 23:37:24 2004//TV2_5_1 /awrite.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /br.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /bw.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /isp.c/1.2.4.1/Wed Aug 5 17:24:43 2009//TV2_5_1 /isp.h/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /ispl_l.l/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 /ispl_y.y/1.2.4.1/Mon Aug 3 14:30:14 2009//TV2_5_1 /pmp_send.c/1.1.2.1/Wed Apr 20 18:12:13 2005//TV2_5_1 /svc_recv.c/1.1.2.1/Sun Sep 26 12:07:06 2004//TV2_5_1 /svc_send.c/1.1.2.1/Sun Sep 26 12:07:06 2004//TV2_5_1 /ttcp.c/1.2.2.1/Mon Apr 18 16:18:28 2005//TV2_5_1 /window.c/1.2/Tue Oct 9 22:33:08 2001//TV2_5_1 D linux-atm-2.5.1/src/test/CVS/Tag0000644000200100001440000000001011304767140015111 0ustar chasusersTV2_5_1 linux-atm-2.5.1/src/test/.cvsignore0000644000200100001440000000024010666025270016026 0ustar chasusersMakefile Makefile.in .deps .libs align aping aread atmswitch awrite br bw errnos.inc isp ispl_l.c ispl_y.c ispl_y.h pmp_send svc_recv svc_send ttcp_atm window linux-atm-2.5.1/src/test/Makefile-0.790000644000200100001440000000175307360675444016106 0ustar chasusersISP_OBJS=isp.o lex.yy.o y.tab.o USRPGMS=aread awrite ttcp_atm PGMS=align aping br bw isp window MAN1= TRASH=errnos.inc include ../Rules.make ttcp_atm.o: ttcp.c ttcp.o gcc -c -w -O2 -o ttcp_atm.o ttcp.c -I../lib ttcp.o: # dummy touch ttcp.o isp: $(ISP_OBJS) ../lib/libatm.a ../lib/libatmd.a $(CC) $(LDFLAGS) -o isp $(ISP_OBJS) $(LDLIBS) -latmd \ -lfl lex.yy.c: ispl.l y.tab.h $(LEX) ispl.l y.tab.c y.tab.h: ispl.y isp.h ../lib/atm.h $(YACC) -d ispl.y isp.o: errnos.inc errnos.inc: mkerrnos.pl perl ./mkerrnos.pl errnos.inc || { rm -f errnos.inc; exit 1; } # # During "make depend", we need to have something that keeps the #include from # failing. The "touch" at the end makes sure that errnos.inc gets rebuilt in # time. The sleep 1 makes sure that mkerrnos.pl is really more recent than # errnos.inc # $(DEPEND): fake_errnos.inc fake_errnos.inc: echo "! This must not compile" >errnos.inc sleep 1 touch mkerrnos.pl linux-atm-2.5.1/src/test/Makefile.am0000644000200100001440000000132411236340133016056 0ustar chasusersUSRPGMS = aread awrite ttcp_atm atmswitch svc_recv svc_send @pmp_send@ EXTRA_PROGRAMS = pmp_send PGMS = align aping br bw isp window bin_PROGRAMS = $(USRPGMS) noinst_PROGRAMS = $(PGMS) LDADD = $(top_builddir)/src/lib/libatm.la atmswitch_SOURCES = atmswitch.c aread_SOURCES = aread.c awrite_SOURCES = awrite.c svc_recv_SOURCES = svc_recv.c svc_send_SOURCES = svc_send.c ttcp_atm_SOURCES = ttcp.c pmp_send_SOURCES = pmp_send.c align_SOURCES = align.c aping_SOURCES = aping.c br_SOURCES = br.c bw_SOURCES = bw.c isp_SOURCES = isp.c isp.h ispl_y.y ispl_l.l isp_XTRAS = $(LDADD) isp_LDADD = $(isp_XTRAS) -lfl isp_DEPENDENCIES = $(isp_XTRAS) window_SOURCES = window.c CLEANFILES = errnos.inc EXTRA_DIST = ispl_y.h README.isp linux-atm-2.5.1/src/test/README.isp0000644000200100001440000000426107360675444015522 0ustar chasusersNo man page yet. "isp" is a tool for sending and receiving ISP messages, e.g. to test atmsigd. Although it can be used interactively, its poor error handling makes it more suitable for script use. Commands: send msg_type [field=value|field=$var ...] receive [msg_type [field=value|field=$var|$var=field ...]] set $var=value show echo value help where msg_type: bind, connect, accept, reject, listen, okay, error, indicate, close, itf_notify, modify, identify, terminate field: vcc, listen_vcc, reply, pvc, local, qos, svc, sap Variable syntax is like in Perl, i.e. a variable is always prefixed by a dollar sign, even where it is not expanded. Fields and variables are typed. Fields with compatible input have the same type (e.g. "svc" and "local", and "vcc" and "listen_vcc"). The type of variables which are set with "set" is determined the first time they're used in a "send" or "receive" command. Fields which do not exist in a message cannot be accessed (see isp.c, types[] for all valid combinations). Unspecified fields are set to zero. isp does not enforce setting of mandatory fields (yet). "receive" accepts three types of arguments: field=value field must be equal to the value field=$var field must be equal to the content of the variable $var=field content of field is assigned to variable Values can contain pretty much any characters except for whitespace, and they must not begin with dollar, equal, or hash signs. ispl.l contains some hacks (e.g. {tail}) to make things work anyway. There is no way to include whitespace in a value, so things like echo it works don't work (but echo ?$\=# does). Examples: receive bind $VCC=vcc send okay vcc=$VCC set $SAP = blli:l3=tr9577,ipi=snap,oui=0x00A03E,pid=0x0002 send indicate listen_vcc=$VCC svc=+1007 qos=ubr:pcr=123kcps sap=$SAP isp normally pretty-prints all messages. This can be suppressed with -q. A hint for regression test development: To test for pass, put echo PASSED after the command To test for fail, put echo PASSED before and echo FAILED after Check the last echo'ed string for PASSED (or nothing) The absence of conditional execution in isp's language is considered a feature. linux-atm-2.5.1/src/test/align.c0000644000200100001440000000622307360675444015306 0ustar chasusers/* align.c - Exercise PDU mis-alignment handling by the NIC */ /* Written 1997,1998 by Werner Almesberger, EPFL-LRC/ICA */ /* * This program requires a kernel modification: if the first byte of the PDU * to send is a small decimal digit N < 8, the first N bytes of the PDU are * removed and the start address is shifted accordingly. This forces * mis-alignment of the PDU. * * The expected network configuration is a loopback between the TXer and the * RXer of the NIC under test. */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #define MAX_SDU 20000 #define MAX_OFFSET 8 static void handler(int dummy) { (void) signal(SIGALRM,&handler); } static void torture(int s) { static unsigned long done[MAX_SDU*MAX_OFFSET/8/sizeof(unsigned long)]; unsigned char in[MAX_SDU],out[MAX_SDU]; unsigned char ch; int todo; todo = MAX_SDU*MAX_OFFSET-(MAX_OFFSET+1)*MAX_OFFSET/2; handler(0); while (todo) { int length,offset; int word,bit; int i,sent,got; length = (random() % MAX_SDU)+1; offset = random() % MAX_OFFSET; ch = random() & 0xff; bit = (length-1)*MAX_OFFSET+offset; word = bit/sizeof(unsigned long)/8; bit &= sizeof(unsigned long)*8-1; if (length <= offset || (done[word] & (1 << bit))) continue; out[0] = offset+'0'; for (i = 1; i < length; i++) out[i] = ch++; sent = write(s,out,length); if (sent < 0) { perror("write"); exit(1); } if (sent != length) { fprintf(stderr,"bad write: %d != %d\n",sent,length); exit(1); } alarm(1); got = read(s,in,length); alarm(0); if (got < 0 && errno == EINTR) { fprintf(stderr,"timed out at length %d, offset %d\n",length,offset); continue; } if (got < 0) { perror("read"); exit(1); } if (got != length-offset) { fprintf(stderr,"bad read: %d != %d-%d\n",got,length,offset); exit(1); } if (memcmp(out+offset,in,length-offset)) { fprintf(stderr,"bad compare: length %d, offset %d\n",length, offset); exit(1); } done[word] |= 1 << bit; todo--; if (!(todo % 100)) fprintf(stderr,"%6d\r",todo); } } static void usage(const char *name) { fprintf(stderr,"usage: %s [itf.]vpi.vci\n",name); exit(1); } int main(int argc,char **argv) { struct sockaddr_atmpvc addr; struct atm_qos qos; int s; if (argc != 2) usage(argv[0]); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } memset(&addr,0,sizeof(addr)); if (text2atm(argv[1],(struct sockaddr *) &addr,sizeof(addr),T2A_PVC) < 0) usage(argv[0]); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = qos.rxtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = qos.rxtp.max_sdu = MAX_SDU; if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (connect(s,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("connect"); return 1; } srandom(0); /* we want it to be deterministic */ torture(s); return 0; } linux-atm-2.5.1/src/test/aping.c0000644000200100001440000000567307360675444015322 0ustar chasusers/* aping.c - simple round-trip tester */ /* Written 1996,1997 by Werner Almesberger, EPFL-LRC */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #define SEND 25*1000 #define RECV 70*1000 #define RECOVER 10 static const char *rotor[] = { "|\r","/\r","-\r","\\\r" }; static void usage(const char *name) { fprintf(stderr,"usage: %s [itf.]vpi.vci\n",name); exit(1); } int main(int argc,char **argv) { struct timeval delta,now,next,fail; struct sockaddr_atmpvc addr; struct atm_qos qos; int s,i,len; if (argc != 2) usage(argv[0]); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } memset(&addr,0,sizeof(addr)); if (text2atm(argv[1],(struct sockaddr *) &addr,sizeof(addr), T2A_PVC | T2A_UNSPEC | T2A_WILDCARD) < 0) usage(argv[0]); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.txtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = 1; qos.rxtp = qos.txtp; if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (bind(s,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("bind"); return 1; } if (gettimeofday(&next,NULL) < 0) { perror("gettimeofday"); return 1; } fail = next; fail.tv_sec += RECOVER; delta.tv_sec = delta.tv_usec = 0; i = 0; len = 1; /* length varies to make losses more visible in the kernel */ while (1) { fd_set set; FD_ZERO(&set); FD_SET(s,&set); (void) select(s+1,&set,NULL,NULL,&delta); if (gettimeofday(&now,NULL) < 0) { perror("gettimeofday"); return 1; } if (FD_ISSET(s,&set)) { char dummy[2]; int size; size = read(s,dummy,2); if (size < 0) { perror("read"); return 1; } if (size != 1) { fprintf(stderr,"bad RX (%d)\n",size); #if 0 if (size > 1) return 1; #endif } fail = now; fail.tv_usec += RECV; while (fail.tv_usec >= 1000000) { fail.tv_usec -= 1000000; fail.tv_sec++; } (void) write(1,rotor[i = (i+1) & 3],2); len = 1; } if (fail.tv_sec < now.tv_sec || (fail.tv_sec == now.tv_sec && fail.tv_usec < now.tv_usec)) { fprintf(stderr,"RX timed out\n"); fail.tv_sec += RECOVER; #if 0 #if 1 len++; #else len = 2 /*1+(len % 3)*/; #endif #endif } while (next.tv_sec < now.tv_sec || (next.tv_sec == now.tv_sec && next.tv_usec < now.tv_usec)) { if (write(s,"XYZ...",len) != len) { perror("write"); return 1; } next.tv_usec += SEND; while (next.tv_usec >= 1000000) { next.tv_usec -= 1000000; next.tv_sec++; } } delta.tv_sec = next.tv_sec-now.tv_sec; delta.tv_usec = next.tv_usec-now.tv_usec; while (delta.tv_usec < 0) { delta.tv_sec--; delta.tv_usec += 1000000; } } return 0; } linux-atm-2.5.1/src/test/aread.c0000644000200100001440000000350407360675444015267 0ustar chasusers/* aread.c - receive AAL5 PDU */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #define BSIZE 1024 static void usage(const char *name) { fprintf(stderr,"usage: %s [-c] [itf.]vpi.vci\n",name); exit(1); } int main(int argc,char **argv) { const char *name; struct sockaddr_atmpvc addr; struct atm_qos qos; int chars,s; name = argv[0]; chars = argc == 3 && !strcmp(argv[1],"-c"); if (chars) { argc--; argv++; } if (argc != 2) usage(name); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } memset(&addr,0,sizeof(addr)); if (text2atm(argv[1],(struct sockaddr *) &addr,sizeof(addr), T2A_PVC | T2A_UNSPEC | T2A_WILDCARD) < 0) usage(name); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.rxtp.traffic_class = ATM_UBR; qos.rxtp.max_sdu = BSIZE; if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (bind(s,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("bind"); return 1; } while (1) { unsigned char buf[BSIZE+4096]; unsigned char *start; int size,i; /* Make sure the buffer is aligned. This can be trivially extended to play with alignments. */ start = (unsigned char *) (((unsigned long) buf+4095) & ~4095UL); size = read(s,start,BSIZE); printf("%d",size); if (size < 0) printf(" (%s)",strerror(errno)); printf(": "); for (i = 0; i < size; i++) if (chars) if (start[i] > ' ' && start[i] < 127) printf(" %c",start[i]); else printf(" \\%03o",start[i]); else printf(" %02X",start[i]); putchar('\n'); } } linux-atm-2.5.1/src/test/atmswitch.c0000644000200100001440000000751710016760064016207 0ustar chasusers/* ** Copyright (C) 2004 Init-Sys (http://www.init-sys.com) ** Written by Eric Leblond ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, version 2 of the License. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #define BUF_SIZE 10000 static fd_set pvc_set; static int fds; static int s[2]; static void usage(const char *name) { fprintf(stderr,"usage: %s [-b] [-q QOS] [itf.]vpi.vci [itf.]vpi.vci\n",name); exit(1); } int main(int argc,char **argv) { const char *name; const char *options_list = "bq:Vh"; struct sockaddr_atmpvc addr; struct atm_qos qos[2]; int background=0; int set_qos=0; int pvc; int option; name = argv[0]; memset(qos,0,2*sizeof(*qos)); /*parse options */ while((option = getopt ( argc, argv, options_list)) != -1 ){ switch (option){ case 'b' : background=1; break; case 'q' : /* reading qos */ if (text2qos(optarg,qos,0)<0){ fprintf (stderr, "Invalid QOS\n"); return 0; } if (text2qos(optarg,qos+1,0)<0){ fprintf (stderr, "Strange !\n"); } /* inert qos on receiver */ qos[1].rxtp=qos[0].txtp; qos[1].txtp=qos[0].rxtp; set_qos=1; break; case 'V' : fprintf (stdout, "atmswitch (version 0.2)\n"); return 1; break; case 'h' : usage(name); return 1; break; } } if ((argc - optind) != 2) { fprintf(stderr,"Invalid number of arguments\n"); usage(name); } if (background) { pid_t pid; pid=fork(); if (pid < 0) { fprintf(stderr,"Error detaching\n"); exit(2); } else if (pid) exit(0); // This is the parent } /* init pvc_set */ FD_ZERO(&pvc_set); fds=0; /* init pvc socket */ for (pvc=0;pvc<=1;pvc++){ if ((s[pvc] = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } memset(&addr,0,sizeof(addr)); if ( set_qos == 0) { qos[pvc].aal = ATM_AAL5; qos[pvc].rxtp.traffic_class = ATM_UBR; qos[pvc].txtp.traffic_class = ATM_UBR; qos[pvc].txtp.pcr = ATM_MAX_PCR; qos[pvc].rxtp.pcr = ATM_MAX_PCR; qos[pvc].txtp.max_sdu = 1524; qos[pvc].rxtp.max_sdu = 1524; } if (text2atm(argv[optind+pvc],(struct sockaddr *) &addr,sizeof(addr), T2A_PVC | T2A_UNSPEC | T2A_WILDCARD) < 0) usage(name); if (setsockopt(s[pvc],SOL_ATM,SO_ATMQOS,qos+pvc,sizeof(qos[0])) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (connect(s[pvc],(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("connect"); return 1; } /* add PVC socket fo fd_set */ FD_SET(s[pvc],&pvc_set); if (s[pvc] >= fds) fds = s[pvc]+1; } /* infinite loop */ while (1) { int ret; fd_set set; set=pvc_set; ret = select(fds,&set,NULL,NULL,NULL); if (ret < 0) { if (errno != EINTR) perror("select"); continue; } for (pvc=0;pvc<=1;pvc++){ if (FD_ISSET(s[pvc],&set)){ char buf[BUF_SIZE]; int bufsiz=0; /* read s[pvc] */ bufsiz=read(s[pvc],buf,BUF_SIZE); if (bufsiz > 0){ /* write s[(pvc+1)%2] */ write(s[(pvc+1)%2],buf,bufsiz); } else { perror("read"); } } } } } linux-atm-2.5.1/src/test/awrite.c0000644000200100001440000000254107360675444015506 0ustar chasusers/* awrite.c - send AAL5 PDU */ /* Written 1995-1998 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include static void usage(const char *name) { fprintf(stderr,"usage: %s [itf.]vpi.vci data [ offset ] \n",name); exit(1); } int main(int argc,char **argv) { struct sockaddr_atmpvc addr; struct atm_qos qos; int s,size,offset; if (argc != 3 && argc != 4) usage(argv[0]); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } memset(&addr,0,sizeof(addr)); if (text2atm(argv[1],(struct sockaddr *) &addr,sizeof(addr),T2A_PVC) < 0) usage(argv[0]); offset = argc == 3 ? 0 : atoi(argv[3]); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = strlen(argv[2])-offset; if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (connect(s,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("connect"); return 1; } size = write(s,argv[2]+offset,strlen(argv[2])-offset); printf("%d",size); if (size < 0) printf(" (%s)",strerror(errno)); putchar('\n'); return 0; } linux-atm-2.5.1/src/test/br.c0000644000200100001440000000252107360675444014614 0ustar chasusers/* br.c - block read */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #define BSIZE 8192 static void usage(const char *name) { fprintf(stderr,"usage: %s [itf.]vpi.vci\n",name); exit(1); } int main(int argc,char **argv) { struct sockaddr_atmpvc addr; struct atm_qos qos; int s; if (argc != 2) usage(argv[0]); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } memset(&addr,0,sizeof(addr)); if (text2atm(argv[1],(struct sockaddr *) &addr,sizeof(addr),T2A_PVC) < 0) usage(argv[0]); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.rxtp.traffic_class = ATM_UBR; qos.rxtp.max_sdu = BSIZE; if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (bind(s,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("bind"); return 1; } while (1) { unsigned char buf[BSIZE+4096]; unsigned char *start; ssize_t size; start = (unsigned char *) (((unsigned long) buf+4095) & ~4095U); size = read(s,start,BSIZE); if (size > 0 && write(1,start,size) != size) return 1; } } linux-atm-2.5.1/src/test/bw.c0000644000200100001440000000261407360675444014624 0ustar chasusers/* bw.c - block write */ /* Written 1995-2000 by Werner Almesberger, EPFL-LRC/ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #define BSIZE 8192 static void usage(const char *name) { fprintf(stderr,"usage: %s [itf.]vpi.vci [ blocks ]\n",name); exit(1); } int main(int argc,char **argv) { struct sockaddr_atmpvc addr; struct atm_qos qos; char buffer[BSIZE]; int blocks,s; ssize_t size; if (argc != 2 && argc != 3) usage(argv[0]); if (argc == 2) blocks = 0; else blocks = atoi(argv[2]); if ((s = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); return 1; } memset(&addr,0,sizeof(addr)); if (text2atm(argv[1],(struct sockaddr *) &addr,sizeof(addr),T2A_PVC) < 0) usage(argv[0]); memset(&qos,0,sizeof(qos)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.txtp.max_sdu = BSIZE; if (setsockopt(s,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS"); return 1; } if (connect(s,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("bind"); return 1; } if (blocks) while (blocks--) (void) write(s,buffer,BSIZE); else while ((size = read(0,buffer,BSIZE)) > 0) (void) write(s,buffer,size); return 0; } linux-atm-2.5.1/src/test/isp.c0000644000200100001440000002500311236340133014761 0ustar chasusers/* isp.c - Internal Signaling Protocol test generator */ /* Written 1997-2000 by Werner Almesberger, EPFL-ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include "isp.h" extern int yyparse(void); int quiet = 0; int verbose = 0; VAR *variables = NULL; static int sock; void send_msg(const struct atmsvc_msg *msg) { int wrote; wrote = write(sock,msg,sizeof(*msg)); if (wrote == sizeof(*msg)) return; if (wrote < 0) perror("write"); else fprintf(stderr,"bad write: %d != %d\n",wrote,sizeof(*msg)); exit(1); } void recv_msg(struct atmsvc_msg *msg) { int got; got = read(sock,msg,sizeof(*msg)); if (got == sizeof(*msg)) return; if (got < 0) perror("read"); else fprintf(stderr,"bad read: %d != %d\n",got,sizeof(*msg)); exit(1); } static struct errno_table { const char *name; int value; } table[] = { { "EPERM", EPERM }, { "ENOENT", ENOENT }, { "ESRCH", ESRCH }, { "EINTR", EINTR }, { "EIO", EIO }, { "ENXIO", ENXIO }, { "E2BIG", E2BIG }, { "ENOEXEC", ENOEXEC }, { "EBADF", EBADF }, { "ECHILD", ECHILD }, { "EAGAIN", EAGAIN }, { "ENOMEM", ENOMEM }, { "EACCES", EACCES }, { "EFAULT", EFAULT }, { "ENOTBLK", ENOTBLK }, { "EBUSY", EBUSY }, { "EEXIST", EEXIST }, { "EXDEV", EXDEV }, { "ENODEV", ENODEV }, { "ENOTDIR", ENOTDIR }, { "EISDIR", EISDIR }, { "EINVAL", EINVAL }, { "ENFILE", ENFILE }, { "EMFILE", EMFILE }, { "ENOTTY", ENOTTY }, { "ETXTBSY", ETXTBSY }, { "EFBIG", EFBIG }, { "ENOSPC", ENOSPC }, { "ESPIPE", ESPIPE }, { "EROFS", EROFS }, { "EMLINK", EMLINK }, { "EPIPE", EPIPE }, { "EDOM", EDOM }, { "ERANGE", ERANGE }, { NULL, 0 } }; static const char *errno2str(int code) { static char buf[30]; /* probably large enough :) */ const struct errno_table *walk; for (walk = table; walk->name; walk++) { if (walk->value == code) return walk->name; if (walk->value == -code) { sprintf(buf,"-%s",walk->name); return buf; } } sprintf(buf,"%d (0x%x)",code,code); return buf; } /* Synchronized with include/linux/atmsvc.h:enum atmsvc_msg_type */ static struct { const char *name; int fields; } types[] = { { "", 0 }, { "bind", F_VCC | F_SVC | F_SAP }, { "connect", F_VCC | F_PVC | F_LOCAL | F_QOS | F_SVC | F_SAP }, { "accept", F_VCC | F_LISTEN_VCC }, { "reject", F_VCC | F_LISTEN_VCC | F_REPLY }, { "listen", F_VCC | F_QOS | F_SVC | F_SAP }, { "okay", F_VCC | F_PVC | F_LOCAL | F_QOS | F_SVC | F_SAP }, { "error", F_VCC | F_REPLY }, { "indicate", F_LISTEN_VCC | F_PVC | F_LOCAL | F_QOS | F_SVC | F_SAP}, { "close", F_VCC | F_REPLY }, { "itf_notify", F_PVC }, { "modify", F_VCC | F_REPLY | F_QOS }, { "identify", F_VCC | F_LISTEN_VCC | F_PVC }, { "terminate", 0 }}; #define MSG_TYPES (sizeof(types)/sizeof(*types)) void print_value(VALUE val) { char buf[1000]; /* bigger than any MAX_ATM_*_LEN */ switch (val.type) { case vt_text: printf("\"%s\"",val.u.text); return; case vt_vcc: printf("%s",kptr_print(&val.u.id)); return; case vt_error: printf("%s",errno2str(val.u.num)); return; case vt_pvc: if (atm2text(buf,sizeof(buf),(struct sockaddr *) &val.u.pvc, A2T_PRETTY | A2T_NAME) < 0) strcpy(buf,""); printf("%s",buf); return; case vt_svc: if (atm2text(buf,sizeof(buf),(struct sockaddr *) &val.u.svc, A2T_PRETTY | A2T_NAME) < 0) strcpy(buf,""); printf("%s",buf); return; case vt_qos: if (qos2text(buf,sizeof(buf),&val.u.qos,0) < 0) strcpy(buf,""); printf("%s",buf); return; case vt_sap: if (sap2text(buf,sizeof(buf),&val.u.sap,S2T_NAME) < 0) strcpy(buf,""); printf("%s",buf); return; default: fprintf(stderr,"\ninvalid value type %d\n",val.type); exit(1); } } #define FIELD(FLD,MSG) \ if (fields & FLD) { \ printf("%s",MSG); \ print_value(pick(msg,FLD)); \ putchar('\n'); \ } void dump_msg(const char *prefix,const struct atmsvc_msg *msg) { int fields; if (msg->type >= MSG_TYPES) { printf("%s: unknown message type %d\n",prefix,msg->type); return; } fields = types[msg->type].fields; printf("%s: %s\n",prefix,types[msg->type].name); FIELD(F_VCC, " vcc = "); FIELD(F_LISTEN_VCC, " listen_vcc = "); FIELD(F_REPLY, " reply = "); FIELD(F_PVC, " pvc = "); FIELD(F_LOCAL, " local = "); FIELD(F_QOS, " qos = "); FIELD(F_SVC, " svc = "); FIELD(F_SAP, " sap = "); } #undef FIELD VAR *create_var(const char *name) { VAR *var,**walk; var = malloc(sizeof(VAR)); if (!var) { perror("malloc"); exit(1); } var->name = name; /* strdup'ed */ var->value.type = vt_none; for (walk = &variables; *walk; walk = &(*walk)->next) if (strcmp(name,(*walk)->name) > 0) break; var->next = *walk; *walk = var; return var; } VAR *lookup(const char *name) { VAR *var; for (var = variables; var; var = var->next) if (!strcmp(var->name,name)) break; return var; } static void destroy(VALUE value) { if (value.type == vt_text) free((char *) value.u.text); } void assign(VAR *var,VALUE value) { destroy(var->value); var->value = value; } static int str2errno(const char *str) { const struct errno_table *walk; for (walk = table; walk->name; walk++) if (!strcmp(walk->name,str)) break; return walk->value; } static VALUE convert(VALUE in,VALUE_TYPE type) { VALUE out; char *end; if (in.type == type) { if (type == vt_text) { in.u.text = strdup(in.u.text); if (!in.u.text) { perror("strdup"); exit(1); } } return in; } if (in.type != vt_text) yyerror("type conflict"); out.type = type; switch (type) { case vt_vcc: memset(&out.u.id,0,sizeof(out.u.id)); *(unsigned long *) &out.u.id = strtoul(in.u.text,&end,0); if (*end) yyerror("invalid number"); break; case vt_error: out.u.num = strtoul(in.u.text,&end,0); if (*end) { out.u.num = str2errno(*in.u.text == '-' ? in.u.text+1 : in.u.text); if (!out.u.num) yyerror("invalid error code"); if (*in.u.text == '-') out.u.num = -out.u.num; } break; case vt_svc: if (text2atm(in.u.text,(struct sockaddr *) &out.u.svc, sizeof(out.u.svc), T2A_SVC | T2A_NAME) < 0) yyerror("invalid SVC address"); break; case vt_pvc: if (text2atm(in.u.text,(struct sockaddr *) &out.u.pvc, sizeof(out.u.pvc),T2A_PVC | T2A_NNI | T2A_NAME) < 0) yyerror("invalid PVC address"); break; case vt_qos: if (text2qos(in.u.text,&out.u.qos,0) < 0) yyerror("invalid QOS"); break; case vt_sap: if (text2sap(in.u.text,&out.u.sap,T2S_NAME) < 0) yyerror("invalid SAP address"); break; default: fprintf(stderr,"unexpected conversion type %d\n",type); exit(1); } return out; } void check(VALUE a,VALUE b) { if (a.type == vt_text) a = convert(a,b.type); if (b.type == vt_text) b = convert(b,a.type); if (a.type != b.type) yyerror("type conflict"); switch (a.type) { case vt_vcc: case vt_error: if (kptr_eq(&a.u.id,&b.u.id)) return; break; case vt_svc: if (atm_equal((struct sockaddr *) &a.u.svc, (struct sockaddr *) &b.u.svc,0,0)) return; break; case vt_pvc: if (atm_equal((struct sockaddr *) &a.u.pvc, (struct sockaddr *) &b.u.pvc,0,0)) return; break; case vt_qos: if (qos_equal(&a.u.qos,&b.u.qos)) return; break; case vt_sap: if (sap_equal(&a.u.sap,&b.u.sap,0)) return; break; default: fprintf(stderr,"unexpected conversion type %d\n",a.type); exit(1); } printf("Expected "); print_value(b); printf(",\nbut message contains "); print_value(a); printf("\n"); exit(1); } #define COPY_MSG_VAL(V) \ switch (field) { \ case F_VCC: _COPY(V.u.id,msg->vcc); break; \ case F_LISTEN_VCC: _COPY(V.u.id,msg->listen_vcc); break; \ case F_REPLY: _COPY(V.u.num,msg->reply); break; \ case F_PVC: _COPY(V.u.pvc,msg->pvc); break; \ case F_LOCAL: _COPY(V.u.svc,msg->local); break; \ case F_QOS: _COPY(V.u.qos,msg->qos); break; \ case F_SVC: _COPY(V.u.svc,msg->svc); break; \ case F_SAP: _COPY(V.u.sap,msg->sap); break; \ default: fprintf(stderr,"unexpected field type 0x%x\n",field); \ exit(1); \ } VALUE pick(const struct atmsvc_msg *msg,int field) { VALUE out; if (msg->type >= MSG_TYPES) { fprintf(stderr,"invalid message type %d",msg->type); exit(1); } if (!(types[msg->type].fields & field)) yyerror("no such field in message"); out.type = type_of(field); #define _COPY(V,M) V = M COPY_MSG_VAL(out) #undef _COPY return out; } void store(struct atmsvc_msg *msg,int field,VALUE val) { if (msg->type >= MSG_TYPES) { fprintf(stderr,"invalid message type %d",msg->type); exit(1); } if (!(types[msg->type].fields & field)) yyerror("no such field in message"); if (val.type != type_of(field)) yyerror("type conflict"); #define _COPY(V,M) M = V COPY_MSG_VAL(val) #undef _COPY } #undef COPY_MSG_VAL VALUE eval(VALUE_TYPE type,const char *str) { VALUE a,b; a.type = vt_text; a.u.text = strdup(str); if (!a.u.text) { perror("strdup"); exit(1); } b = convert(a,type); destroy(a); return b; } void cast(VAR *var,VALUE_TYPE type) { VALUE old; if (var->value.type == type) return; old = var->value; var->value = convert(var->value,type); destroy(old); } VALUE_TYPE type_of(int field) { switch (field) { case F_VCC: case F_LISTEN_VCC: return vt_vcc; case F_REPLY: return vt_error; case F_PVC: return vt_pvc; case F_LOCAL: case F_SVC: return vt_svc; case F_QOS: return vt_qos; case F_SAP: return vt_sap; default: fprintf(stderr,"unexpected field type 0x%x\n",field); exit(1); } } int main(int argc,char **argv) { const char *name; name = *argv; if (argc > 2 && !strcmp(argv[1],"-q")) { quiet = 1; argc--; argv++; } if (argc > 2 && !strcmp(argv[1],"-v")) { verbose = 1; argc--; argv++; } if (argc != 2 || (quiet && verbose)) { fprintf(stderr,"usage: %s [-q | -v] socket\n",name); return 1; } sock = un_attach(argv[1]); if (sock < 0) { perror(argv[1]); return 1; } return yyparse(); } linux-atm-2.5.1/src/test/isp.h0000644000200100001440000000265407360675444015020 0ustar chasusers/* isp.h - Internal Signaling Protocol test generator */ /* Written 1997-2000 by Werner Almesberger, EPFL-ICA */ #ifndef ISP_H #define ISP_H #include #include /* Field type values */ #define F_VCC 0x00000001 #define F_LISTEN_VCC 0x00000002 #define F_REPLY 0x00000004 #define F_PVC 0x00000008 #define F_LOCAL 0x00000010 #define F_QOS 0x00000020 #define F_SVC 0x00000040 #define F_SAP 0x00000080 typedef enum { vt_none,vt_text,vt_vcc,vt_error,vt_svc,vt_pvc,vt_qos,vt_sap } VALUE_TYPE; typedef struct { VALUE_TYPE type; union { const char *text; atm_kptr_t id; int num; struct sockaddr_atmsvc svc; struct sockaddr_atmpvc pvc; struct atm_qos qos; struct atm_sap sap; } u; } VALUE; typedef struct _var { const char *name; VALUE value; struct _var *next; } VAR; extern int quiet,verbose; extern VAR *variables; void yyerror(const char *s); void print_value(VALUE val); VAR *create_var(const char *name); VAR *lookup(const char *name); void assign(VAR *var,VALUE value); void check(VALUE a,VALUE b); VALUE pick(const struct atmsvc_msg *msg,int field); void store(struct atmsvc_msg *msg,int field,VALUE val); VALUE eval(VALUE_TYPE type,const char *str); void cast(VAR *var,VALUE_TYPE type); VALUE_TYPE type_of(int field); void send_msg(const struct atmsvc_msg *msg); void recv_msg(struct atmsvc_msg *msg); void dump_msg(const char *prefix,const struct atmsvc_msg *msg); #endif linux-atm-2.5.1/src/test/ispl_l.l0000644000200100001440000000330707360675444015507 0ustar chasusers%{ /* isp.l - Internal Signaling Protocol test generator language */ /* Written 1997,1998 by Werner Almesberger, EPFL-ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "isp.h" #include "ispl_y.h" static int lineno = 1; %} tail ([^a-zA-Z0-9]|$|[ \t\n]*=.*) %% send return TOK_SEND; wait return TOK_WAIT; receive return TOK_RECEIVE; help return TOK_HELP; set return TOK_SET; show return TOK_SHOW; echo return TOK_ECHO; vcc/{tail} return TOK_VCC; listen_vcc/{tail} return TOK_LISTEN_VCC; reply/{tail} return TOK_REPLY; pvc/{tail} return TOK_PVC; local/{tail} return TOK_LOCAL; qos/{tail} return TOK_QOS; svc/{tail} return TOK_SVC; sap/{tail} return TOK_SAP; listen return TOK_LISTEN; bind return TOK_BIND; connect return TOK_CONNECT; accept return TOK_ACCEPT; reject return TOK_REJECT; okay return TOK_OKAY; error return TOK_ERROR; indicate return TOK_INDICATE; close return TOK_CLOSE; itf_notify return TOK_ITF_NOTIFY; modify return TOK_MODIFY; identify return TOK_IDENTIFY; terminate return TOK_TERMINATE; \\[\t ]*\n lineno++; #[^\n]*\n lineno++; [^ \t\n\$=][^ \t\n]* { yylval.str = strdup(yytext); if (!yylval.str) { perror("strdup"); exit(1); } return TOK_VALUE; } \$[0-9a-zA-Z_]+ { yylval.str = strdup(yytext+1); if (!yylval.str) { perror("strdup"); exit(1); } return TOK_VARIABLE; } \n { lineno++; return TOK_EOL; } [\t ]* ; . return *yytext; %% void yyerror(const char *s) { fprintf(stderr,"line %d: %s near \"%s\"\n",lineno,s,yytext); exit(1); } linux-atm-2.5.1/src/test/ispl_y.y0000644000200100001440000000767711235572166015550 0ustar chasusers%{ /* isp.y - Internal Signaling Protocol test generator language */ /* Written 1997,1998 by Werner Almesberger, EPFL-ICA */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include "isp.h" static struct atmsvc_msg msg; int yylex (void); %} %union { char *str; int num; enum atmsvc_msg_type type; VAR *var; }; %token TOK_SEND TOK_WAIT TOK_RECEIVE TOK_HELP TOK_SET TOK_SHOW TOK_ECHO %token TOK_VCC TOK_LISTEN TOK_LISTEN_VCC TOK_REPLY TOK_PVC %token TOK_LOCAL TOK_QOS TOK_SVC TOK_BIND TOK_CONNECT TOK_ACCEPT %token TOK_REJECT TOK_LISTEN TOK_OKAY TOK_ERROR TOK_INDICATE %token TOK_CLOSE TOK_ITF_NOTIFY TOK_MODIFY TOK_SAP %token TOK_IDENTIFY TOK_TERMINATE TOK_EOL %token TOK_VALUE TOK_VARIABLE %type type %type field_type number %type new_var old_var %% all: | command all ; command: TOK_SEND type { memset(&msg,0,sizeof(msg)); msg.type = $2; } values { send_msg(&msg); if (verbose) dump_msg("SENT",&msg); } | TOK_RECEIVE { recv_msg(&msg); if (!quiet) dump_msg("RECV",&msg); } opt_recv | TOK_WAIT number { sleep($2); } | TOK_SET new_var '=' TOK_VALUE { assign($2,eval(vt_text,$4)); free($4); } | TOK_SHOW { VAR *var; for (var = variables; var; var = var->next) { printf("%s = ",var->name); print_value(var->value); putchar('\n'); } } | TOK_ECHO TOK_VALUE { printf("%s\n",$2); free($2); } | help { fprintf(stderr, "Commands:\n" " send msg_type [field=value|field=$var ...]\n" " receive [msg_type [field=value|field=$var|$var=field ...]]\n" " set $var=value\n" " show\n" " echo value\n" " help\n\n" "msg_type: bind, connect, accept, reject, listen, okay, error, indicate,\n" " close, itf_notify, modify, identify, terminate\n" "field: vcc, listen_vcc, reply, pvc, local, qos, svc, sap\n"); } | TOK_EOL ; type: TOK_BIND { $$ = as_bind; } | TOK_CONNECT { $$ = as_connect; } | TOK_ACCEPT { $$ = as_accept; } | TOK_REJECT { $$ = as_reject; } | TOK_LISTEN { $$ = as_listen; } | TOK_OKAY { $$ = as_okay; } | TOK_ERROR { $$ = as_error; } | TOK_INDICATE { $$ = as_indicate; } | TOK_CLOSE { $$ = as_close; } | TOK_ITF_NOTIFY { $$ = as_itf_notify; } | TOK_MODIFY { $$ = as_modify; } | TOK_IDENTIFY { $$ = as_identify; } | TOK_TERMINATE { $$ = as_terminate; } ; values: | value values ; value: field_type '=' old_var { cast($3,type_of($1)); store(&msg,$1,$3->value); } | field_type '=' TOK_VALUE { store(&msg,$1,eval(type_of($1),$3)); free($3); } ; number: TOK_VALUE { char *end; $$ = strtol($1,&end,10); if (*end) yyerror("invalid number"); free($1); } ; opt_recv: | type { if (msg.type != $1) yyerror("wrong message type"); } fields ; fields: | field fields ; field: new_var '=' field_type { assign($1,pick(&msg,$3)); } | field_type '=' old_var { cast($3,type_of($1)); check(pick(&msg,$1),$3->value); } | field_type '=' TOK_VALUE { check(pick(&msg,$1),eval(type_of($1),$3)); free($3); } ; field_type: TOK_VCC { $$ = F_VCC; } | TOK_LISTEN_VCC { $$ = F_LISTEN_VCC; } | TOK_REPLY { $$ = F_REPLY; } | TOK_PVC { $$ = F_PVC; } | TOK_LOCAL { $$ = F_LOCAL; } | TOK_QOS { $$ = F_QOS; } | TOK_SVC { $$ = F_SVC; } | TOK_SAP { $$ = F_SAP; } ; help: TOK_HELP | '?' ; new_var: TOK_VARIABLE { $$ = lookup($1); if ($$) free($1); else $$ = create_var($1); } ; old_var: TOK_VARIABLE { $$ = lookup($1); if (!$$) yyerror("no such variable"); free($1); } ; linux-atm-2.5.1/src/test/pmp_send.c0000644000200100001440000000533010231515575016004 0ustar chasusers#include #include #include #include #include #include #include #include #include #include #include #define BHLI_MAGIC "FORE_ATM" #define NUMPDUS 50000 static void usage(const char *name) { fprintf(stderr, "usage: %s [ [...]]\n", name); exit(1); } int main(int argc, char **argv) { struct sockaddr_atmsvc addr, leaf; struct atm_qos qos; struct atm_sap sap; int s, i, ep_ref, errcount = 0, leaves = 0; int one = 1; char *outbuf = (char *) malloc(8192); if (outbuf == NULL) return 1; if (argc < 2) { fprintf(stderr, "not enough arguments\n"); usage(argv[0]); } if ((s = socket(PF_ATMSVC, SOCK_DGRAM, 0)) < 0) { perror("socket"); return 1; } memset(&addr, 0, sizeof(addr)); if (text2atm(argv[1], (struct sockaddr *) &addr, sizeof(addr), T2A_SVC) < 0) usage(argv[0]); memset(&qos, 0, sizeof(qos)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.rxtp.traffic_class = ATM_NONE; qos.txtp.max_sdu = 8192; memset(&sap, 0, sizeof(sap)); sap.bhli.hl_type = ATM_HL_USER; sap.bhli.hl_length = 8; memcpy(&sap.bhli.hl_info, BHLI_MAGIC, 8); if (setsockopt(s, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS (1)"); return 1; } if (setsockopt(s, SOL_ATM, SO_ATMSAP, &sap, sizeof(sap)) < 0) { perror("setsockopt SO_ATMSAP"); return 1; } if (setsockopt(s, SOL_ATM, SO_MULTIPOINT, &one, sizeof(one)) < 0) { perror("setsockopt SO_MULTIPOINT"); return 1; } if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { /* return here if connect fails. The ADDPARTY ioctl can't * be called until connect succeeds. */ perror("connect"); return 1; } fprintf(stderr, "added leaf 0 at %s\n", argv[1]); leaves = 1; if (argc > 2) for (i = 2; i < argc; i++) { if (text2atm(argv[i], (struct sockaddr *) &leaf, sizeof(leaf), T2A_SVC) >= 0) { if ((ep_ref = ioctl(s, ATM_ADDPARTY, &leaf)) < 0) perror("ATM_ADDPARTY"); else { fprintf(stderr, "added leaf %d at %s\n", ep_ref, argv[i]); leaves++; } } else fprintf(stderr, "invalid leaf address\n"); } fprintf(stderr, "sending %d PDUs\n", NUMPDUS); for (i = 0, errcount = 0; i < NUMPDUS; i++) if (write(s, outbuf, 8192) < 0) errcount++; write(s, NULL, 0); if (errcount > 0) fprintf(stderr, "write() failed %d out of %d times\n", errcount, NUMPDUS); ep_ref = leaves - 1; while (ep_ref >= 0) { i = ioctl(s, ATM_DROPPARTY, &ep_ref); if (i < 0) perror("ioctl(ATM_DROPPARTY)"); else fprintf(stderr, "dropped leaf %d\n", ep_ref); ep_ref--; } if (close(s) < 0) perror("close s"); exit(0); } linux-atm-2.5.1/src/test/svc_recv.c0000644000200100001440000000632710125530352016010 0ustar chasusers#include #include #include #include #include #include #include #include #include #include #include #define BHLI_MAGIC "FORE_ATM" #define NUMPDUS 50000 static void usage(const char *name) { fprintf(stderr, "usage: %s [ [ []]]\n", name); exit(1); } int main(int argc, char **argv) { struct sockaddr_atmsvc addr; struct sockaddr_atmsvc *my_addr; struct atm_qos qos; struct atm_sap sap; int s, i, errcount = 0, fd, rv; int selector = 0; int one = 1; socklen_t len; char *outbuf = (char *) malloc(65535); if (outbuf == NULL) return 1; if ((s = socket(PF_ATMSVC, SOCK_DGRAM, 0)) < 0) { perror("socket"); return 1; } memset(&addr, 0, sizeof(addr)); memset(&qos, 0, sizeof(qos)); memset(&my_addr, 0, sizeof(my_addr)); qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_NONE; qos.rxtp.traffic_class = ATM_UBR; qos.rxtp.max_sdu = 65535; /* Usage: svc_recv [local_host_name [selector [qos]]] */ if (argc > 1) { int answer; my_addr = (struct sockaddr_atmsvc *) malloc(sizeof(struct sockaddr_atmsvc)); answer = text2atm(argv[1], (struct sockaddr *) my_addr, sizeof(struct sockaddr_atmsvc), T2A_SVC | T2A_NAME); if (-1 == answer) { fprintf(stderr, "Bad host name: %s\n", argv[1]); usage(argv[0]); } if (argc > 2) { selector = atoi(argv[2]); my_addr->sas_addr.prv[ATM_ESA_LEN - 1] = (char) selector; if (argc > 3) { if (text2qos(argv[3], &qos, 0) < 0) { fprintf(stderr, "Invalid qos.\n"); usage(argv[0]); } } } } memset(&sap, 0, sizeof(sap)); sap.bhli.hl_type = ATM_HL_USER; sap.bhli.hl_length = 8; memcpy(&sap.bhli.hl_info, BHLI_MAGIC, 8); if (setsockopt(s, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS (1)"); return 1; } if (setsockopt(s, SOL_ATM, SO_ATMSAP, &sap, sizeof(sap)) < 0) { perror("setsockopt SO_ATMSAP"); return 1; } if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) < 0) { perror("setsockopt SO_REUSEADDR"); return 1; } if (NULL != my_addr) { int ret; char atm2textbuf[MAX_ATM_ADDR_LEN + 1]; ret = atm2text(atm2textbuf, sizeof(atm2textbuf), (struct sockaddr *) my_addr, A2T_NAME | A2T_PRETTY | A2T_LOCAL); if (-1 == ret) { fprintf(stderr, "Bad host name: %s\n", argv[1]); return 1; } fprintf(stderr, "binding to addr %s\n", atm2textbuf); ret = bind(s, (struct sockaddr *) my_addr, sizeof(struct sockaddr_atmsvc)); if (ret < 0) { perror("bind() said"); return 1; } } if (listen(s, 1) < 0) { perror("listen"); return 1; } len = sizeof(addr); if ((fd = accept(s, (struct sockaddr *) &addr, &len)) < 0) { perror("accept"); return 1; } fprintf(stderr, "receiving %d PDUs\n", NUMPDUS); for (i = 0, errcount = 0, rv = -1; i < NUMPDUS && rv != 0; i++) if ((rv = read(fd, outbuf, 65535)) < 0) errcount++; if (errcount > 0) fprintf(stderr, "read() failed %d out of %d times\n", errcount, NUMPDUS); fprintf(stderr, "received %d PDUs\n", i - 1); if (close(s) < 0) perror("close s"); if (close(fd) < 0) perror("close fd"); exit(0); } linux-atm-2.5.1/src/test/svc_send.c0000644000200100001440000000376310125530352016003 0ustar chasusers#include #include #include #include #include #include #include #include #include #include #include #define BHLI_MAGIC "FORE_ATM" #define NUMPDUS 50000 static void usage(const char *name) { fprintf(stderr, "usage: %s []\n", name); exit(1); } int main(int argc, char **argv) { struct sockaddr_atmsvc addr; struct atm_qos qos; struct atm_sap sap; int s, i, errcount = 0; unsigned long one = 1; char *outbuf = (char *) malloc(8192); if (outbuf == NULL) return 1; if (argc < 2) { fprintf(stderr, "not enough arguments\n"); usage(argv[0]); } if ((s = socket(PF_ATMSVC, SOCK_DGRAM, 0)) < 0) { perror("socket"); return 1; } memset(&addr, 0, sizeof(addr)); if (text2atm(argv[1], (struct sockaddr *) &addr, sizeof(addr), T2A_SVC) < 0) usage(argv[0]); memset(&qos, 0, sizeof(qos)); memset(&sap, 0, sizeof(sap)); sap.bhli.hl_type = ATM_HL_USER; sap.bhli.hl_length = 8; memcpy(&sap.bhli.hl_info, BHLI_MAGIC, 8); if (argc > 2) { if (text2qos(argv[2], &qos, 0) < 0) { fprintf(stderr, "Invalid qos.\n"); return 1; } } else { qos.aal = ATM_AAL5; qos.txtp.traffic_class = ATM_UBR; qos.rxtp.traffic_class = ATM_NONE; qos.txtp.max_sdu = 8192; } if (setsockopt(s, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) { perror("setsockopt SO_ATMQOS (1)"); return 1; } if (setsockopt(s, SOL_ATM, SO_ATMSAP, &sap, sizeof(sap)) < 0) { perror("setsockopt SO_ATMSAP"); return 1; } if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { perror("connect"); return 1; } fprintf(stderr, "sending %d PDUs of length %d\n", NUMPDUS, qos.txtp.max_sdu); for (i = 0, errcount = 0; i < NUMPDUS; i++) if (write(s, outbuf, qos.txtp.max_sdu) < 0) errcount++; write(s, NULL, 0); if (errcount > 0) fprintf(stderr, "write() failed %d out of %d times\n", errcount, NUMPDUS); if (close(s) < 0) perror("close s"); exit(0); } linux-atm-2.5.1/src/test/ttcp.c0000644000200100001440000006272510230756724015166 0ustar chasusers/* * T T C P . C * * Test TCP connection. Makes a connection on port 5013 * and transfers fabricated buffers or data copied from stdin. * * Usable on 4.2, 4.3, and 4.1a systems by defining one of * BSD42 BSD43 (BSD41a) * Machines using System V with BSD sockets should define SYSV. * * Modified for operation under 4.2BSD, 18 Dec 84 * T.C. Slattery, USNA * Minor improvements, Mike Muuss and Terry Slattery, 16-Oct-85. * Modified in 1989 at Silicon Graphics, Inc. * catch SIGPIPE to be able to print stats when receiver has died * for tcp, don't look for sentinel during reads to allow small transfers * increased default buffer size to 8K, nbuf to 2K to transfer 16MB * moved default port to 5013, beyond IPPORT_USERRESERVED * make sinkmode default because it is more popular, * -s now means don't sink/source * count number of read/write system calls to see effects of * blocking from full socket buffers * for tcp, -D option turns off buffered writes (sets TCP_NODELAY sockopt) * buffer alignment options, -A and -O * print stats in a format that's a bit easier to use with grep & awk * for SYSV, mimic BSD routines to use most of the existing timing code * Modified by Steve Miller of the University of Maryland, College Park * -b sets the socket buffer size (SO_SNDBUF/SO_RCVBUF) * Modified Sept. 1989 at Silicon Graphics, Inc. * restored -s sense at request of tcs@brl * Modified Oct. 1991 at Silicon Graphics, Inc. * use getopt(3) for option processing, add -f and -T options. * SGI IRIX 3.3 and 4.0 releases don't need #define SYSV. * Modified April 1994 by John Lin (lin@cs.purdue.edu) * Add CPU_USAGE complier option and move the "gettimeofday" calls. * Heavily modified since 1995 by Werner Almesberger, EPFL ICA * Various ATM-related changes * * Distribution Status - * Public Domain. Distribution Unlimited. */ #if HAVE_CONFIG_H #include #endif #ifndef lint static char RCSid[] = "ttcp.c $Revision: 1.2.2.1 $"; #endif /*#define CPU_USAGE*/ /* print out CPU usage numbers? */ #define BSD43 /* #define BSD42 */ /* #define BSD41a */ /* #define SYSV */ /* required on SGI IRIX releases before 3.3 */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* struct timeval */ #include #include #if defined(SYSV) #include #include struct rusage { struct timeval ru_utime, ru_stime; }; #define RUSAGE_SELF 0 #else #include #endif struct sockaddr_in sinme; struct sockaddr_in sinhim; struct sockaddr_in frominet; struct sockaddr_atmsvc satm; struct atm_qos qos; int domain, fromlen; int fd; /* fd of network socket */ int buflen = 8 * 1024; /* length of buffer */ char *buf; /* ptr to dynamic buffer */ int nbuf = 2 * 1024; /* number of buffers to send in sinkmode */ int bufoffset = 0; /* align buffer to this */ int bufalign = 16*1024; /* modulo this */ int atm = 0; /* 0 = INET, !0 = ATM */ int pcr = 0; char *qos_spec = NULL; int udp = 0; /* 0 = tcp, !0 = udp */ int options = 0; /* socket options */ int one = 1; /* for 4.3 BSD style setsockopt() */ unsigned short port = 5013; /* TCP port number */ char *host; /* ptr to name of host */ int trans; /* 0=receive, !0=transmit mode */ int sinkmode = 0; /* 0=normal I/O, !0=sink/source mode */ int verbose = 0; /* 0=print basic info, 1=print cpu rate, proc * resource usage. */ int nodelay = 0; /* set TCP_NODELAY socket option */ int b_flag = 0; /* use mread() */ int sockbufsize = 0; /* socket buffer size to use */ char fmt = 'K'; /* output format: k = kilobits, K = kilobytes, * m = megabits, M = megabytes, * g = gigabits, G = gigabytes */ int touchdata = 0; /* access data after reading */ static struct timeval start_time; /* Time at which timing started */ static struct timeval stop_time; /* Time at which timing stopped */ static struct rusage ru0; /* Resource utilization at the start */ struct hostent *addr; char Usage[] = "\ Usage: ttcp -t [-options] host [ < in ]\n\ ttcp -r [-options > out]\n\ Common options:\n\ -l ## length of bufs read from or written to network (default 8192)\n\ -u use UDP instead of TCP\n\ -p ## port number to send to or listen at (default 5001)\n\ -s -t: source a pattern to network\n\ -r: sink (discard) all data from network\n\ -A align the start of buffers to this modulus (default 16384)\n\ -O start buffers at this offset from the modulus (default 0)\n\ -v verbose: print more statistics\n\ -d set SO_DEBUG socket option\n\ -b ## set socket buffer size (if supported)\n\ -f X format for rate: k,K = kilo{bit,byte}; m,M = mega; g,G = giga\n\ -a use native ATM instead of UDP/TCP\n\ Options specific to -t:\n\ -n## number of source bufs written to network (default 2048)\n\ -D don't buffer TCP writes (sets TCP_NODELAY socket option)\n\ -C disable (UDP) checksums\n\ -P X use the specified QOS for the ATM connection. If X is only\n\ a number, the following QOS spec is assumed: cbr:pcr=X\n\ -S X use the specified value for the TOS byte. Without -S, the\n\ system default is used.\n\ Options specific to -r:\n\ -B for -s, only output full blocks as specified by -l (for TAR)\n\ -T \"touch\": access each byte as it's read\n\ "; char stats[128]; double nbytes; /* bytes on net */ unsigned long numCalls; /* # of I/O system calls */ double cput, realt; /* user, real time (seconds) */ void err(const char *); void mes(const char *); void pattern(char *, int); void prep_timer(void); double read_timer(char *, int); int Nread(int, char *, int); int Nwrite(int, char *, int); void delay(long); int mread(int, char *, unsigned); char *outfmt(double); static void prusage(struct rusage *, struct rusage *, struct timeval *, struct timeval *, char *); static void tvadd(struct timeval *, struct timeval *, struct timeval *); static void tvsub(struct timeval *, struct timeval *, struct timeval *); static void psecs(long, char*); void sigpipe(int sig) { return; } /*------------------------------------------------------------------------- * main - *------------------------------------------------------------------------- */ int main(int argc, char **argv) { struct timeval td; unsigned long addr_tmp; const char *port_name = NULL,*tos = NULL; int c; double mbps; int no_check = 0; if (argc < 2) goto usage; while ((c = getopt(argc, argv, "adrstuvBDTb:f:l:n:p:P:S:A:O:C")) != -1) { switch (c) { case 'a': atm = udp = 1; break; case 'B': b_flag = 1; break; case 't': trans = 1; break; case 'r': trans = 0; break; case 'C': no_check = 1; break; case 'd': options |= SO_DEBUG; break; case 'D': #ifdef TCP_NODELAY nodelay = 1; #else fprintf(stderr, "ttcp: -D option ignored: TCP_NODELAY socket option not supported\n"); #endif break; case 'n': nbuf = atoi(optarg); break; case 'l': buflen = atoi(optarg); break; case 's': sinkmode = !sinkmode; break; case 'p': port_name = optarg; break; case 'P': qos_spec = optarg; break; case 'S': tos = optarg; break; case 'u': udp = 1; break; case 'v': verbose = 1; break; case 'A': bufalign = atoi(optarg); break; case 'O': bufoffset = atoi(optarg); break; case 'b': #if defined(SO_SNDBUF) || defined(SO_RCVBUF) sockbufsize = atoi(optarg); #else fprintf(stderr, "ttcp: -b option ignored: SO_SNDBUF/SO_RCVBUF socket options not supported\n"); #endif break; case 'f': fmt = *optarg; break; case 'T': touchdata = 1; break; default: goto usage; } } if (port_name) { if (atm) { goto usage; } else { struct servent *se; se = getservbyname(port_name,udp ? "udp" : "tcp"); if (se) port = ntohs(se->s_port); else { char *end; port = strtoul(port_name,&end,0); if (*end) goto usage; } } } host = argv[optind]; if (atm) { char *end; memset(&satm,0,sizeof(satm)); if (!host) satm.sas_family = AF_ATMSVC; else if (text2atm(host,(struct sockaddr *) &satm, sizeof(satm),T2A_PVC | T2A_SVC | T2A_NAME) < 0) { fprintf(stderr,"invalid ATM address (PVC or SVC expected)\n"); exit(1); } memset(&qos,0,sizeof(qos)); qos.rxtp.max_sdu = qos.txtp.max_sdu = buflen; if (qos_spec && ((pcr = strtol(qos_spec,&end,10)), *end)) { if (text2qos(qos_spec,&qos,T2Q_DEFAULTS) < 0) { fprintf(stderr,"invalid QOS specification\n"); exit(1); } } else { if (!qos_spec) pcr = 0; if (!trans) qos.rxtp.traffic_class = ATM_UBR; else if (!pcr) qos.txtp.traffic_class = ATM_UBR; else { qos.txtp.traffic_class = ATM_CBR; qos.txtp.max_pcr = pcr; } } if (!qos.aal) qos.aal = ATM_AAL5; } if (!atm && trans) { /* xmitr */ if (optind == argc) goto usage; bzero((char *)&sinhim, sizeof(sinhim)); if (atoi(host) > 0 ) { /* Numeric */ sinhim.sin_family = AF_INET; #if defined(cray) addr_tmp = inet_addr(host); sinhim.sin_addr = addr_tmp; #else sinhim.sin_addr.s_addr = inet_addr(host); #endif } else { if ((addr=gethostbyname(host)) == NULL) err("bad hostname"); sinhim.sin_family = addr->h_addrtype; bcopy(addr->h_addr,(char*)&addr_tmp, addr->h_length); #if defined(cray) sinhim.sin_addr = addr_tmp; #else sinhim.sin_addr.s_addr = addr_tmp; #endif /* cray */ } sinhim.sin_port = htons(port); sinme.sin_port = 0; /* free choice */ } else { /* rcvr */ sinme.sin_port = htons(port); } if (udp && buflen < 5) { buflen = 5; /* send more than the sentinel size */ } if ((buf = (char *)malloc(buflen+bufalign)) == (char *)NULL) err("malloc"); if (bufalign != 0) buf +=(bufalign - ((int)buf % bufalign) + bufoffset) % bufalign; if (trans) { fprintf(stdout, "ttcp-t: buflen=%d, nbuf=%d, align=%d/%d, port=%d", buflen, nbuf, bufalign, bufoffset, port); if (sockbufsize) fprintf(stdout, ", sockbufsize=%d", sockbufsize); fprintf(stdout, " %s -> %s\n", atm?"atm":udp?"udp":"tcp", host); } else { fprintf(stdout, "ttcp-r: buflen=%d, nbuf=%d, align=%d/%d, port=%d", buflen, nbuf, bufalign, bufoffset, port); if (sockbufsize) fprintf(stdout, ", sockbufsize=%d", sockbufsize); fprintf(stdout, " %s\n", atm?"atm":udp?"udp":"tcp"); } if ((fd = socket(atm ? satm.sas_family : AF_INET, udp?SOCK_DGRAM:SOCK_STREAM,0)) < 0) err("socket"); mes("socket"); if (atm) { if (setsockopt(fd,SOL_ATM,SO_ATMQOS,&qos,sizeof(qos)) < 0) err("setsockopt SO_ATMQOS"); } else if (setsockopt(fd, SOL_SOCKET, SO_NO_CHECK, &no_check, sizeof(long)) < 0) err("setsockopt: no_check"); #ifdef SO_ATMSAP if (atm && satm.sas_family == AF_ATMSVC) { struct atm_sap sap; memset(&sap,0,sizeof(sap)); sap.bhli.hl_type = ATM_HL_VENDOR; sap.bhli.hl_length = 7; memcpy(sap.bhli.hl_info,TTCP_HLT_VS_ID,7); if (setsockopt(fd,SOL_ATM,SO_ATMSAP,&sap,sizeof(sap)) < 0) err("setsockopt SO_ATMSAP"); } #endif if (!atm || satm.sas_family == AF_ATMPVC || !trans) if (bind(fd, atm ? (struct sockaddr *) &satm : (struct sockaddr *) &sinme, atm ? satm.sas_family == AF_ATMPVC ? sizeof(struct sockaddr_atmpvc) : sizeof(struct sockaddr_atmsvc) : sizeof(sinme)) < 0) err("bind"); if (!udp || (atm && satm.sas_family == AF_ATMSVC)) { signal(SIGPIPE, sigpipe); if (trans) { /* We are the client if transmitting */ if (options) { #if defined(BSD42) if(setsockopt(fd, SOL_SOCKET, options, 0, 0) < 0) #else /* BSD43 */ if(setsockopt(fd, SOL_SOCKET, options, &one, sizeof(one)) < 0) #endif err("setsockopt"); } if (connect(fd, atm ? (struct sockaddr *) &satm : (struct sockaddr *) &sinhim, atm ? sizeof(satm) : sizeof(sinhim)) < 0) err("connect"); mes("connect"); #ifdef TCP_NODELAY if (nodelay) { struct protoent *p; p = getprotobyname("tcp"); if( p && setsockopt(fd, p->p_proto, TCP_NODELAY, &one, sizeof(one)) < 0) err("setsockopt: nodelay"); mes("nodelay"); } if (atm) sleep(1); /* grr ... */ #endif } else { /* otherwise, we are the server and * should listen for the connections */ #if defined(ultrix) || defined(sgi) || 1 listen(fd,1); /* workaround for alleged u4.2 bug */ #else listen(fd,0); /* allow a queue of 0 */ #endif fromlen = sizeof(frominet); domain = AF_INET; if ((fd=accept(fd, (struct sockaddr *) &frominet, &fromlen) ) < 0) err("accept"); { struct sockaddr_atmsvc peer; int peerlen = sizeof(peer); if (getpeername(fd, (struct sockaddr *) &peer, &peerlen) < 0) { err("getpeername"); } if (atm) { char name[MAX_ATM_ADDR_LEN+1]; if (atm2text(name,MAX_ATM_ADDR_LEN+1,(struct sockaddr *) &peer,/* A2T_NAME | */ A2T_PRETTY) < 0) strcpy(name,""); fprintf(stderr,"ttcp-r: accept from %s\n",name); } else fprintf(stderr,"ttcp-r: accept from %s\n", inet_ntoa(((struct sockaddr_in *) &peer)-> sin_addr)); } if (options) { #if defined(BSD42) if (setsockopt(fd, SOL_SOCKET, options, 0, 0) < 0) #else /* BSD43 */ if (setsockopt(fd, SOL_SOCKET, options, &one, sizeof(one)) < 0) #endif err("setsockopt"); } } } /* set socket buffer size */ #if defined(SO_SNDBUF) || defined(SO_RCVBUF) if (sockbufsize) { int len; if (trans) { /* set send socket buffer if we are transmitting */ if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sockbufsize, sizeof sockbufsize) < 0) err("setsockopt: sndbuf"); len = sizeof sockbufsize; if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sockbufsize, &len) < 0) perror("getsockopt: sndbuf"); mes("sndbuf"); } else { /* set receive socket buffer if we are receiving */ if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &sockbufsize, sizeof sockbufsize) < 0) err("setsockopt: rcvbuf"); len = sizeof sockbufsize; if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &sockbufsize, &len) < 0) perror("getsockopt: rcvbuf"); mes("rcvbuf"); } printf("real buffer size = %d\n",sockbufsize); } #endif if (tos) { unsigned char tos_value; tos_value = strtoul(tos,NULL,0); if (setsockopt(fd,SOL_IP,IP_TOS,&tos_value,1) < 0) err("setsockopt IP_TOS"); } errno = 0; if (sinkmode) { register int cnt; if (trans) { pattern(buf, buflen); /* construct a data pattern */ if (udp) (void)Nwrite(fd, buf, 4); /* rcvr start */ #ifdef CPU_USAGE prep_timer(); /* start timer */ #else gettimeofday(&start_time, (struct timezone *)0); #endif while (nbuf-- && Nwrite(fd, buf, buflen) == buflen) nbytes += buflen; if (udp) (void)Nwrite(fd, buf, 4); /* rcvr end */ } else { /* receive mode */ if (udp) { while ((cnt = Nread(fd, buf, buflen)) > 0) { static int going = 0; if(cnt <= 4) { if (going) break; /* "EOF" */ going = 1; #ifdef CPU_USAGE prep_timer(); /* start timer */ #else gettimeofday(&start_time, (struct timezone *)0); #endif prep_timer(); } else { nbytes += cnt; } } } else { /* TCP */ #ifdef CPU_USAGE prep_timer(); /* start timer */ #else gettimeofday(&start_time, (struct timezone *)0); #endif while ((cnt=Nread(fd,buf,buflen)) > 0) { nbytes += cnt; } } } } else { /* not sink mode */ register int cnt; #ifdef CPU_USAGE prep_timer(); /* start timer */ #else gettimeofday(&start_time, (struct timezone *)0); #endif if (trans) { while((cnt = read(0, buf, buflen)) > 0 && Nwrite(fd,buf,cnt) == cnt) nbytes += cnt; } else { while((cnt = Nread(fd,buf,buflen)) > 0 && write(1,buf,cnt) == cnt) nbytes += cnt; } } if (errno) err("IO"); /* if TCP close the connection to make sure all the data sent */ if (!udp) close(fd); gettimeofday(&stop_time, (struct timezone *)0); /* Get real time */ tvsub(&td, &stop_time, &start_time); realt = (double)td.tv_sec + ((double)td.tv_usec / (double)1000000.0); #ifdef CPU_USAGE (void) read_timer(stats, sizeof(stats)); /* stop timer */ #endif if (udp && trans) { (void)Nwrite(fd, buf, 4); /* signal rcvr end */ (void)Nwrite(fd, buf, 4); /* rcvr end */ (void)Nwrite(fd, buf, 4); /* rcvr end */ (void)Nwrite(fd, buf, 4); /* rcvr end */ } if (cput <= 0.0) cput = 0.001; if (realt <= 0.0) realt = 0.001; mbps = (double)(nbytes * 8) / realt / 1000000.0; fprintf(stdout, "ttcp%s: %.0f bytes in %f real seconds = %s/sec (%f Mb/sec)\n", trans?"-t":"-r", nbytes, realt, outfmt((double)nbytes/realt), mbps); #ifdef CPU_USAGE fprintf(stdout,"ttcp%s: %s\n", trans?"-t":"-r", stats); #endif if (verbose) { fprintf(stdout, "ttcp%s: %.0f bytes in %.2f CPU seconds = %s/cpu sec\n", trans?"-t":"-r", nbytes, cput, outfmt((double)nbytes/cput)); fprintf(stdout, "ttcp%s: %ld I/O calls, msec/call = %.2f, calls/sec = %.2f\n", trans?"-t":"-r", numCalls, 1000.0 * realt/((double)numCalls), ((double)numCalls)/realt); fprintf(stdout, "ttcp%s: buffer address %#lx\n", trans?"-t":"-r", (unsigned long )buf); } if (udp && trans) sleep(1); exit(0); usage: fprintf(stderr, Usage); exit(1); } void err(const char *s) { int en = errno; fprintf(stderr,"ttcp%s: ", trans?"-t":"-r"); errno = en; perror(s); errno = en; fprintf(stderr,"errno=%d\n",errno); exit(1); } void mes(const char *s) { fprintf(stderr,"ttcp%s: %s\n", trans?"-t":"-r", s); } /*------------------------------------------------------------------------- * pattern - *------------------------------------------------------------------------- */ void pattern(cp, cnt) register char *cp; register int cnt; { register char c; c = 0; while( cnt-- > 0 ) { while( !isprint((c&0x7F)) ) c++; *cp++ = (c++&0x7F); } } char * outfmt(b) double b; { static char obuf[50]; switch (fmt) { case 'G': sprintf(obuf, "%f GB", b / 1024.0 / 1024.0 / 1024.0); break; default: case 'K': sprintf(obuf, "%f KB", b / 1024.0); break; case 'M': sprintf(obuf, "%f MB", b / 1024.0 / 1024.0); break; case 'g': sprintf(obuf, "%f Gbit", b * 8.0 / 1024.0 / 1024.0 / 1024.0); break; case 'k': sprintf(obuf, "%f Kbit", b * 8.0 / 1024.0); break; case 'm': sprintf(obuf, "%f Mbit", b * 8.0 / 1024.0 / 1024.0); break; } return obuf; } #if defined(SYSV) /*ARGSUSED*/ static getrusage(ignored, ru) int ignored; register struct rusage *ru; { struct tms buf; times(&buf); /* Assumption: HZ <= 2147 (LONG_MAX/1000000) */ ru->ru_stime.tv_sec = buf.tms_stime / HZ; ru->ru_stime.tv_usec = ((buf.tms_stime % HZ) * 1000000) / HZ; ru->ru_utime.tv_sec = buf.tms_utime / HZ; ru->ru_utime.tv_usec = ((buf.tms_utime % HZ) * 1000000) / HZ; } /*ARGSUSED*/ static gettimeofday(tp, zp) struct timeval *tp; struct timezone *zp; { tp->tv_sec = time(0); tp->tv_usec = 0; } #endif /* SYSV */ /* * P R E P _ T I M E R */ void prep_timer(void) { gettimeofday(&start_time, (struct timezone *)0); getrusage(RUSAGE_SELF, &ru0); } /*------------------------------------------------------------------------- * read_timer - *------------------------------------------------------------------------- */ double read_timer(str,len) char *str; int len; { struct rusage ru1; struct timeval tend, tstart, td; char line[132]; getrusage(RUSAGE_SELF, &ru1); prusage(&ru0, &ru1, &stop_time, &start_time, line); (void)strncpy( str, line, len ); /* Get CPU time (user+sys) */ tvadd( &tend, &ru1.ru_utime, &ru1.ru_stime ); tvadd( &tstart, &ru0.ru_utime, &ru0.ru_stime ); tvsub( &td, &tend, &tstart ); cput = td.tv_sec + ((double)td.tv_usec) / 1000000; if( cput < 0.00001 ) cput = 0.00001; return( cput ); } static void prusage(r0, r1, e, b, outp) register struct rusage *r0, *r1; struct timeval *e, *b; char *outp; { struct timeval tdiff; register time_t t; register char *cp; register int i; int ms; t = (r1->ru_utime.tv_sec-r0->ru_utime.tv_sec)*100+ (r1->ru_utime.tv_usec-r0->ru_utime.tv_usec)/10000+ (r1->ru_stime.tv_sec-r0->ru_stime.tv_sec)*100+ (r1->ru_stime.tv_usec-r0->ru_stime.tv_usec)/10000; ms = (e->tv_sec-b->tv_sec)*100 + (e->tv_usec-b->tv_usec)/10000; #define END(x) {while(*x) x++;} #if defined(SYSV) cp = "%Uuser %Ssys %Ereal %P"; #else #if defined(sgi) /* IRIX 3.3 will show 0 for %M,%F,%R,%C */ cp = "%Uuser %Ssys %Ereal %P %Mmaxrss %F+%Rpf %Ccsw"; #else cp = (char *) "%Uuser %Ssys %Ereal %P %Xi+%Dd %Mmaxrss %F+%Rpf %Ccsw"; #endif #endif for (; *cp; cp++) { if (*cp != '%') *outp++ = *cp; else if (cp[1]) switch(*++cp) { case 'U': tvsub(&tdiff, &r1->ru_utime, &r0->ru_utime); sprintf(outp,"%ld.%01ld", tdiff.tv_sec, tdiff.tv_usec/100000); END(outp); break; case 'S': tvsub(&tdiff, &r1->ru_stime, &r0->ru_stime); sprintf(outp,"%ld.%01ld", tdiff.tv_sec, tdiff.tv_usec/100000); END(outp); break; case 'E': psecs(ms / 100, outp); END(outp); break; case 'P': sprintf(outp,"%d%%", (int) (t*100 / ((ms ? ms : 1)))); END(outp); break; #if !defined(SYSV) case 'W': i = r1->ru_nswap - r0->ru_nswap; sprintf(outp,"%d", i); END(outp); break; case 'X': sprintf(outp,"%ld", t == 0 ? 0 : (r1->ru_ixrss-r0->ru_ixrss)/t); END(outp); break; case 'D': sprintf(outp,"%ld", t == 0 ? 0 : (r1->ru_idrss+r1->ru_isrss-(r0->ru_idrss+r0->ru_isrss))/t); END(outp); break; case 'K': sprintf(outp,"%ld", t == 0 ? 0 : ((r1->ru_ixrss+r1->ru_isrss+r1->ru_idrss) - (r0->ru_ixrss+r0->ru_idrss+r0->ru_isrss))/t); END(outp); break; case 'M': sprintf(outp,"%ld", r1->ru_maxrss/2); END(outp); break; case 'F': sprintf(outp,"%ld", r1->ru_majflt-r0->ru_majflt); END(outp); break; case 'R': sprintf(outp,"%ld", r1->ru_minflt-r0->ru_minflt); END(outp); break; case 'I': sprintf(outp,"%ld", r1->ru_inblock-r0->ru_inblock); END(outp); break; case 'O': sprintf(outp,"%ld", r1->ru_oublock-r0->ru_oublock); END(outp); break; case 'C': sprintf(outp,"%ld+%ld", r1->ru_nvcsw-r0->ru_nvcsw, r1->ru_nivcsw-r0->ru_nivcsw ); END(outp); break; #endif /* !SYSV */ } } *outp = '\0'; } static void tvadd(tsum, t0, t1) struct timeval *tsum, *t0, *t1; { tsum->tv_sec = t0->tv_sec + t1->tv_sec; tsum->tv_usec = t0->tv_usec + t1->tv_usec; if (tsum->tv_usec > 1000000) tsum->tv_sec++, tsum->tv_usec -= 1000000; } /*------------------------------------------------------------------------- * tvsub - tdiff = t1 - t0 *------------------------------------------------------------------------- */ static void tvsub(tdiff, t1, t0) struct timeval *tdiff, *t1, *t0; { tdiff->tv_sec = t1->tv_sec - t0->tv_sec; tdiff->tv_usec = t1->tv_usec - t0->tv_usec; if (tdiff->tv_usec < 0) { tdiff->tv_sec--; tdiff->tv_usec += 1000000; } } static void psecs(l,cp) long l; register char *cp; { register int i; i = l / 3600; if (i) { sprintf(cp,"%d:", i); END(cp); i = l % 3600; sprintf(cp,"%d%d", (i/60) / 10, (i/60) % 10); END(cp); } else { i = l; sprintf(cp,"%d", i / 60); END(cp); } i %= 60; *cp++ = ':'; sprintf(cp,"%d%d", i / 10, i % 10); } /* * N R E A D */ int Nread(_fd, _buf, count) int _fd; char *_buf; int count; { #if 0 struct sockaddr_in from; int len = sizeof(from); #endif register int cnt; if( udp ) { #if 0 cnt = recvfrom(_fd, _buf, count, 0, &from, &len ); #else cnt = recv(_fd, _buf, count, 0); #endif numCalls++; } else { if( b_flag ) cnt = mread( _fd, _buf, count ); /* fill buf */ else { cnt = read( _fd, _buf, count ); numCalls++; } if (touchdata && cnt > 0) { register int c = cnt, sum; register char *b = _buf; while (c--) sum += *b++; } } return(cnt); } /*------------------------------------------------------------------------- * Nwrite - *------------------------------------------------------------------------- */ int Nwrite(_fd, _buf, count) int _fd; char *_buf; int count; { register int cnt; if (udp) { again: if (atm) cnt = write(_fd, _buf, count); else cnt = sendto(_fd, _buf, count, 0, (struct sockaddr *) &sinhim, sizeof(sinhim)); numCalls++; if ( cnt<0 && errno == ENOBUFS ) { delay(18000); errno = 0; goto again; } } else { cnt = write(_fd, _buf, count); numCalls++; } if (cnt < 0) perror("WA:write"); return(cnt); } void delay(long us) { struct timeval tv; tv.tv_sec = 0; tv.tv_usec = us; (void)select( 1, (void *)0, (void *)0, (void *)0, &tv ); } /* * M R E A D * * This function performs the function of a read(II) but will * call read(II) multiple times in order to get the requested * number of characters. This can be necessary because * network connections don't deliver data with the same * grouping as it is written with. Written by Robert S. Miles, BRL. */ int mread(_fd, bufp, n) int _fd; register char *bufp; unsigned n; { register unsigned count = 0; register int nread; do { nread = read(_fd, bufp, n-count); numCalls++; if(nread < 0) { perror("ttcp_mread"); return(-1); } if(nread == 0) return((int)count); count += (unsigned)nread; bufp += nread; } while(count < n); return((int)count); } linux-atm-2.5.1/src/test/window.c0000644000200100001440000001626307360675444015530 0ustar chasusers/* window.c, M. Welsh (mdw24@cl.cam.ac.uk) * A simple bandwidth/latency benchmark for Linux/ATM. Usage: * window [send | recv] * where * is the VPI/VCI to transmit data on * is the VPI/VCI to transmit ACKs on * is the number of iterations to run * is the size of each message to send * is the number of messages to send between ACKs * * Two VC's are used so that the program can be run between two processes * on the same machine. * * Example: * apple% window recv 0.32 0.33 1000 1024 10 * banana% window send 0.32 0.33 1000 1024 10 * * Copyright (c) 1996 University of Cambridge Computer Laboratory * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * M. Welsh, 6 July 1996 * */ #if HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #undef MDW_DEBUG #undef TERSE_OUTPUT #define REPLY_SIZE 40 #define MAX_WINDOW_SIZE 100 static double get_seconds(void) { struct timeval t; gettimeofday(&t,NULL); return (double)t.tv_sec+((double)t.tv_usec/(double)1e6); } int main(int argc, char **argv) { struct sockaddr_atmpvc addr1, addr2; struct atm_qos qos1, qos2; char *buffer; char buffer2[REPLY_SIZE]; int s1, s2; ssize_t size; char *theaddr1, *theaddr2; int NUM_WINDOWS; int PINGPONG_SIZE; int WINDOW_SIZE; int i, w; int sending = 0; double t1, t2; if (argc != 7) { fprintf(stderr,"Usage: window [send | recv] \n"); exit(-1); } if (!strcmp(argv[1],"send")) sending = 1; theaddr1 = argv[2]; theaddr2 = argv[3]; NUM_WINDOWS = atoi(argv[4]); PINGPONG_SIZE = atoi(argv[5]); WINDOW_SIZE = atoi(argv[6]); if (WINDOW_SIZE > MAX_WINDOW_SIZE) { fprintf(stderr,"Maximum window size is %d.\n",MAX_WINDOW_SIZE); exit(-1); } if ((s1 = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); exit(-1); } if ((s2 = socket(PF_ATMPVC,SOCK_DGRAM,0)) < 0) { perror("socket"); exit(-1); } memset(&addr1, 0, sizeof(addr1)); memset(&addr2, 0, sizeof(addr2)); if (text2atm(theaddr1, (struct sockaddr *)&addr1, sizeof(addr1), T2A_PVC | T2A_UNSPEC | T2A_WILDCARD) < 0) { fprintf(stderr,"window: invalid address syntax\n"); exit(-1); } if (text2atm(theaddr2, (struct sockaddr *)&addr2, sizeof(addr2), T2A_PVC | T2A_UNSPEC | T2A_WILDCARD) < 0) { fprintf(stderr,"window: invalid address syntax\n"); exit(-1); } /* Do a lot of them */ if (sending) { buffer = (char *)malloc(PINGPONG_SIZE); if (!buffer) { fprintf(stderr,"Can't malloc buffer\n"); exit(-1); } for (i = 0; i < PINGPONG_SIZE; i++) { buffer[i] = i&0xff; } memset(&qos1,0,sizeof(qos1)); memset(&qos2,0,sizeof(qos2)); qos1.aal = ATM_AAL5; qos1.txtp.traffic_class = ATM_UBR; qos1.txtp.max_sdu = PINGPONG_SIZE; qos2.aal = ATM_AAL5; qos2.rxtp.traffic_class = ATM_UBR; qos2.rxtp.max_sdu = REPLY_SIZE; if (setsockopt(s1,SOL_ATM,SO_ATMQOS,&qos1,sizeof(qos1)) < 0) { perror("setsockopt SO_ATMQOS1"); exit(-1); } if (setsockopt(s2,SOL_ATM,SO_ATMQOS,&qos2,sizeof(qos2)) < 0) { perror("setsockopt SO_ATMQOS2"); exit(-1); } if (connect(s1, (struct sockaddr *)&addr1, sizeof(addr1)) < 0) { perror("connect"); exit(-1); } if (bind(s2, (struct sockaddr *)&addr2, sizeof(addr1)) < 0) { perror("bind"); exit(-1); } #ifndef TERSE_OUTPUT fprintf(stderr,"Sending %d %d-byte messages, window size %d.\n", NUM_WINDOWS*WINDOW_SIZE,PINGPONG_SIZE,WINDOW_SIZE); #endif t1 = get_seconds(); for (i = 0; i < NUM_WINDOWS; i++) { #ifdef MDW_DEBUG fprintf(stderr,"Sending %d...",i); #endif for (w = 0; w < WINDOW_SIZE; w++) { (void)write(s1, buffer, PINGPONG_SIZE); } #ifdef MDW_DEBUG fprintf(stderr,"sent!..."); #endif #if 1 /* XXX mdw testing! XXX XXX */ /* Get a reply */ size = read(s2, buffer2, REPLY_SIZE); if (size != REPLY_SIZE) { fprintf(stderr,"Received reply of length %d, should be %d.\n", size,REPLY_SIZE); } #endif } t2 = get_seconds(); #ifdef TERSE_OUTPUT fprintf(stderr,"%d %d %d %f %f %f\n", NUM_WINDOWS, PINGPONG_SIZE, WINDOW_SIZE, (t2-t1), ((t2-t1)*1e6)/(NUM_WINDOWS*WINDOW_SIZE), (NUM_WINDOWS*WINDOW_SIZE*PINGPONG_SIZE*8)/(1e6*(t2-t1))); #else fprintf(stderr,"Sent %d %d-byte messages (window size %d) in %f seconds.\n", NUM_WINDOWS*WINDOW_SIZE,PINGPONG_SIZE,WINDOW_SIZE,(t2-t1)); fprintf(stderr,"%f usec/message or %f Mbit/sec\n", ((t2-t1)*1e6)/(NUM_WINDOWS*WINDOW_SIZE), (NUM_WINDOWS*WINDOW_SIZE*PINGPONG_SIZE*8)/(1e6*(t2-t1))); #endif } else { buffer = (char *)malloc(PINGPONG_SIZE); if (!buffer) { fprintf(stderr,"Can't malloc buffer\n"); exit(-1); } memset(&qos1,0,sizeof(qos1)); memset(&qos2,0,sizeof(qos2)); qos1.rxtp.traffic_class = ATM_UBR; qos1.rxtp.max_sdu = PINGPONG_SIZE; qos2.txtp.traffic_class = ATM_UBR; qos2.txtp.max_sdu = REPLY_SIZE; if (setsockopt(s1,SOL_ATM,SO_ATMQOS,&qos1,sizeof(qos1)) < 0) { perror("setsockopt SO_ATMQOS1"); exit(-1); } if (setsockopt(s2,SOL_ATM,SO_ATMQOS,&qos2,sizeof(qos2)) < 0) { perror("setsockopt SO_ATMQOS2"); exit(-1); } if (bind(s1, (struct sockaddr *)&addr1, sizeof(addr1)) < 0) { perror("bind"); exit(-1); } if (connect(s2, (struct sockaddr *)&addr2, sizeof(addr2)) < 0) { perror("connect"); exit(-1); } i = 0; while (i < NUM_WINDOWS*WINDOW_SIZE) { #ifdef MDW_DEBUG fprintf(stderr,"Receiving %d... ",i); #endif size = read(s1, buffer, PINGPONG_SIZE); #ifdef MDW_DEBUG fprintf(stderr,"received!\n"); #endif if (size == PINGPONG_SIZE) { i++; if ((i % WINDOW_SIZE) == 0) { /* Send reply */ #ifdef MDW_DEBUG fprintf(stderr,"Sending reply..."); #endif (void)write(s2, buffer2, REPLY_SIZE); #ifdef MDW_DEBUG fprintf(stderr,"sent!\n"); #endif } } else { fprintf(stderr,"Received message of length %d, should be %d.\n", size,PINGPONG_SIZE); } } } return 0; } linux-atm-2.5.1/src/test/Makefile.in0000644000200100001440000005441411304770377016114 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ EXTRA_PROGRAMS = pmp_send$(EXEEXT) bin_PROGRAMS = $(am__EXEEXT_1) noinst_PROGRAMS = $(am__EXEEXT_2) subdir = src/test DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ispl_l.c \ ispl_y.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = aread$(EXEEXT) awrite$(EXEEXT) ttcp_atm$(EXEEXT) \ atmswitch$(EXEEXT) svc_recv$(EXEEXT) svc_send$(EXEEXT) \ @pmp_send@ $(am__empty) am__installdirs = "$(DESTDIR)$(bindir)" am__EXEEXT_2 = align$(EXEEXT) aping$(EXEEXT) br$(EXEEXT) bw$(EXEEXT) \ isp$(EXEEXT) window$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) am_align_OBJECTS = align.$(OBJEXT) align_OBJECTS = $(am_align_OBJECTS) align_LDADD = $(LDADD) align_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_aping_OBJECTS = aping.$(OBJEXT) aping_OBJECTS = $(am_aping_OBJECTS) aping_LDADD = $(LDADD) aping_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_aread_OBJECTS = aread.$(OBJEXT) aread_OBJECTS = $(am_aread_OBJECTS) aread_LDADD = $(LDADD) aread_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_atmswitch_OBJECTS = atmswitch.$(OBJEXT) atmswitch_OBJECTS = $(am_atmswitch_OBJECTS) atmswitch_LDADD = $(LDADD) atmswitch_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_awrite_OBJECTS = awrite.$(OBJEXT) awrite_OBJECTS = $(am_awrite_OBJECTS) awrite_LDADD = $(LDADD) awrite_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_br_OBJECTS = br.$(OBJEXT) br_OBJECTS = $(am_br_OBJECTS) br_LDADD = $(LDADD) br_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_bw_OBJECTS = bw.$(OBJEXT) bw_OBJECTS = $(am_bw_OBJECTS) bw_LDADD = $(LDADD) bw_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_isp_OBJECTS = isp.$(OBJEXT) ispl_y.$(OBJEXT) ispl_l.$(OBJEXT) isp_OBJECTS = $(am_isp_OBJECTS) am_pmp_send_OBJECTS = pmp_send.$(OBJEXT) pmp_send_OBJECTS = $(am_pmp_send_OBJECTS) pmp_send_LDADD = $(LDADD) pmp_send_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_svc_recv_OBJECTS = svc_recv.$(OBJEXT) svc_recv_OBJECTS = $(am_svc_recv_OBJECTS) svc_recv_LDADD = $(LDADD) svc_recv_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_svc_send_OBJECTS = svc_send.$(OBJEXT) svc_send_OBJECTS = $(am_svc_send_OBJECTS) svc_send_LDADD = $(LDADD) svc_send_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_ttcp_atm_OBJECTS = ttcp.$(OBJEXT) ttcp_atm_OBJECTS = $(am_ttcp_atm_OBJECTS) ttcp_atm_LDADD = $(LDADD) ttcp_atm_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la am_window_OBJECTS = window.$(OBJEXT) window_OBJECTS = $(am_window_OBJECTS) window_LDADD = $(LDADD) window_DEPENDENCIES = $(top_builddir)/src/lib/libatm.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) YLWRAP = $(top_srcdir)/ylwrap YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) SOURCES = $(align_SOURCES) $(aping_SOURCES) $(aread_SOURCES) \ $(atmswitch_SOURCES) $(awrite_SOURCES) $(br_SOURCES) \ $(bw_SOURCES) $(isp_SOURCES) $(pmp_send_SOURCES) \ $(svc_recv_SOURCES) $(svc_send_SOURCES) $(ttcp_atm_SOURCES) \ $(window_SOURCES) DIST_SOURCES = $(align_SOURCES) $(aping_SOURCES) $(aread_SOURCES) \ $(atmswitch_SOURCES) $(awrite_SOURCES) $(br_SOURCES) \ $(bw_SOURCES) $(isp_SOURCES) $(pmp_send_SOURCES) \ $(svc_recv_SOURCES) $(svc_send_SOURCES) $(ttcp_atm_SOURCES) \ $(window_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ USRPGMS = aread awrite ttcp_atm atmswitch svc_recv svc_send @pmp_send@ PGMS = align aping br bw isp window LDADD = $(top_builddir)/src/lib/libatm.la atmswitch_SOURCES = atmswitch.c aread_SOURCES = aread.c awrite_SOURCES = awrite.c svc_recv_SOURCES = svc_recv.c svc_send_SOURCES = svc_send.c ttcp_atm_SOURCES = ttcp.c pmp_send_SOURCES = pmp_send.c align_SOURCES = align.c aping_SOURCES = aping.c br_SOURCES = br.c bw_SOURCES = bw.c isp_SOURCES = isp.c isp.h ispl_y.y ispl_l.l isp_XTRAS = $(LDADD) isp_LDADD = $(isp_XTRAS) -lfl isp_DEPENDENCIES = $(isp_XTRAS) window_SOURCES = window.c CLEANFILES = errnos.inc EXTRA_DIST = ispl_y.h README.isp all: all-am .SUFFIXES: .SUFFIXES: .c .l .lo .o .obj .y $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/test/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list align$(EXEEXT): $(align_OBJECTS) $(align_DEPENDENCIES) @rm -f align$(EXEEXT) $(LINK) $(align_OBJECTS) $(align_LDADD) $(LIBS) aping$(EXEEXT): $(aping_OBJECTS) $(aping_DEPENDENCIES) @rm -f aping$(EXEEXT) $(LINK) $(aping_OBJECTS) $(aping_LDADD) $(LIBS) aread$(EXEEXT): $(aread_OBJECTS) $(aread_DEPENDENCIES) @rm -f aread$(EXEEXT) $(LINK) $(aread_OBJECTS) $(aread_LDADD) $(LIBS) atmswitch$(EXEEXT): $(atmswitch_OBJECTS) $(atmswitch_DEPENDENCIES) @rm -f atmswitch$(EXEEXT) $(LINK) $(atmswitch_OBJECTS) $(atmswitch_LDADD) $(LIBS) awrite$(EXEEXT): $(awrite_OBJECTS) $(awrite_DEPENDENCIES) @rm -f awrite$(EXEEXT) $(LINK) $(awrite_OBJECTS) $(awrite_LDADD) $(LIBS) br$(EXEEXT): $(br_OBJECTS) $(br_DEPENDENCIES) @rm -f br$(EXEEXT) $(LINK) $(br_OBJECTS) $(br_LDADD) $(LIBS) bw$(EXEEXT): $(bw_OBJECTS) $(bw_DEPENDENCIES) @rm -f bw$(EXEEXT) $(LINK) $(bw_OBJECTS) $(bw_LDADD) $(LIBS) isp$(EXEEXT): $(isp_OBJECTS) $(isp_DEPENDENCIES) @rm -f isp$(EXEEXT) $(LINK) $(isp_OBJECTS) $(isp_LDADD) $(LIBS) pmp_send$(EXEEXT): $(pmp_send_OBJECTS) $(pmp_send_DEPENDENCIES) @rm -f pmp_send$(EXEEXT) $(LINK) $(pmp_send_OBJECTS) $(pmp_send_LDADD) $(LIBS) svc_recv$(EXEEXT): $(svc_recv_OBJECTS) $(svc_recv_DEPENDENCIES) @rm -f svc_recv$(EXEEXT) $(LINK) $(svc_recv_OBJECTS) $(svc_recv_LDADD) $(LIBS) svc_send$(EXEEXT): $(svc_send_OBJECTS) $(svc_send_DEPENDENCIES) @rm -f svc_send$(EXEEXT) $(LINK) $(svc_send_OBJECTS) $(svc_send_LDADD) $(LIBS) ttcp_atm$(EXEEXT): $(ttcp_atm_OBJECTS) $(ttcp_atm_DEPENDENCIES) @rm -f ttcp_atm$(EXEEXT) $(LINK) $(ttcp_atm_OBJECTS) $(ttcp_atm_LDADD) $(LIBS) window$(EXEEXT): $(window_OBJECTS) $(window_DEPENDENCIES) @rm -f window$(EXEEXT) $(LINK) $(window_OBJECTS) $(window_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/align.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aping.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aread.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atmswitch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awrite.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/br.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ispl_l.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ispl_y.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pmp_send.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svc_recv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svc_send.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ttcp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< .l.c: $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f ispl_l.c -rm -f ispl_y.c clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool clean-noinstPROGRAMS ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/src/Makefile.in0000644000200100001440000004123211304770374015124 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = include lib test debug qgen q2931 saal sigd maint arpd ilmid man led lane \ mpoad oamd switch config extra br2684 all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: linux-atm-2.5.1/ltmain.sh0000644000200100001440000060603111056073676014121 0ustar chasusers# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. basename="s,^.*/,,g" # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: progname=`echo "$progpath" | $SED $basename` modename="$progname" # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 PROGRAM=ltmain.sh PACKAGE=libtool VERSION=1.5.26 TIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)" # Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= duplicate_deps=no preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 ##################################### # Shell function definitions: # This seems to be the best place for them # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $mkdir "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || { $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 exit $EXIT_FAILURE } fi $echo "X$my_tmpdir" | $Xsed } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ $SED -n -e '1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $echo $win32_libid_type } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case "$@ " in " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit $EXIT_FAILURE # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 exit $EXIT_FAILURE fi } # func_extract_archives gentop oldlib ... func_extract_archives () { my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" my_status="" $show "${rm}r $my_gentop" $run ${rm}r "$my_gentop" $show "$mkdir $my_gentop" $run $mkdir "$my_gentop" my_status=$? if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then exit $my_status fi for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) extracted_serial=`expr $extracted_serial + 1` my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" $show "${rm}r $my_xdir" $run ${rm}r "$my_xdir" $show "$mkdir $my_xdir" $run $mkdir "$my_xdir" exit_status=$? if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then exit $exit_status fi case $host in *-darwin*) $show "Extracting $my_xabs" # Do not bother doing anything if just a dry run if test -z "$run"; then darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` if test -n "$darwin_arches"; then darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= $show "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we have a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` lipo -create -output "$darwin_file" $darwin_files done # $darwin_filelist ${rm}r unfat-$$ cd "$darwin_orig_dir" else cd "$darwin_orig_dir" func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches fi # $run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # End of Shell function definitions ##################################### # Darwin sucks eval std_shrext=\"$shrext_cmds\" disable_libs=no # Parse our command line options once, thoroughly. while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; tag) tagname="$arg" preserve_args="${preserve_args}=$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 exit $EXIT_FAILURE ;; esac case $tagname in CC) # Don't test for the "default" C tag, as we know, it's there, but # not specially marked. ;; *) if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi ;; esac ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) echo "\ $PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." exit $? ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath # Now print the configurations for the tags. for tagname in $taglist; do ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" done exit $? ;; --debug) $echo "$progname: enabling shell trace mode" set -x preserve_args="$preserve_args $arg" ;; --dry-run | -n) run=: ;; --features) $echo "host: $host" if test "$build_libtool_libs" = yes; then $echo "enable shared libraries" else $echo "disable shared libraries" fi if test "$build_old_libs" = yes; then $echo "enable static libraries" else $echo "disable static libraries" fi exit $? ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: preserve_args="$preserve_args $arg" ;; --tag) prevopt="--tag" prev=tag preserve_args="$preserve_args --tag" ;; --tag=*) set tag "$optarg" ${1+"$@"} shift prev=tag preserve_args="$preserve_args --tag" ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi case $disable_libs in no) ;; shared) build_libtool_libs=no build_old_libs=yes ;; static) build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` ;; esac # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit $EXIT_FAILURE fi arg_mode=target continue ;; -static | -prefer-pic | -prefer-non-pic) later="$later $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; * ) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, and some SunOS ksh mistreat backslash-escaping # in scan sets (worked around with variable expansion), # and furthermore cannot handle '|' '&' '(' ')' in scan sets # at all, so we specify them separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac base_compile="$base_compile $lastarg" done # for arg case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" exit $EXIT_FAILURE ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit $EXIT_FAILURE ;; *) # Get the name of the library object. [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSifmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.ii) xform=ii ;; *.class) xform=class ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.[fF][09]?) xform=[fF][09]. ;; *.for) xform=for ;; *.java) xform=java ;; *.obj) xform=obj ;; *.sx) xform=sx ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit $EXIT_FAILURE ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` case $qlibobj in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qlibobj="\"$qlibobj\"" ;; esac test "X$libobj" != "X$qlibobj" \ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir= else xdir=$xdir/ fi lobj=${xdir}$objdir/$objname if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi $run $rm $removelist trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$progpath" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi $echo "$srcfile" > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` case $qsrcfile in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qsrcfile="\"$qsrcfile\"" ;; esac $run $rm "$libobj" "${libobj}T" # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then $show "$mv $output_obj $lobj" if $run $mv $output_obj $lobj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the PIC object to the libtool object file. test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the non-PIC object the libtool object file. # Only append if the libtool object file exists. test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit $EXIT_FAILURE fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat $save_arg` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi done else $echo "$modename: link input file \`$save_arg' does not exist" exit $EXIT_FAILURE fi arg=$save_arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; shrext) shrext_cmds="$arg" prev= continue ;; darwin_framework|darwin_framework_skip) test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit $EXIT_FAILURE fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework|-arch|-isysroot) case " $CC " in *" ${arg} ${1} "* | *" ${arg} ${1} "*) prev=darwin_framework_skip ;; *) compiler_flags="$compiler_flags $arg" prev=darwin_framework ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" notinst_path="$notinst_path $dir" fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs -framework System" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. -model) compile_command="$compile_command $arg" compiler_flags="$compiler_flags $arg" finalize_command="$finalize_command $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -module) module=yes continue ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m* pass through architecture-specific compiler args for GCC # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" compiler_flags="$compiler_flags $arg" continue ;; -shrext) prev=shrext continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir exit_status=$? if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then exit $exit_status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac case $host in *cygwin* | *mingw* | *pw32*) # don't eliminate duplications in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) duplicate_compiler_generated_deps=$duplicate_deps ;; esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit $EXIT_FAILURE ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then library_names= old_library= case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` if eval $echo \"$deplib\" 2>/dev/null \ | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because the file extensions .$libext of this argument makes me believe" $echo "*** that it is just a static archive that I should not used here." else $echo $echo "*** Warning: Linking the shared library $output against the" $echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 exit $EXIT_FAILURE fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit $EXIT_FAILURE fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $absdir" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes ; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi # This is a shared library # Warn about portability, can't link against -module's on # some systems (darwin) if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi $echo "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`$echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$extract_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$old_archive_from_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a module then we can not link against # it, someone is ignoring the new warnings I added if /usr/bin/file -L $add 2> /dev/null | $EGREP ": [^:]* bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo $echo "** And there doesn't seem to be a static archive available" $echo "** The link will probably fail, sorry" else add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit $EXIT_FAILURE fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $echo $echo "*** Warning: This system can not link to static lib archive $lib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $echo "*** But as you try to build a module library, libtool will still create " $echo "*** a static module, that should work as long as the dlopening application" $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="$absdir" fi depdepl= case $host in *-*-darwin*) # we do not want to link against static libs, # but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$deplibdir/$depdepl" ; then depdepl="$deplibdir/$depdepl" elif test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" else # Can't find it, oh well... depdepl= fi # do not add paths which are already there case " $newlib_search_path " in *" $path "*) ;; *) newlib_search_path="$newlib_search_path $path";; esac fi path="" ;; *) path="-L$path" ;; esac ;; -l*) case $host in *-*-darwin*) # Again, we only want to link against shared libraries eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` for tmp in $newlib_search_path ; do if test -f "$tmp/lib$tmp_libs.dylib" ; then eval depdepl="$tmp/lib$tmp_libs.dylib" break fi done path="" ;; *) continue ;; esac ;; *) continue ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac case " $deplibs " in *" $depdepl "*) ;; *) deplibs="$depdepl $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) case " $deplibs" in *\ -l* | *\ -L*) $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; esac if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit $EXIT_FAILURE else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" $echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$2" number_minor="$3" number_revision="$4" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$2" revision="$3" age="$4" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then major=`expr $current - $age` else major=`expr $current - $age + 1` fi case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$echo "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done if test -n "$removelist"; then $show "${rm}r $removelist" $run ${rm}r $removelist fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for file magic test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name=`expr $a_deplib : '-l\(.*\)'` # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval $echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for regex pattern test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` done fi if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | grep . >/dev/null; then $echo if test "X$deplibs_check_method" = "Xnone"; then $echo "*** Warning: inter-library dependencies are not supported in this platform." else $echo "*** Warning: inter-library dependencies are not known to be supported." fi $echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $echo $echo "*** Warning: libtool could not satisfy all declared inter-library" $echo "*** dependencies of module $libname. Therefore, libtool will create" $echo "*** a static module, that should work as long as the dlopening" $echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $echo "*** The inter-library dependencies that have been dropped here will be" $echo "*** automatically added whenever a program is linked with this library" $echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $echo $echo "*** Since this library must not contain undefined symbols," $echo "*** because either the platform does not support them or" $echo "*** it was explicitly requested with -no-undefined," $echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then case $archive_cmds in *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; esac else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" $run eval "$cmd" || exit $? skipped_export=false else # The command line is too long to execute in one step. $show "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*" 2>/dev/null` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise. $echo "creating reloadable object files..." # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$echo "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= delfiles= last_robj= k=1 output=$output_objdir/$output_la-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do eval test_cmds=\"$reload_cmds $objlist $last_robj\" if test "X$objlist" = X || { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && test "$len" -le "$max_cmd_len"; }; then objlist="$objlist $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext k=`expr $k + 1` output=$output_objdir/$output_la-${k}.$objext objlist=$obj len=1 fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if ${skipped_export-false}; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols libobjs=$output # Append the command to create the export file. eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi # Set up a command to remove the reloadable object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi # Append the command to remove the reloadable object files # to the just-reset $cmds. eval cmds=\"\$cmds~\$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then $show "${rm}r $gentop" $run ${rm}r "$gentop" fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) case " $deplibs" in *\ -l* | *\ -L*) $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; esac if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit $EXIT_FAILURE fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. 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 output="$obj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* ) $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac else $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* ) $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval '$echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else $echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ " case $host in *cygwin* | *mingw* ) $echo >> "$output_objdir/$dlsyms" "\ /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs */ struct { " ;; * ) $echo >> "$output_objdir/$dlsyms" "\ const struct { " ;; esac $echo >> "$output_objdir/$dlsyms" "\ const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. case $host in *cygwin* | *mingw* ) if test -f "$output_objdir/${outputname}.def" ; then compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` else compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` fi ;; * ) compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ;; esac ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit $EXIT_FAILURE ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" exit_status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $exit_status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) output_name=`basename $output` output_path=`dirname $output` cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $rm $cwrappersource $cwrapper trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 cat > $cwrappersource <> $cwrappersource<<"EOF" #include #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) /* -DDEBUG is fairly common in CFLAGS. */ #undef DEBUG #if defined DEBUGWRAPPER # define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) #else # define DEBUG(format, ...) #endif const char *program_name = NULL; void * xmalloc (size_t num); char * xstrdup (const char *string); const char * base_name (const char *name); char * find_executable(const char *wrapper); int check_executable(const char *path); char * strendzap(char *str, const char *pat); void lt_fatal (const char *message, ...); int main (int argc, char *argv[]) { char **newargz; int i; program_name = (char *) xstrdup (base_name (argv[0])); DEBUG("(main) argv[0] : %s\n",argv[0]); DEBUG("(main) program_name : %s\n",program_name); newargz = XMALLOC(char *, argc+2); EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" newargz[1] = find_executable(argv[0]); if (newargz[1] == NULL) lt_fatal("Couldn't find %s", argv[0]); DEBUG("(main) found exe at : %s\n",newargz[1]); /* we know the script has the same name, without the .exe */ /* so make sure newargz[1] doesn't end in .exe */ strendzap(newargz[1],".exe"); for (i = 1; i < argc; i++) newargz[i+1] = xstrdup(argv[i]); newargz[argc+1] = NULL; for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" return 127; } void * xmalloc (size_t num) { void * p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char)name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable(const char * path) { struct stat st; DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && ( /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ #if defined (S_IXOTH) ((st.st_mode & S_IXOTH) == S_IXOTH) || #endif #if defined (S_IXGRP) ((st.st_mode & S_IXGRP) == S_IXGRP) || #endif ((st.st_mode & S_IXUSR) == S_IXUSR)) ) return 1; else return 0; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise */ char * find_executable (const char* wrapper) { int has_slash = 0; const char* p; const char* p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char* concat_name; DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable(concat_name)) return concat_name; XFREE(concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable(concat_name)) return concat_name; XFREE(concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char* path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char* q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR(*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen(tmp); concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable(concat_name)) return concat_name; XFREE(concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen(tmp); concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable(concat_name)) return concat_name; XFREE(concat_name); return NULL; } char * strendzap(char *str, const char *pat) { size_t len, patlen; assert(str != NULL); assert(pat != NULL); len = strlen(str); patlen = strlen(pat); if (patlen <= len) { str += len - patlen; if (strcmp(str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char * mode, const char * message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } EOF # we should really use a build-platform specific compiler # here, but OTOH, the wrappers (shell script and this C one) # are only useful if you want to execute the "real" binary. # Since the "real" binary is built for $host, then this # wrapper might as well be built for $host, too. $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource ;; esac $rm $output trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" $echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit $EXIT_FAILURE fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else $echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $echo >> $output "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \$*\" exit $EXIT_FAILURE fi else # The program doesn't exist. \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit $EXIT_FAILURE fi fi\ " chmod +x $output fi exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do $echo "X$obj" | $Xsed -e 's%^.*/%%' done | sort | sort -uc >/dev/null 2>&1); then : else $echo "copying selected object files to avoid basename conflicts..." if test -z "$gentop"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" exit_status=$? if test "$exit_status" -ne 0 && test ! -d "$gentop"; then exit $exit_status fi fi save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase counter=`expr $counter + 1` case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" $run ln "$obj" "$gentop/$newobj" || $run cp "$obj" "$gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done for obj in $save_oldobjs do oldobjs="$objlist $obj" objlist="$objlist $obj" eval test_cmds=\"$old_archive_cmds\" if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && test "$len" -le "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do eval cmd=\"$cmd\" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit $EXIT_SUCCESS ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit $EXIT_FAILURE fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` else relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit $EXIT_FAILURE fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" cmds=$postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' fi exit $lt_exit } done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then file=`$echo $file|${SED} 's,.exe$,,'` stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # Note that it is not necessary on cygwin/mingw to append a dot to # foo even if both foo and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. # # If there is no directory component, then add one. case $wrapper in */* | *\\*) . ${wrapper} ;; *) . ./${wrapper} ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit $EXIT_FAILURE fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # Note that it is not necessary on cygwin/mingw to append a dot to # foo even if both foo and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. # # If there is no directory component, then add one. case $wrapper in */* | *\\*) . ${wrapper} ;; *) . ./${wrapper} ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir=`func_mktempdir` file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$old_striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. cmds=$old_postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. cmds=$finish_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit $EXIT_SUCCESS $echo "X----------------------------------------------------------------------" | $Xsed $echo "Libraries have been installed in:" for libdir in $libdirs; do $echo " $libdir" done $echo $echo "If you ever happen to want to link against installed libraries" $echo "in a given directory, LIBDIR, you must either use libtool, and" $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" $echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" $echo " during execution" fi if test -n "$runpath_var"; then $echo " - add LIBDIR to the \`$runpath_var' environment variable" $echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $echo $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit $EXIT_FAILURE fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit $EXIT_FAILURE fi fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit $EXIT_SUCCESS fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi rmdirs= origobjdir="$objdir" for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$origobjdir" else objdir="$dir/$origobjdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. cmds=$postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. cmds=$old_postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # Read the .lo file . $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" \ && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" \ && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$noexename # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit $EXIT_FAILURE fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --tag=TAG use configuration variables from tag TAG --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." exit $EXIT_SUCCESS ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." exit $? # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared disable_libs=shared # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static disable_libs=static # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: linux-atm-2.5.1/autom4te.cache/0000755000200100001440000000000011304770374015072 5ustar chasuserslinux-atm-2.5.1/autom4te.cache/requests0000644000200100001440000002470411304770374016677 0ustar chasusers# This file was generated. # It contains the lists of macros which have been traced. # It can be safely removed. @request = ( bless( [ '0', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', '/usr/share/aclocal/libtool.m4', '/usr/share/aclocal-1.11/amversion.m4', '/usr/share/aclocal-1.11/auxdir.m4', '/usr/share/aclocal-1.11/cond.m4', '/usr/share/aclocal-1.11/depend.m4', '/usr/share/aclocal-1.11/depout.m4', '/usr/share/aclocal-1.11/header.m4', '/usr/share/aclocal-1.11/init.m4', '/usr/share/aclocal-1.11/install-sh.m4', '/usr/share/aclocal-1.11/lead-dot.m4', '/usr/share/aclocal-1.11/lex.m4', '/usr/share/aclocal-1.11/make.m4', '/usr/share/aclocal-1.11/missing.m4', '/usr/share/aclocal-1.11/mkdirp.m4', '/usr/share/aclocal-1.11/options.m4', '/usr/share/aclocal-1.11/runlog.m4', '/usr/share/aclocal-1.11/sanity.m4', '/usr/share/aclocal-1.11/silent.m4', '/usr/share/aclocal-1.11/strip.m4', '/usr/share/aclocal-1.11/substnot.m4', '/usr/share/aclocal-1.11/tar.m4', 'configure.in' ], { '_LT_AC_TAGCONFIG' => 1, 'AM_ENABLE_STATIC' => 1, 'm4_pattern_forbid' => 1, 'AC_LIBTOOL_COMPILER_OPTION' => 1, 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, '_LT_AC_SHELL_INIT' => 1, 'AC_DISABLE_SHARED' => 1, 'AC_DEFUN' => 1, '_LT_COMPILER_BOILERPLATE' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_LIBTOOL_SETUP' => 1, 'AC_LIBTOOL_WIN32_DLL' => 1, '_LT_AC_LANG_CXX_CONFIG' => 1, 'AM_PROG_MKDIR_P' => 1, 'AC_PROG_LD_RELOAD_FLAG' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AM_MISSING_HAS_RUN' => 1, 'AM_SUBST_NOTMAKE' => 1, 'AM_MISSING_PROG' => 1, 'AC_LIBTOOL_DLOPEN_SELF' => 1, 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, '_LT_AC_LANG_C_CONFIG' => 1, 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, 'AM_PROG_INSTALL_STRIP' => 1, '_m4_warn' => 1, 'AC_LIBTOOL_OBJDIR' => 1, 'AM_SANITY_CHECK' => 1, 'AC_LIBTOOL_LINKER_OPTION' => 1, 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, '_LT_AC_CHECK_DLFCN' => 1, 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, 'LT_AC_PROG_RC' => 1, 'AC_LIBTOOL_CXX' => 1, '_AM_PROG_TAR' => 1, 'AC_LIBTOOL_GCJ' => 1, 'LT_AC_PROG_GCJ' => 1, 'AM_DEP_TRACK' => 1, '_LT_AC_PROG_CXXCPP' => 1, 'AM_DISABLE_STATIC' => 1, 'AM_CONFIG_HEADER' => 1, '_AC_PROG_LIBTOOL' => 1, '_LT_AC_LANG_F77' => 1, 'AC_LIBTOOL_CONFIG' => 1, '_AM_IF_OPTION' => 1, '_AM_SUBST_NOTMAKE' => 1, 'AC_PATH_TOOL_PREFIX' => 1, 'AC_LIBTOOL_F77' => 1, '_AM_AUTOCONF_VERSION' => 1, 'm4_pattern_allow' => 1, 'AM_DISABLE_SHARED' => 1, 'AM_SET_LEADING_DOT' => 1, 'AM_PROG_LIBTOOL' => 1, '_LT_AC_LANG_CXX' => 1, '_AM_DEPENDENCIES' => 1, '_LT_AC_FILE_LTDLL_C' => 1, 'AM_PROG_LD' => 1, 'AC_LIBTOOL_LANG_C_CONFIG' => 1, '_LT_AC_SYS_COMPILER' => 1, 'AM_PROG_NM' => 1, 'AU_DEFUN' => 1, 'AC_PROG_NM' => 1, 'AC_LIBTOOL_DLOPEN' => 1, 'AC_PROG_LD' => 1, 'AC_LIBLTDL_CONVENIENCE' => 1, 'AC_ENABLE_FAST_INSTALL' => 1, 'AC_PROG_LD_GNU' => 1, 'AC_DEPLIBS_CHECK_METHOD' => 1, 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, 'AC_LIBLTDL_INSTALLABLE' => 1, 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, '_AM_SET_OPTION' => 1, '_LT_LINKER_BOILERPLATE' => 1, 'AC_LIBTOOL_PROG_CC_C_O' => 1, 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_DISABLE_STATIC' => 1, 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AC_DEFUN_ONCE' => 1, '_LT_AC_LOCK' => 1, '_LT_AC_LANG_RC_CONFIG' => 1, '_LT_AC_LANG_GCJ' => 1, 'AC_LIBTOOL_RC' => 1, '_LT_AC_PROG_ECHO_BACKSLASH' => 1, 'AM_SILENT_RULES' => 1, 'AC_DISABLE_FAST_INSTALL' => 1, 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, '_LT_AC_SYS_LIBPATH_AIX' => 1, '_LT_AC_TRY_DLOPEN_SELF' => 1, 'include' => 1, 'LT_AC_PROG_SED' => 1, 'AM_ENABLE_SHARED' => 1, 'AM_AUX_DIR_EXPAND' => 1, '_LT_AC_LANG_GCJ_CONFIG' => 1, 'AC_ENABLE_SHARED' => 1, 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, '_LT_AC_LANG_F77_CONFIG' => 1, '_AM_SET_OPTIONS' => 1, 'AM_RUN_LOG' => 1, '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AC_LIBTOOL_PICMODE' => 1, 'AM_PROG_LEX' => 1, '_LT_REQUIRED_DARWIN_CHECKS' => 1, 'AC_ENABLE_STATIC' => 1, 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, 'AC_CHECK_LIBM' => 1, '_LT_AC_TAGVAR' => 1, 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, '_AM_MANGLE_OPTION' => 1, 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, 'AM_CONDITIONAL' => 1, 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, 'AM_SET_DEPDIR' => 1, '_LT_CC_BASENAME' => 1, 'AM_PROG_INSTALL_SH' => 1, 'm4_include' => 1, 'AC_PROG_EGREP' => 1, 'AC_PATH_MAGIC' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, 'AM_MAKE_INCLUDE' => 1 } ], 'Autom4te::Request' ), bless( [ '1', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.in' ], { '_LT_AC_TAGCONFIG' => 1, 'AM_PROG_F77_C_O' => 1, 'AC_INIT' => 1, 'm4_pattern_forbid' => 1, '_AM_COND_IF' => 1, 'AC_CANONICAL_TARGET' => 1, 'AC_SUBST' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_FC_SRCEXT' => 1, 'AC_CANONICAL_HOST' => 1, 'AC_PROG_LIBTOOL' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'LT_CONFIG_LTDL_DIR' => 1, 'AC_REQUIRE_AUX_FILE' => 1, 'AC_CONFIG_LINKS' => 1, 'm4_sinclude' => 1, 'LT_SUPPORTED_TAG' => 1, 'AM_MAINTAINER_MODE' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, '_m4_warn' => 1, 'AM_PROG_CXX_C_O' => 1, '_AM_COND_ENDIF' => 1, 'AM_ENABLE_MULTILIB' => 1, 'AM_SILENT_RULES' => 1, 'AC_CONFIG_FILES' => 1, 'include' => 1, 'LT_INIT' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_LIBSOURCE' => 1, 'AM_PROG_FC_C_O' => 1, 'AC_CANONICAL_BUILD' => 1, 'AC_FC_FREEFORM' => 1, 'AH_OUTPUT' => 1, '_AM_SUBST_NOTMAKE' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'sinclude' => 1, 'm4_pattern_allow' => 1, 'AM_PROG_CC_C_O' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AM_CONDITIONAL' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'm4_include' => 1, '_AM_COND_ELSE' => 1, 'AC_SUBST_TRACE' => 1 } ], 'Autom4te::Request' ) ); linux-atm-2.5.1/autom4te.cache/traces.00000644000200100001440000154171011304770370016441 0ustar chasusersm4trace:/usr/share/aclocal/libtool.m4:25: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote AM_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or AM_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])]) m4trace:/usr/share/aclocal/libtool.m4:60: -1- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ]) m4trace:/usr/share/aclocal/libtool.m4:80: -1- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac _LT_REQUIRED_DARWIN_CHECKS AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ]) m4trace:/usr/share/aclocal/libtool.m4:226: -1- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ]) m4trace:/usr/share/aclocal/libtool.m4:243: -1- AC_DEFUN([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) m4trace:/usr/share/aclocal/libtool.m4:260: -1- AC_DEFUN([_LT_COMPILER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ]) m4trace:/usr/share/aclocal/libtool.m4:274: -1- AC_DEFUN([_LT_LINKER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* ]) m4trace:/usr/share/aclocal/libtool.m4:286: -1- AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS], [ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. echo "int foo(void){return 1;}" > conftest.c $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib ${wl}-single_module conftest.c if test -f libconftest.dylib; then lt_cv_apple_cc_single_mod=yes rm -rf libconftest.dylib* fi rm conftest.c fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[0123]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil="~$DSYMUTIL \$lib || :" else _lt_dsymutil= fi ;; esac ]) m4trace:/usr/share/aclocal/libtool.m4:363: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ]) m4trace:/usr/share/aclocal/libtool.m4:384: -1- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ]) m4trace:/usr/share/aclocal/libtool.m4:397: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])]) m4trace:/usr/share/aclocal/libtool.m4:551: -1- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) libsuff=64 case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ]) m4trace:/usr/share/aclocal/libtool.m4:709: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED]) AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ]) m4trace:/usr/share/aclocal/libtool.m4:754: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ]) m4trace:/usr/share/aclocal/libtool.m4:790: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ]) m4trace:/usr/share/aclocal/libtool.m4:908: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ]) m4trace:/usr/share/aclocal/libtool.m4:916: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ]) m4trace:/usr/share/aclocal/libtool.m4:1006: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ]) m4trace:/usr/share/aclocal/libtool.m4:1120: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* ]) ]) m4trace:/usr/share/aclocal/libtool.m4:1172: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ]) m4trace:/usr/share/aclocal/libtool.m4:1198: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ]) m4trace:/usr/share/aclocal/libtool.m4:1216: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ]) m4trace:/usr/share/aclocal/libtool.m4:1256: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ]) m4trace:/usr/share/aclocal/libtool.m4:1287: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" m4_if($1,[],[ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec], [lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"]) sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec], [lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"]) sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi ]) m4trace:/usr/share/aclocal/libtool.m4:1911: -1- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ]) m4trace:/usr/share/aclocal/libtool.m4:2017: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ]) m4trace:/usr/share/aclocal/libtool.m4:2025: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ]) m4trace:/usr/share/aclocal/libtool.m4:2034: -1- AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ]) m4trace:/usr/share/aclocal/libtool.m4:2063: -1- AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ]) m4trace:/usr/share/aclocal/libtool.m4:2073: -1- AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ]) m4trace:/usr/share/aclocal/libtool.m4:2102: -1- AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ]) m4trace:/usr/share/aclocal/libtool.m4:2112: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ]) m4trace:/usr/share/aclocal/libtool.m4:2141: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ]) m4trace:/usr/share/aclocal/libtool.m4:2151: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ]) m4trace:/usr/share/aclocal/libtool.m4:2175: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ]) m4trace:/usr/share/aclocal/libtool.m4:2238: -1- AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ]) m4trace:/usr/share/aclocal/libtool.m4:2253: -1- AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ]) m4trace:/usr/share/aclocal/libtool.m4:2575: -1- AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ]) m4trace:/usr/share/aclocal/libtool.m4:2627: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ]) m4trace:/usr/share/aclocal/libtool.m4:2656: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ]) m4trace:/usr/share/aclocal/libtool.m4:2682: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ]) m4trace:/usr/share/aclocal/libtool.m4:2709: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ]) m4trace:/usr/share/aclocal/libtool.m4:2716: -1- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ]) m4trace:/usr/share/aclocal/libtool.m4:2724: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP], [ AC_REQUIRE([AC_PROG_CXX]) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP fi ]) m4trace:/usr/share/aclocal/libtool.m4:2737: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ]) m4trace:/usr/share/aclocal/libtool.m4:2744: -1- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ]) m4trace:/usr/share/aclocal/libtool.m4:2753: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ]) m4trace:/usr/share/aclocal/libtool.m4:2760: -1- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ]) m4trace:/usr/share/aclocal/libtool.m4:2774: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ]) m4trace:/usr/share/aclocal/libtool.m4:2785: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) m4trace:/usr/share/aclocal/libtool.m4:2786: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ]) m4trace:/usr/share/aclocal/libtool.m4:2866: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) m4trace:/usr/share/aclocal/libtool.m4:2867: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" if test "$GXX" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ]) m4trace:/usr/share/aclocal/libtool.m4:3873: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP], [AC_REQUIRE([LT_AC_PROG_SED])dnl dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_AC_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac ]) m4trace:/usr/share/aclocal/libtool.m4:4070: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) m4trace:/usr/share/aclocal/libtool.m4:4071: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG], [AC_REQUIRE([AC_PROG_F77]) AC_LANG_PUSH(Fortran 77) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_AC_TAGVAR(GCC, $1)="$G77" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ]) m4trace:/usr/share/aclocal/libtool.m4:4179: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) m4trace:/usr/share/aclocal/libtool.m4:4180: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], [AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ]) m4trace:/usr/share/aclocal/libtool.m4:4239: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) m4trace:/usr/share/aclocal/libtool.m4:4240: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG], [AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ]) m4trace:/usr/share/aclocal/libtool.m4:4284: -1- AC_DEFUN([AC_LIBTOOL_CONFIG], [# The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ _LT_AC_TAGVAR(compiler, $1) \ _LT_AC_TAGVAR(CC, $1) \ _LT_AC_TAGVAR(LD, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ _LT_AC_TAGVAR(old_archive_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ _LT_AC_TAGVAR(predep_objects, $1) \ _LT_AC_TAGVAR(postdep_objects, $1) \ _LT_AC_TAGVAR(predeps, $1) \ _LT_AC_TAGVAR(postdeps, $1) \ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \ _LT_AC_TAGVAR(archive_cmds, $1) \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ _LT_AC_TAGVAR(postinstall_cmds, $1) \ _LT_AC_TAGVAR(postuninstall_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ _LT_AC_TAGVAR(allow_undefined_flag, $1) \ _LT_AC_TAGVAR(no_undefined_flag, $1) \ _LT_AC_TAGVAR(export_symbols_cmds, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ _LT_AC_TAGVAR(hardcode_automatic, $1) \ _LT_AC_TAGVAR(module_cmds, $1) \ _LT_AC_TAGVAR(module_expsym_cmds, $1) \ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ _LT_AC_TAGVAR(fix_srcfile_path, $1) \ _LT_AC_TAGVAR(exclude_expsyms, $1) \ _LT_AC_TAGVAR(include_expsyms, $1); do case $var in _LT_AC_TAGVAR(old_archive_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ _LT_AC_TAGVAR(archive_cmds, $1) | \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ _LT_AC_TAGVAR(module_cmds, $1) | \ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\[$]0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` ;; esac ifelse([$1], [], [cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" AC_MSG_NOTICE([creating $ofile])], [cfgfile="$ofile"]) cat <<__EOF__ >> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ]) m4trace:/usr/share/aclocal/libtool.m4:4780: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ]) m4trace:/usr/share/aclocal/libtool.m4:4798: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([LT_AC_PROG_SED]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[[ABCDGIRSTW]]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) m4trace:/usr/share/aclocal/libtool.m4:5001: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc* | ecpc*) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler. _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac # # Check to make sure the static flag actually works. # wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ]) m4trace:/usr/share/aclocal/libtool.m4:5563: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. _LT_CC_BASENAME([$compiler]) case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi[[45]]*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then wlarc='${wl}' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ]) m4trace:/usr/share/aclocal/libtool.m4:6508: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ]) m4trace:/usr/share/aclocal/libtool.m4:6547: -1- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) m4trace:/usr/share/aclocal/libtool.m4:6551: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) m4trace:/usr/share/aclocal/libtool.m4:6552: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) m4trace:/usr/share/aclocal/libtool.m4:6553: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) m4trace:/usr/share/aclocal/libtool.m4:6554: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) m4trace:/usr/share/aclocal/libtool.m4:6555: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) m4trace:/usr/share/aclocal/libtool.m4:6556: -1- AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) m4trace:/usr/share/aclocal/libtool.m4:6557: -1- AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) m4trace:/usr/share/aclocal/libtool.m4:6562: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) m4trace:/usr/share/aclocal/libtool.m4:6568: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) m4trace:/usr/share/aclocal/libtool.m4:6606: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ]) m4trace:/usr/share/aclocal-1.11/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) m4trace:/usr/share/aclocal-1.11/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) m4trace:/usr/share/aclocal-1.11/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) m4trace:/usr/share/aclocal-1.11/cond.m4:15: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) m4trace:/usr/share/aclocal-1.11/depend.m4:28: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) m4trace:/usr/share/aclocal-1.11/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) m4trace:/usr/share/aclocal-1.11/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) m4trace:/usr/share/aclocal-1.11/depout.m4:14: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ]) m4trace:/usr/share/aclocal-1.11/depout.m4:75: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) m4trace:/usr/share/aclocal-1.11/header.m4:12: -1- AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) m4trace:/usr/share/aclocal-1.11/header.m4:12: -1- AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. You should run autoupdate.])dnl AC_CONFIG_HEADERS($@)]) m4trace:/usr/share/aclocal-1.11/init.m4:26: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) m4trace:/usr/share/aclocal-1.11/init.m4:126: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) m4trace:/usr/share/aclocal-1.11/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) m4trace:/usr/share/aclocal-1.11/lead-dot.m4:12: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) m4trace:/usr/share/aclocal-1.11/lex.m4:16: -1- AC_DEFUN([AM_PROG_LEX], [AC_PREREQ(2.50)dnl AC_REQUIRE([AM_MISSING_HAS_RUN])dnl AC_REQUIRE([AC_PROG_LEX])dnl if test "$LEX" = :; then LEX=${am_missing_run}flex fi]) m4trace:/usr/share/aclocal-1.11/make.m4:14: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) m4trace:/usr/share/aclocal-1.11/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) m4trace:/usr/share/aclocal-1.11/missing.m4:24: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) m4trace:/usr/share/aclocal-1.11/mkdirp.m4:11: -1- AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) m4trace:/usr/share/aclocal-1.11/options.m4:13: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) m4trace:/usr/share/aclocal-1.11/options.m4:19: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) m4trace:/usr/share/aclocal-1.11/options.m4:25: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) m4trace:/usr/share/aclocal-1.11/options.m4:31: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) m4trace:/usr/share/aclocal-1.11/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) m4trace:/usr/share/aclocal-1.11/sanity.m4:14: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) m4trace:/usr/share/aclocal-1.11/silent.m4:14: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [ --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0')]) case $enable_silent_rules in yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) m4trace:/usr/share/aclocal-1.11/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) m4trace:/usr/share/aclocal-1.11/substnot.m4:14: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) m4trace:/usr/share/aclocal-1.11/substnot.m4:19: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) m4trace:/usr/share/aclocal-1.11/tar.m4:24: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) m4trace:configure.in:8: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:8: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:8: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:8: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:8: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:8: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:8: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:8: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:8: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.in:8: -1- m4_pattern_allow([^prefix$]) m4trace:configure.in:8: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.in:8: -1- m4_pattern_allow([^bindir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^datadir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^includedir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^docdir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^infodir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^psdir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^libdir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^localedir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^mandir$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:8: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.in:8: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.in:8: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.in:8: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.in:8: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:8: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.in:8: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.in:8: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.in:9: -1- AM_CONFIG_HEADER([config.h]) m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. You should run autoupdate.], [/usr/share/aclocal-1.11/header.m4:12: AM_CONFIG_HEADER is expanded from... configure.in:9: the top level]) m4trace:configure.in:12: -1- _m4_warn([obsolete], [The macro `AC_CANONICAL_SYSTEM' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:1819: AC_CANONICAL_SYSTEM is expanded from... configure.in:12: the top level]) m4trace:configure.in:12: -1- m4_pattern_allow([^build$]) m4trace:configure.in:12: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.in:12: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.in:12: -1- m4_pattern_allow([^build_os$]) m4trace:configure.in:12: -1- m4_pattern_allow([^host$]) m4trace:configure.in:12: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.in:12: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.in:12: -1- m4_pattern_allow([^host_os$]) m4trace:configure.in:12: -1- m4_pattern_allow([^target$]) m4trace:configure.in:12: -1- m4_pattern_allow([^target_cpu$]) m4trace:configure.in:12: -1- m4_pattern_allow([^target_vendor$]) m4trace:configure.in:12: -1- m4_pattern_allow([^target_os$]) m4trace:configure.in:14: -1- AM_INIT_AUTOMAKE([linux-atm], [2.5.1]) m4trace:configure.in:14: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.in:14: -1- AM_SET_CURRENT_AUTOMAKE_VERSION m4trace:configure.in:14: -1- AM_AUTOMAKE_VERSION([1.11]) m4trace:configure.in:14: -1- _AM_AUTOCONF_VERSION([2.63]) m4trace:configure.in:14: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:14: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:14: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.in:14: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.in:14: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:14: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:14: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) m4trace:configure.in:14: -2- _AM_MANGLE_OPTION([no-define]) m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:14: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:14: -1- AM_SANITY_CHECK m4trace:configure.in:14: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) m4trace:configure.in:14: -1- AM_MISSING_HAS_RUN m4trace:configure.in:14: -1- AM_AUX_DIR_EXPAND m4trace:configure.in:14: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.in:14: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) m4trace:configure.in:14: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.in:14: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) m4trace:configure.in:14: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.in:14: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) m4trace:configure.in:14: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.in:14: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) m4trace:configure.in:14: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.in:14: -1- AM_PROG_INSTALL_SH m4trace:configure.in:14: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.in:14: -1- AM_PROG_INSTALL_STRIP m4trace:configure.in:14: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:14: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.in:14: -1- AM_PROG_MKDIR_P m4trace:configure.in:14: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.in:14: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.in:14: -1- m4_pattern_allow([^AWK$]) m4trace:configure.in:14: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.in:14: -1- AM_SET_LEADING_DOT m4trace:configure.in:14: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.in:14: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) m4trace:configure.in:14: -2- _AM_MANGLE_OPTION([tar-ustar]) m4trace:configure.in:14: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) m4trace:configure.in:14: -2- _AM_MANGLE_OPTION([tar-pax]) m4trace:configure.in:14: -1- _AM_PROG_TAR([v7]) m4trace:configure.in:14: -1- AM_MISSING_PROG([AMTAR], [tar]) m4trace:configure.in:14: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.in:14: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) m4trace:configure.in:14: -2- _AM_MANGLE_OPTION([no-dependencies]) m4trace:configure.in:14: -1- _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])]) m4trace:configure.in:14: -2- _AM_MANGLE_OPTION([silent-rules]) m4trace:configure.in:19: -1- m4_pattern_allow([^LIBVER_CURRENT$]) m4trace:configure.in:20: -1- m4_pattern_allow([^LIBVER_REVISION$]) m4trace:configure.in:21: -1- m4_pattern_allow([^LIBVER_AGE$]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.in:24: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:24: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:24: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.in:24: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.in:24: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.in:24: -1- _AM_DEPENDENCIES([CC]) m4trace:configure.in:24: -1- AM_SET_DEPDIR m4trace:configure.in:24: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.in:24: -1- AM_OUTPUT_DEPENDENCY_COMMANDS m4trace:configure.in:24: -1- AM_MAKE_INCLUDE m4trace:configure.in:24: -1- m4_pattern_allow([^am__include$]) m4trace:configure.in:24: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.in:24: -1- AM_DEP_TRACK m4trace:configure.in:24: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.in:24: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.in:24: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.in:24: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.in:24: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.in:24: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:24: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.in:24: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.in:25: -1- AM_PROG_LEX m4trace:configure.in:25: -1- m4_pattern_allow([^LEX$]) m4trace:configure.in:25: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$]) m4trace:configure.in:25: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.in:25: -1- m4_pattern_allow([^YYTEXT_POINTER$]) m4trace:configure.in:26: -1- m4_pattern_allow([^YACC$]) m4trace:configure.in:26: -1- m4_pattern_allow([^YACC$]) m4trace:configure.in:26: -1- m4_pattern_allow([^YFLAGS$]) m4trace:configure.in:27: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:27: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:27: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:30: -1- AM_PROG_LIBTOOL m4trace:configure.in:30: -1- AC_PROG_LIBTOOL m4trace:configure.in:30: -1- _AC_PROG_LIBTOOL m4trace:configure.in:30: -1- AC_LIBTOOL_SETUP m4trace:configure.in:30: -1- AC_ENABLE_SHARED m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... /usr/share/aclocal/libtool.m4:2034: AC_ENABLE_SHARED is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AC_ENABLE_STATIC m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... /usr/share/aclocal/libtool.m4:2073: AC_ENABLE_STATIC is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AC_ENABLE_FAST_INSTALL m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... /usr/share/aclocal/libtool.m4:2112: AC_ENABLE_FAST_INSTALL is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AC_PROG_LD m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1443: AC_ARG_WITH is expanded from... /usr/share/aclocal/libtool.m4:2253: AC_PROG_LD is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- LT_AC_PROG_SED m4trace:configure.in:30: -1- m4_pattern_allow([^SED$]) m4trace:configure.in:30: -1- AC_PROG_LD_GNU m4trace:configure.in:30: -1- AC_PROG_EGREP m4trace:configure.in:30: -1- m4_pattern_allow([^GREP$]) m4trace:configure.in:30: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.in:30: -1- AC_PROG_LD_RELOAD_FLAG m4trace:configure.in:30: -1- AC_PROG_NM m4trace:configure.in:30: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.in:30: -1- AC_DEPLIBS_CHECK_METHOD m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_MAX_CMD_LEN m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.in:30: -1- AC_LIBTOOL_OBJDIR m4trace:configure.in:30: -1- _LT_AC_SYS_COMPILER m4trace:configure.in:30: -1- _LT_AC_PROG_ECHO_BACKSLASH m4trace:configure.in:30: -1- _LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ]) m4trace:configure.in:30: -1- m4_pattern_allow([^ECHO$]) m4trace:configure.in:30: -1- m4_pattern_allow([^AR$]) m4trace:configure.in:30: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.in:30: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:30: -1- _LT_CC_BASENAME([$compiler]) m4trace:configure.in:30: -1- AC_PATH_MAGIC m4trace:configure.in:30: -1- AC_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH]) m4trace:configure.in:30: -1- AC_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH]) m4trace:configure.in:30: -1- _LT_REQUIRED_DARWIN_CHECKS m4trace:configure.in:30: -1- m4_pattern_allow([^DSYMUTIL$]) m4trace:configure.in:30: -1- m4_pattern_allow([^NMEDIT$]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1443: AC_ARG_WITH is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AC_LIBTOOL_LANG_C_CONFIG m4trace:configure.in:30: -1- _LT_AC_LANG_C_CONFIG m4trace:configure.in:30: -1- _LT_AC_TAGVAR([objext], []) m4trace:configure.in:30: -1- _LT_AC_SYS_COMPILER m4trace:configure.in:30: -1- _LT_COMPILER_BOILERPLATE m4trace:configure.in:30: -1- _LT_LINKER_BOILERPLATE m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_COMPILER_NO_RTTI([]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.in:30: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_COMPILER_PIC([]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([lt_cv_prog_compiler_pic_works], []) m4trace:configure.in:30: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, ) works], [lt_cv_prog_compiler_pic_works], [$_LT_AC_TAGVAR(lt_prog_compiler_pic, )ifelse([],[],[ -DPIC],[ifelse([],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, ) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, )=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, )" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, )= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, )=no]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([lt_cv_prog_compiler_static_works], []) m4trace:configure.in:30: -1- AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_AC_TAGVAR(lt_prog_compiler_static, )=]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_CC_C_O([]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -4- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_HARD_LINK_LOCKS([]) m4trace:configure.in:30: -1- _LT_AC_LOCK m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from... ../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from... ../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from... ../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from... /usr/share/aclocal/libtool.m4:551: _LT_AC_LOCK is expanded from... /usr/share/aclocal/libtool.m4:1172: AC_LIBTOOL_SYS_HARD_LINK_LOCKS is expanded from... /usr/share/aclocal/libtool.m4:2786: _LT_AC_LANG_C_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:2785: AC_LIBTOOL_LANG_C_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_LD_SHLIBS([]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], []) m4trace:configure.in:30: -1- _LT_CC_BASENAME([$compiler]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([fix_srcfile_path], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([reload_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_DYNAMIC_LINKER([]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([runpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_LIB_STRIP m4trace:configure.in:30: -1- AC_LIBTOOL_DLOPEN_SELF m4trace:configure.in:30: -1- _LT_AC_CHECK_DLFCN m4trace:configure.in:30: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:30: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:30: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:30: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.in:30: -1- _LT_AC_TRY_DLOPEN_SELF([lt_cv_dlopen_self=yes], [lt_cv_dlopen_self=yes], [lt_cv_dlopen_self=no], [lt_cv_dlopen_self=cross]) m4trace:configure.in:30: -1- _LT_AC_TRY_DLOPEN_SELF([lt_cv_dlopen_self_static=yes], [lt_cv_dlopen_self_static=yes], [lt_cv_dlopen_self_static=no], [lt_cv_dlopen_self_static=cross]) m4trace:configure.in:30: -1- AC_LIBTOOL_CONFIG([]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([CC], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postinstall_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postuninstall_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([fix_srcfile_path], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([GCC], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], []) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], []) m4trace:configure.in:30: -1- _LT_AC_TAGCONFIG m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1443: AC_ARG_WITH is expanded from... /usr/share/aclocal/libtool.m4:1911: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: error: tag name \"$tagname\" already exists], [../../lib/m4sugar/m4sh.m4:794: AS_ECHO is expanded from... /usr/share/aclocal/libtool.m4:1911: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: error: tag name \"$tagname\" already exists], [../../lib/m4sugar/m4sh.m4:794: AS_ECHO is expanded from... /usr/share/aclocal/libtool.m4:1911: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AC_LIBTOOL_LANG_CXX_CONFIG m4trace:configure.in:30: -1- _LT_AC_LANG_CXX_CONFIG([CXX]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXX$]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXXFLAGS$]) m4trace:configure.in:30: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:30: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:30: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXX$]) m4trace:configure.in:30: -1- m4_pattern_allow([^ac_ct_CXX$]) m4trace:configure.in:30: -1- _AM_DEPENDENCIES([CXX]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXXDEPMODE$]) m4trace:configure.in:30: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.in:30: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) m4trace:configure.in:30: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) m4trace:configure.in:30: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) m4trace:configure.in:30: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.in:30: -1- _LT_AC_PROG_CXXCPP m4trace:configure.in:30: -1- m4_pattern_allow([^CXXCPP$]) m4trace:configure.in:30: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXXCPP$]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([objext], [CXX]) m4trace:configure.in:30: -1- _LT_AC_SYS_COMPILER m4trace:configure.in:30: -1- _LT_COMPILER_BOILERPLATE m4trace:configure.in:30: -1- _LT_LINKER_BOILERPLATE m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [CXX]) m4trace:configure.in:30: -1- _LT_CC_BASENAME([$compiler]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [CXX]) m4trace:configure.in:30: -1- AC_PROG_LD m4trace:configure.in:30: -1- AC_PROG_LD_GNU m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([GCC], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_POSTDEP_PREDEP([CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_COMPILER_PIC([CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([lt_cv_prog_compiler_pic_works], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX) works], [lt_cv_prog_compiler_pic_works_CXX], [$_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX)ifelse([CXX],[],[ -DPIC],[ifelse([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, CXX)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, CXX)=no]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([lt_cv_prog_compiler_static_works], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_CXX], [$lt_tmp_static_flag], [], [_LT_AC_TAGVAR(lt_prog_compiler_static, CXX)=]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_CC_C_O([CXX]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -4- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_HARD_LINK_LOCKS([CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_LD_SHLIBS([CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_DYNAMIC_LINKER([CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([runpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_CONFIG([CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([CC], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postinstall_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postuninstall_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([fix_srcfile_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([GCC], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [CXX]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_LANG_F77_CONFIG m4trace:configure.in:30: -1- _LT_AC_LANG_F77_CONFIG([F77]) m4trace:configure.in:30: -1- m4_pattern_allow([^F77$]) m4trace:configure.in:30: -1- m4_pattern_allow([^FFLAGS$]) m4trace:configure.in:30: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:30: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:30: -1- m4_pattern_allow([^F77$]) m4trace:configure.in:30: -1- m4_pattern_allow([^ac_ct_F77$]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([objext], [F77]) m4trace:configure.in:30: -1- _LT_AC_SYS_COMPILER m4trace:configure.in:30: -1- _LT_COMPILER_BOILERPLATE m4trace:configure.in:30: -1- _LT_LINKER_BOILERPLATE m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [F77]) m4trace:configure.in:30: -1- _LT_CC_BASENAME([$compiler]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([GCC], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_COMPILER_PIC([F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([lt_cv_prog_compiler_pic_works], [F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, F77) works], [lt_cv_prog_compiler_pic_works_F77], [$_LT_AC_TAGVAR(lt_prog_compiler_pic, F77)ifelse([F77],[],[ -DPIC],[ifelse([F77],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, F77) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, F77)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, F77)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, F77)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, F77)=no]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([lt_cv_prog_compiler_static_works], [F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_F77], [$lt_tmp_static_flag], [], [_LT_AC_TAGVAR(lt_prog_compiler_static, F77)=]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_CC_C_O([F77]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -4- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_HARD_LINK_LOCKS([F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_LD_SHLIBS([F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [F77]) m4trace:configure.in:30: -1- _LT_CC_BASENAME([$compiler]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([fix_srcfile_path], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([reload_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_DYNAMIC_LINKER([F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([runpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_CONFIG([F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([CC], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postinstall_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postuninstall_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([fix_srcfile_path], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([GCC], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [F77]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [F77]) m4trace:configure.in:30: -1- AC_LIBTOOL_LANG_GCJ_CONFIG m4trace:configure.in:30: -1- _LT_AC_LANG_GCJ_CONFIG([GCJ]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. You should run autoupdate.], [../../lib/autoconf/lang.m4:148: AC_LANG_SAVE is expanded from... /usr/share/aclocal/libtool.m4:4180: _LT_AC_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:4179: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1911: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([objext], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_SYS_COMPILER m4trace:configure.in:30: -1- _LT_COMPILER_BOILERPLATE m4trace:configure.in:30: -1- _LT_LINKER_BOILERPLATE m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [GCJ]) m4trace:configure.in:30: -1- _LT_CC_BASENAME([$compiler]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_COMPILER_NO_RTTI([GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, GCJ)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, GCJ) -fno-rtti -fno-exceptions"]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_COMPILER_PIC([GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([lt_cv_prog_compiler_pic_works], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ) works], [lt_cv_prog_compiler_pic_works_GCJ], [$_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ)ifelse([GCJ],[],[ -DPIC],[ifelse([GCJ],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, GCJ)=no]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([lt_cv_prog_compiler_static_works], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_GCJ], [$lt_tmp_static_flag], [], [_LT_AC_TAGVAR(lt_prog_compiler_static, GCJ)=]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_CC_C_O([GCJ]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -4- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -6- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_HARD_LINK_LOCKS([GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_LD_SHLIBS([GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [GCJ]) m4trace:configure.in:30: -1- _LT_CC_BASENAME([$compiler]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([fix_srcfile_path], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([reload_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -2- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_SYS_DYNAMIC_LINKER([GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([runpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.in:30: -1- AC_LIBTOOL_CONFIG([GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([CC], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postinstall_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postuninstall_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([fix_srcfile_path], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([GCC], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [GCJ]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [GCJ]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. You should run autoupdate.], [../../lib/autoconf/lang.m4:157: AC_LANG_RESTORE is expanded from... /usr/share/aclocal/libtool.m4:4180: _LT_AC_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:4179: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1911: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AC_LIBTOOL_LANG_RC_CONFIG m4trace:configure.in:30: -1- _LT_AC_LANG_RC_CONFIG([RC]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. You should run autoupdate.], [../../lib/autoconf/lang.m4:148: AC_LANG_SAVE is expanded from... /usr/share/aclocal/libtool.m4:4240: _LT_AC_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:4239: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1911: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([objext], [RC]) m4trace:configure.in:30: -1- _LT_AC_SYS_COMPILER m4trace:configure.in:30: -1- _LT_COMPILER_BOILERPLATE m4trace:configure.in:30: -1- _LT_LINKER_BOILERPLATE m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [RC]) m4trace:configure.in:30: -1- _LT_CC_BASENAME([$compiler]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [RC]) m4trace:configure.in:30: -1- AC_LIBTOOL_CONFIG([RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([CC], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postinstall_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postuninstall_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([fix_srcfile_path], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([GCC], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([LD], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([module_expsym_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predep_objects], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdep_objects], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([predeps], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([postdeps], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_dirs], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([allow_undefined_flag], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([no_undefined_flag], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_action], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_direct], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_minus_L], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([hardcode_automatic], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([link_all_deplibs], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([always_export_symbols], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([export_symbols_cmds], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([exclude_expsyms], [RC]) m4trace:configure.in:30: -1- _LT_AC_TAGVAR([include_expsyms], [RC]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. You should run autoupdate.], [../../lib/autoconf/lang.m4:157: AC_LANG_RESTORE is expanded from... /usr/share/aclocal/libtool.m4:4240: _LT_AC_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:4239: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1911: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... /usr/share/aclocal/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:6551: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- m4_pattern_allow([^LIBTOOL$]) m4trace:configure.in:30: -1- AC_LIBTOOL_CXX m4trace:configure.in:30: -1- _LT_AC_LANG_CXX m4trace:configure.in:30: -1- _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) m4trace:configure.in:30: -1- AC_LIBTOOL_F77 m4trace:configure.in:30: -1- _LT_AC_LANG_F77 m4trace:configure.in:30: -1- _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) m4trace:configure.in:31: -1- m4_pattern_allow([^LIBTOOL_DEPS$]) m4trace:configure.in:34: -1- m4_pattern_allow([^PERL$]) m4trace:configure.in:35: -1- m4_pattern_allow([^PERL$]) m4trace:configure.in:49: -1- m4_pattern_allow([^HAVE_LIBRESOLV$]) m4trace:configure.in:60: -1- m4_pattern_allow([^CC_FOR_BUILD$]) m4trace:configure.in:67: -1- m4_pattern_allow([^CC_FOR_BUILD$]) m4trace:configure.in:68: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$]) m4trace:configure.in:73: -1- m4_pattern_allow([^YY_USE_CONST$]) m4trace:configure.in:79: -1- m4_pattern_allow([^ATMSIGD_CONF$]) m4trace:configure.in:100: -2- m4_pattern_allow([^DYNAMIC_UNI$]) m4trace:configure.in:82: -1- m4_pattern_allow([^UNI30$]) m4trace:configure.in:82: -1- m4_pattern_allow([^UNI31$]) m4trace:configure.in:82: -1- m4_pattern_allow([^UNI40$]) m4trace:configure.in:82: -1- m4_pattern_allow([^DYNAMIC_UNI$]) m4trace:configure.in:103: -1- m4_pattern_allow([^ALLOW_UNI30$]) m4trace:configure.in:114: -1- m4_pattern_allow([^Q2963_1$]) m4trace:configure.in:128: -2- m4_pattern_allow([^CISCO$]) m4trace:configure.in:136: -2- m4_pattern_allow([^THOMFLEX$]) m4trace:configure.in:145: -1- m4_pattern_allow([^BROKEN_POLL$]) m4trace:configure.in:149: -2- m4_pattern_allow([^MPOA_1_1$]) m4trace:configure.in:152: -1- m4_pattern_allow([^HAVE_LIBMPR$]) m4trace:configure.in:176: -1- m4_pattern_allow([^pmp_send$]) m4trace:configure.in:177: -1- m4_pattern_allow([^MULTIPOINT$]) m4trace:configure.in:194: -1- m4_pattern_allow([^atmoamd$]) m4trace:configure.in:211: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. You should run autoupdate.], []) m4trace:configure.in:211: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:211: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.in:211: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) m4trace:configure.in:211: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) m4trace:configure.in:211: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) m4trace:configure.in:211: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) m4trace:configure.in:211: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) m4trace:configure.in:211: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) m4trace:configure.in:211: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS linux-atm-2.5.1/autom4te.cache/output.00000644000200100001440000262543411304770370016527 0ustar chasusers@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.63. @%:@ @%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="src/include/atm.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIB@&t@OBJS atmoamd pmp_send CFLAGS_FOR_BUILD CC_FOR_BUILD PERL LIBTOOL_DEPS LIBTOOL ac_ct_F77 FFLAGS F77 CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPP NMEDIT DSYMUTIL RANLIB AR ECHO LN_S EGREP GREP SED YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC LIBVER_AGE LIBVER_REVISION LIBVER_CURRENT am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_shared enable_static enable_fast_install with_gnu_ld enable_libtool_lock with_pic with_tags with_uni enable_allow_uni30 enable_q2963_1 enable_cisco enable_thomflex enable_mpoa_1_1 enable_mpr with_kernel_headers enable_multipoint ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS YACC YFLAGS CPP CXX CXXFLAGS CCC CXXCPP F77 FFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root @<:@DATAROOTDIR/doc/PACKAGE@:>@ --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ --enable-fast-install@<:@=PKGS@:>@ optimize for fast installation @<:@default=yes@:>@ --disable-libtool-lock avoid locking (might break parallel builds) --enable-allow_uni30 Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1) --enable-q2963_1 Enable peak cell rate modification as specified in Q.2963.1 (if using UNI 4.0) --enable-cisco Enable work around for point-to-multipoint signaling bug in Cisco LS100 or LS7010 switches --enable-thomflex Some versions of the Thomson Thomflex 5000 won't do any signaling before they get a RESTART. Enable sending of a RESTART whenever SAAL comes up. --enable-mpoa_1_1 Enable proposed MPOA 1.1 features --enable-mpr Enable memory debugging (if MPR is installed) --enable-multipoint Enable point to multipoint signalling Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ --with-pic try to use only PIC/non-PIC objects @<:@default=use both@:>@ --with-tags@<:@=TAGS@:>@ include additional configurations @<:@automatic@:>@ --with-uni=VERSION UNI version to use (3.0,3.1,4.0) default=dynamic --with-kernel-headers=path use the kernel headers found at path Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory YACC The `Yet Another C Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME @%:@@%:@ --------- @%:@@%:@ @%:@@%:@ Platform. @%:@@%:@ @%:@@%:@ --------- @%:@@%:@ hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ Core tests. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX @%:@@%:@ ----------------- @%:@@%:@ @%:@@%:@ Output variables. @%:@@%:@ @%:@@%:@ ----------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX @%:@@%:@ ------------------- @%:@@%:@ @%:@@%:@ File substitutions. @%:@@%:@ @%:@@%:@ ------------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if test "${ac_cv_target+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 $as_echo "$as_me: error: invalid value of canonical target" >&2;} { (exit 1); exit 1; }; };; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 $as_echo "$as_me: error: unsafe absolute working directory name" >&2;} { (exit 1); exit 1; }; };; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 $as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} { (exit 1); exit 1; }; };; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=linux-atm VERSION=2.5.1 cat >>confdefs.h <<_ACEOF @%:@define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' LIBVER_CURRENT="1" LIBVER_REVISION="0" LIBVER_AGE="0" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf @%:@ Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LEX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:$LINENO: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { yyless (input () != 0); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { (ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if test "${ac_cv_prog_lex_root+set}" = set; then $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else { { $as_echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 $as_echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:$LINENO: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if test "${ac_cv_lib_lex+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat >conftest.$ac_ext <<_ACEOF `cat $LEX_OUTPUT_ROOT.c` _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_lex=$ac_lib else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_prog_lex_yytext_pointer=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then cat >>confdefs.h <<\_ACEOF @%:@define YYTEXT_POINTER 1 _ACEOF fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_YACC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:$LINENO: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' @%:@ Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi @%:@ Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi @%:@ Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi { $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${lt_cv_path_SED+set}" = set; then $as_echo_n "(cached) " >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done fi SED=$lt_cv_path_SED { $as_echo "$as_me:$LINENO: result: $SED" >&5 $as_echo "$SED" >&6; } { $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" @%:@ Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac { $as_echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 $as_echo_n "checking for BSD-compatible nm... " >&6; } if test "${lt_cv_path_NM+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" { $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi { $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC @%:@ Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) libsuff=64 case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:$LINENO: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_F77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then { $as_echo "$as_me:$LINENO: result: $F77" >&5 $as_echo "$F77" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_F77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 $as_echo "$ac_ct_F77" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_F77" && break done if test "x$ac_ct_F77" = x; then F77="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } if test "${ac_cv_f77_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 $as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= { $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 $as_echo_n "checking whether $F77 accepts -g... " >&6; } if test "${ac_cv_prog_f77_g+set}" = set; then $as_echo_n "(cached) " >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_f77_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 $as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi if test $ac_compiler_gnu = yes; then G77=yes else G77= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments { $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$LINENO: result: none" >&5 $as_echo "none" >&6; } fi # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[ABCDGIRSTW]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi { $as_echo "$as_me:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. echo "int foo(void){return 1;}" > conftest.c $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib ${wl}-single_module conftest.c if test -f libconftest.dylib; then lt_cv_apple_cc_single_mod=yes rm -rf libconftest.dylib* fi rm conftest.c fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[0123]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil="~$DSYMUTIL \$lib || :" else _lt_dsymutil= fi ;; esac enable_dlopen=no enable_win32_dll=no @%:@ Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes @%:@ Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic='-qnocommon' lt_prog_compiler_wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs=no ;; esac fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= { $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ compiler_lib_search_dirs \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ fix_srcfile_path \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { $as_echo "$as_me:$LINENO: creating $ofile" >&5 $as_echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" @%:@ Check whether --with-tags was given. if test "${with_tags+set}" = set; then withval=$with_tags; tagnames="$withval" fi if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 $as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 $as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { $as_echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 $as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { $as_echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 $as_echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { $as_echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 $as_echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= compiler_lib_search_dirs_CXX= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration @%:@ Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" if test "$GXX" = yes ; then output_verbose_link_cmd='echo' archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_CXX=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else ld_shlibs_CXX=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext compiler_lib_search_dirs_CXX= if test -n "$compiler_lib_search_path_CXX"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_CXX='-qnocommon' lt_prog_compiler_wl_CXX='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc* | ecpc*) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 $as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 $as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ compiler_lib_search_dirs_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_F77='-qnocommon' lt_prog_compiler_wl_F77='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; rdos*) lt_prog_compiler_static_F77='-non_shared' ;; solaris*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_F77='-Qoption ld ';; *) lt_prog_compiler_wl_F77='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; unicos*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_can_build_shared_F77=no ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 $as_echo "$lt_prog_compiler_pic_F77" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_F77=yes fi else lt_cv_prog_compiler_static_works_F77=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then : else lt_prog_compiler_static_F77= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_F77=no fi ;; interix[3-9]*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_F77=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = no; then runpath_var= hardcode_libdir_flag_spec_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77='$convenience' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_F77='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_F77=no ;; esac fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; *) hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_F77=no fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_F77='${wl}-z,text' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_F77='${wl}-z,text' allow_undefined_flag_F77='${wl}-z,nodefs' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 $as_echo "$ld_shlibs_F77" >&6; } test "$ld_shlibs_F77" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 pic_flag=$lt_prog_compiler_pic_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 $as_echo "$archive_cmds_need_lc_F77" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ test "X$hardcode_automatic_F77" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 $as_echo "$hardcode_action_F77" >&6; } if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ compiler_lib_search_dirs_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ fix_srcfile_path_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no old_archive_cmds_GCJ=$old_archive_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_GCJ='-qnocommon' lt_prog_compiler_wl_GCJ='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-fpic' lt_prog_compiler_static_GCJ='-Bstatic' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; rdos*) lt_prog_compiler_static_GCJ='-non_shared' ;; solaris*) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_GCJ='-Qoption ld ';; *) lt_prog_compiler_wl_GCJ='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; unicos*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_can_build_shared_GCJ=no ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 $as_echo "$lt_prog_compiler_pic_GCJ" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_GCJ=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_GCJ=yes fi else lt_cv_prog_compiler_static_works_GCJ=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 $as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then : else lt_prog_compiler_static_GCJ= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 $as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_GCJ=no fi ;; interix[3-9]*) hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_GCJ=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_GCJ=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = no; then runpath_var= hardcode_libdir_flag_spec_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ='$convenience' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_GCJ=no ;; esac fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; *) hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_GCJ=no fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_GCJ='${wl}-z,text' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_GCJ='${wl}-z,text' allow_undefined_flag_GCJ='${wl}-z,nodefs' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 $as_echo "$ld_shlibs_GCJ" >&6; } test "$ld_shlibs_GCJ" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ pic_flag=$lt_prog_compiler_pic_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 $as_echo "$archive_cmds_need_lc_GCJ" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ test "X$hardcode_automatic_GCJ" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 $as_echo "$hardcode_action_GCJ" >&6; } if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ compiler_lib_search_dirs_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ fix_srcfile_path_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ compiler_lib_search_dirs_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ fix_srcfile_path_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { $as_echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 $as_echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { $as_echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 $as_echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PERL+set}" = set; then $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:$LINENO: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "${ac_cv_header_asm_errno_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for asm/errno.h" >&5 $as_echo_n "checking for asm/errno.h... " >&6; } if test "${ac_cv_header_asm_errno_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5 $as_echo "$ac_cv_header_asm_errno_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking asm/errno.h usability" >&5 $as_echo_n "checking asm/errno.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking asm/errno.h presence" >&5 $as_echo_n "checking asm/errno.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: asm/errno.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: asm/errno.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: asm/errno.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: asm/errno.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: asm/errno.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for asm/errno.h" >&5 $as_echo_n "checking for asm/errno.h... " >&6; } if test "${ac_cv_header_asm_errno_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_asm_errno_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5 $as_echo "$ac_cv_header_asm_errno_h" >&6; } fi if test "x$ac_cv_header_asm_errno_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: *** Unable to find asm/errno.h!!!" >&5 $as_echo "$as_me: error: *** Unable to find asm/errno.h!!!" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_linux_atmsap_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for linux/atmsap.h" >&5 $as_echo_n "checking for linux/atmsap.h... " >&6; } if test "${ac_cv_header_linux_atmsap_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5 $as_echo "$ac_cv_header_linux_atmsap_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking linux/atmsap.h usability" >&5 $as_echo_n "checking linux/atmsap.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking linux/atmsap.h presence" >&5 $as_echo_n "checking linux/atmsap.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for linux/atmsap.h" >&5 $as_echo_n "checking for linux/atmsap.h... " >&6; } if test "${ac_cv_header_linux_atmsap_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_linux_atmsap_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5 $as_echo "$ac_cv_header_linux_atmsap_h" >&6; } fi if test "x$ac_cv_header_linux_atmsap_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: *** Unable to find linux/atmsap.h!!!" >&5 $as_echo "$as_me: error: *** Unable to find linux/atmsap.h!!!" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking for main in -lresolv" >&5 $as_echo_n "checking for main in -lresolv... " >&6; } if test "${ac_cv_lib_resolv_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lresolv $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_resolv_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_resolv_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_main" >&5 $as_echo "$ac_cv_lib_resolv_main" >&6; } if test "x$ac_cv_lib_resolv_main" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_LIBRESOLV 1 _ACEOF LIBS="-lresolv $LIBS" else { { $as_echo "$as_me:$LINENO: error: *** Unable to find libresolv!!!" >&5 $as_echo "$as_me: error: *** Unable to find libresolv!!!" >&2;} { (exit 1); exit 1; }; } fi LIBS="" INCLUDES="-I\$(top_srcdir)/src/include" CFLAGS="$INCLUDES $CFLAGS -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes" if test "x$cross_compiling" = "xyes"; then { $as_echo "$as_me:$LINENO: checking cc for build" >&5 $as_echo_n "checking cc for build... " >&6; } for ac_prog in gcc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC_FOR_BUILD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC_FOR_BUILD="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then { $as_echo "$as_me:$LINENO: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC_FOR_BUILD" && break done { $as_echo "$as_me:$LINENO: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } CFLAGS_FOR_BUILD="$INCLUDES $CFLAGS_FOR_BUILD -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes" else CC_FOR_BUILD="${CC_FOR_BUILD-$CC}" CFLAGS_FOR_BUILD="${CFLAGS_FOR_BUILD-$CFLAGS}" fi YACC="$YACC -d" cat >>confdefs.h <<\_ACEOF @%:@define YY_USE_CONST /**/ _ACEOF atmsigd_conf_dir=` test "x$exec_prefix" = xNONE && exec_prefix=$ac_default_prefix test "x$prefix" = xNONE && prefix=${exec_prefix} eval echo "$sysconfdir"` cat >>confdefs.h <<_ACEOF @%:@define ATMSIGD_CONF "$atmsigd_conf_dir/atmsigd.conf" _ACEOF @%:@ Check whether --with-uni was given. if test "${with_uni+set}" = set; then withval=$with_uni; case "$with_uni" in "3.0" ) cat >>confdefs.h <<\_ACEOF @%:@define UNI30 /**/ _ACEOF ;; "3.1" ) cat >>confdefs.h <<\_ACEOF @%:@define UNI31 /**/ _ACEOF ;; "4.0" ) cat >>confdefs.h <<\_ACEOF @%:@define UNI40 /**/ _ACEOF ;; *) cat >>confdefs.h <<\_ACEOF @%:@define DYNAMIC_UNI /**/ _ACEOF { $as_echo "$as_me:$LINENO: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&5 $as_echo "$as_me: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&2;} esac else cat >>confdefs.h <<\_ACEOF @%:@define DYNAMIC_UNI 1 _ACEOF fi @%:@ Check whether --enable-allow_uni30 was given. if test "${enable_allow_uni30+set}" = set; then enableval=$enable_allow_uni30; if test "$with_uni" = "3.1" ; then cat >>confdefs.h <<\_ACEOF @%:@define ALLOW_UNI30 /**/ _ACEOF else { $as_echo "$as_me:$LINENO: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&5 $as_echo "$as_me: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&2;} fi fi @%:@ Check whether --enable-q2963_1 was given. if test "${enable_q2963_1+set}" = set; then enableval=$enable_q2963_1; if test "$with_uni" = "4.0" ; then cat >>confdefs.h <<\_ACEOF @%:@define Q2963_1 /**/ _ACEOF else { $as_echo "$as_me:$LINENO: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&5 $as_echo "$as_me: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&2;} fi fi @%:@ Check whether --enable-cisco was given. if test "${enable_cisco+set}" = set; then enableval=$enable_cisco; cat >>confdefs.h <<\_ACEOF @%:@define CISCO /**/ _ACEOF fi @%:@ Check whether --enable-thomflex was given. if test "${enable_thomflex+set}" = set; then enableval=$enable_thomflex; cat >>confdefs.h <<\_ACEOF @%:@define THOMFLEX /**/ _ACEOF fi cat >>confdefs.h <<\_ACEOF @%:@define BROKEN_POLL /**/ _ACEOF @%:@ Check whether --enable-mpoa_1_1 was given. if test "${enable_mpoa_1_1+set}" = set; then enableval=$enable_mpoa_1_1; cat >>confdefs.h <<\_ACEOF @%:@define MPOA_1_1 /**/ _ACEOF fi @%:@ Check whether --enable-mpr was given. if test "${enable_mpr+set}" = set; then enableval=$enable_mpr; case "$enable_mpr" in "" | y | ye | yes | Y | YE | YES ) { $as_echo "$as_me:$LINENO: checking for main in -lmpr" >&5 $as_echo_n "checking for main in -lmpr... " >&6; } if test "${ac_cv_lib_mpr_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpr $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_mpr_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_mpr_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpr_main" >&5 $as_echo "$ac_cv_lib_mpr_main" >&6; } if test "x$ac_cv_lib_mpr_main" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_LIBMPR 1 _ACEOF LIBS="-lmpr $LIBS" else { $as_echo "$as_me:$LINENO: WARNING: *** Could not find libmpr! Is MPR installed?" >&5 $as_echo "$as_me: WARNING: *** Could not find libmpr! Is MPR installed?" >&2;} fi ;; esac fi @%:@ Check whether --with-kernel-headers was given. if test "${with_kernel_headers+set}" = set; then withval=$with_kernel_headers; fi if test "x$with_kernel_headers" != "x"; then CFLAGS="-I$with_kernel_headers/include $CFLAGS" fi pmp_send="" @%:@ Check whether --enable-multipoint was given. if test "${enable_multipoint+set}" = set; then enableval=$enable_multipoint; cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include #include int main () { int fd; struct atm_iobuf buf; ioctl(fd, ATM_ADDPARTY, &buf); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF @%:@define MULTIPOINT /**/ _ACEOF pmp_send="pmp_send" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: WARNING: *** Multipoint signalling was not enabled. Missing kernel support?" >&5 $as_echo "$as_me: WARNING: *** Multipoint signalling was not enabled. Missing kernel support?" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi atmoamd="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include #include int main () { int fd; ioctl(fd, ATMOAMD_CTRL, 0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then atmoamd="atmoamd" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: WARNING: *** atmoamd will not be built. Missing kernel support?" >&5 $as_echo "$as_me: WARNING: *** atmoamd will not be built. Missing kernel support?" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_config_files="$ac_config_files Makefile doc/Makefile src/Makefile src/include/Makefile src/lib/Makefile src/test/Makefile src/debug/Makefile src/qgen/Makefile src/saal/Makefile src/q2931/Makefile src/sigd/Makefile src/maint/Makefile src/arpd/Makefile src/ilmid/Makefile src/ilmid/asn1/Makefile src/man/Makefile src/led/Makefile src/lane/Makefile src/mpoad/Makefile src/oamd/Makefile src/switch/Makefile src/switch/debug/Makefile src/switch/tcp/Makefile src/br2684/Makefile src/config/Makefile src/extra/Makefile src/extra/linux-atm.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/include/Makefile") CONFIG_FILES="$CONFIG_FILES src/include/Makefile" ;; "src/lib/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib/Makefile" ;; "src/test/Makefile") CONFIG_FILES="$CONFIG_FILES src/test/Makefile" ;; "src/debug/Makefile") CONFIG_FILES="$CONFIG_FILES src/debug/Makefile" ;; "src/qgen/Makefile") CONFIG_FILES="$CONFIG_FILES src/qgen/Makefile" ;; "src/saal/Makefile") CONFIG_FILES="$CONFIG_FILES src/saal/Makefile" ;; "src/q2931/Makefile") CONFIG_FILES="$CONFIG_FILES src/q2931/Makefile" ;; "src/sigd/Makefile") CONFIG_FILES="$CONFIG_FILES src/sigd/Makefile" ;; "src/maint/Makefile") CONFIG_FILES="$CONFIG_FILES src/maint/Makefile" ;; "src/arpd/Makefile") CONFIG_FILES="$CONFIG_FILES src/arpd/Makefile" ;; "src/ilmid/Makefile") CONFIG_FILES="$CONFIG_FILES src/ilmid/Makefile" ;; "src/ilmid/asn1/Makefile") CONFIG_FILES="$CONFIG_FILES src/ilmid/asn1/Makefile" ;; "src/man/Makefile") CONFIG_FILES="$CONFIG_FILES src/man/Makefile" ;; "src/led/Makefile") CONFIG_FILES="$CONFIG_FILES src/led/Makefile" ;; "src/lane/Makefile") CONFIG_FILES="$CONFIG_FILES src/lane/Makefile" ;; "src/mpoad/Makefile") CONFIG_FILES="$CONFIG_FILES src/mpoad/Makefile" ;; "src/oamd/Makefile") CONFIG_FILES="$CONFIG_FILES src/oamd/Makefile" ;; "src/switch/Makefile") CONFIG_FILES="$CONFIG_FILES src/switch/Makefile" ;; "src/switch/debug/Makefile") CONFIG_FILES="$CONFIG_FILES src/switch/debug/Makefile" ;; "src/switch/tcp/Makefile") CONFIG_FILES="$CONFIG_FILES src/switch/tcp/Makefile" ;; "src/br2684/Makefile") CONFIG_FILES="$CONFIG_FILES src/br2684/Makefile" ;; "src/config/Makefile") CONFIG_FILES="$CONFIG_FILES src/config/Makefile" ;; "src/extra/Makefile") CONFIG_FILES="$CONFIG_FILES src/extra/Makefile" ;; "src/extra/linux-atm.spec") CONFIG_FILES="$CONFIG_FILES src/extra/linux-atm.spec" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi linux-atm-2.5.1/autom4te.cache/traces.10000644000200100001440000013443711304770374016451 0ustar chasusersm4trace:configure.in:8: -1- AC_INIT([src/include/atm.h]) m4trace:configure.in:8: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:8: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:8: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:8: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:8: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:8: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:8: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:8: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([SHELL]) m4trace:configure.in:8: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.in:8: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) m4trace:configure.in:8: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([PACKAGE_NAME]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([PACKAGE_STRING]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:8: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:8: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([exec_prefix]) m4trace:configure.in:8: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.in:8: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([prefix]) m4trace:configure.in:8: -1- m4_pattern_allow([^prefix$]) m4trace:configure.in:8: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([program_transform_name]) m4trace:configure.in:8: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.in:8: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([bindir]) m4trace:configure.in:8: -1- m4_pattern_allow([^bindir$]) m4trace:configure.in:8: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([sbindir]) m4trace:configure.in:8: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.in:8: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([libexecdir]) m4trace:configure.in:8: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.in:8: -1- AC_SUBST([datarootdir], ['${prefix}/share']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([datarootdir]) m4trace:configure.in:8: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.in:8: -1- AC_SUBST([datadir], ['${datarootdir}']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([datadir]) m4trace:configure.in:8: -1- m4_pattern_allow([^datadir$]) m4trace:configure.in:8: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([sysconfdir]) m4trace:configure.in:8: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.in:8: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([sharedstatedir]) m4trace:configure.in:8: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.in:8: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([localstatedir]) m4trace:configure.in:8: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.in:8: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([includedir]) m4trace:configure.in:8: -1- m4_pattern_allow([^includedir$]) m4trace:configure.in:8: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([oldincludedir]) m4trace:configure.in:8: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.in:8: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], ['${datarootdir}/doc/${PACKAGE_TARNAME}'], ['${datarootdir}/doc/${PACKAGE}'])]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([docdir]) m4trace:configure.in:8: -1- m4_pattern_allow([^docdir$]) m4trace:configure.in:8: -1- AC_SUBST([infodir], ['${datarootdir}/info']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([infodir]) m4trace:configure.in:8: -1- m4_pattern_allow([^infodir$]) m4trace:configure.in:8: -1- AC_SUBST([htmldir], ['${docdir}']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([htmldir]) m4trace:configure.in:8: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.in:8: -1- AC_SUBST([dvidir], ['${docdir}']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([dvidir]) m4trace:configure.in:8: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.in:8: -1- AC_SUBST([pdfdir], ['${docdir}']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([pdfdir]) m4trace:configure.in:8: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.in:8: -1- AC_SUBST([psdir], ['${docdir}']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([psdir]) m4trace:configure.in:8: -1- m4_pattern_allow([^psdir$]) m4trace:configure.in:8: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([libdir]) m4trace:configure.in:8: -1- m4_pattern_allow([^libdir$]) m4trace:configure.in:8: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([localedir]) m4trace:configure.in:8: -1- m4_pattern_allow([^localedir$]) m4trace:configure.in:8: -1- AC_SUBST([mandir], ['${datarootdir}/man']) m4trace:configure.in:8: -1- AC_SUBST_TRACE([mandir]) m4trace:configure.in:8: -1- m4_pattern_allow([^mandir$]) m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ #undef PACKAGE_NAME]) m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME]) m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ #undef PACKAGE_VERSION]) m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ #undef PACKAGE_STRING]) m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.in:8: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:8: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT]) m4trace:configure.in:8: -1- AC_SUBST([DEFS]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([DEFS]) m4trace:configure.in:8: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.in:8: -1- AC_SUBST([ECHO_C]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([ECHO_C]) m4trace:configure.in:8: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.in:8: -1- AC_SUBST([ECHO_N]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([ECHO_N]) m4trace:configure.in:8: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.in:8: -1- AC_SUBST([ECHO_T]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([ECHO_T]) m4trace:configure.in:8: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.in:8: -1- AC_SUBST([LIBS]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.in:8: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:8: -1- AC_SUBST([build_alias]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([build_alias]) m4trace:configure.in:8: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.in:8: -1- AC_SUBST([host_alias]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([host_alias]) m4trace:configure.in:8: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.in:8: -1- AC_SUBST([target_alias]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([target_alias]) m4trace:configure.in:8: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. You should run autoupdate.], [aclocal.m4:7058: AM_CONFIG_HEADER is expanded from... configure.in:9: the top level]) m4trace:configure.in:9: -1- AC_CONFIG_HEADERS([config.h]) m4trace:configure.in:12: -1- AC_CANONICAL_SYSTEM m4trace:configure.in:12: -1- _m4_warn([obsolete], [The macro `AC_CANONICAL_SYSTEM' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:1819: AC_CANONICAL_SYSTEM is expanded from... configure.in:12: the top level]) m4trace:configure.in:12: -1- AC_CANONICAL_TARGET m4trace:configure.in:12: -1- AC_CANONICAL_HOST m4trace:configure.in:12: -1- AC_CANONICAL_BUILD m4trace:configure.in:12: -1- AC_REQUIRE_AUX_FILE([config.sub]) m4trace:configure.in:12: -1- AC_REQUIRE_AUX_FILE([config.guess]) m4trace:configure.in:12: -1- AC_SUBST([build], [$ac_cv_build]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([build]) m4trace:configure.in:12: -1- m4_pattern_allow([^build$]) m4trace:configure.in:12: -1- AC_SUBST([build_cpu], [$[1]]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([build_cpu]) m4trace:configure.in:12: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.in:12: -1- AC_SUBST([build_vendor], [$[2]]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([build_vendor]) m4trace:configure.in:12: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.in:12: -1- AC_SUBST([build_os]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([build_os]) m4trace:configure.in:12: -1- m4_pattern_allow([^build_os$]) m4trace:configure.in:12: -1- AC_SUBST([host], [$ac_cv_host]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([host]) m4trace:configure.in:12: -1- m4_pattern_allow([^host$]) m4trace:configure.in:12: -1- AC_SUBST([host_cpu], [$[1]]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([host_cpu]) m4trace:configure.in:12: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.in:12: -1- AC_SUBST([host_vendor], [$[2]]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([host_vendor]) m4trace:configure.in:12: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.in:12: -1- AC_SUBST([host_os]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([host_os]) m4trace:configure.in:12: -1- m4_pattern_allow([^host_os$]) m4trace:configure.in:12: -1- AC_SUBST([target], [$ac_cv_target]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([target]) m4trace:configure.in:12: -1- m4_pattern_allow([^target$]) m4trace:configure.in:12: -1- AC_SUBST([target_cpu], [$[1]]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([target_cpu]) m4trace:configure.in:12: -1- m4_pattern_allow([^target_cpu$]) m4trace:configure.in:12: -1- AC_SUBST([target_vendor], [$[2]]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([target_vendor]) m4trace:configure.in:12: -1- m4_pattern_allow([^target_vendor$]) m4trace:configure.in:12: -1- AC_SUBST([target_os]) m4trace:configure.in:12: -1- AC_SUBST_TRACE([target_os]) m4trace:configure.in:12: -1- m4_pattern_allow([^target_os$]) m4trace:configure.in:14: -1- AM_INIT_AUTOMAKE([linux-atm], [2.5.1]) m4trace:configure.in:14: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.in:14: -1- AM_AUTOMAKE_VERSION([1.11]) m4trace:configure.in:14: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.in:14: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) m4trace:configure.in:14: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:14: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) m4trace:configure.in:14: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:14: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([INSTALL_DATA]) m4trace:configure.in:14: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:14: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) m4trace:configure.in:14: -1- AC_SUBST_TRACE([am__isrc]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.in:14: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.in:14: -1- AC_SUBST([CYGPATH_W]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([CYGPATH_W]) m4trace:configure.in:14: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.in:14: -1- AC_SUBST([PACKAGE], [linux-atm]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE]) m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:14: -1- AC_SUBST([VERSION], [2.5.1]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([VERSION]) m4trace:configure.in:14: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ #undef PACKAGE]) m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) m4trace:configure.in:14: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:14: -1- AH_OUTPUT([VERSION], [/* Version number of package */ #undef VERSION]) m4trace:configure.in:14: -1- AC_REQUIRE_AUX_FILE([missing]) m4trace:configure.in:14: -1- AC_SUBST([ACLOCAL]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([ACLOCAL]) m4trace:configure.in:14: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.in:14: -1- AC_SUBST([AUTOCONF]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([AUTOCONF]) m4trace:configure.in:14: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.in:14: -1- AC_SUBST([AUTOMAKE]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([AUTOMAKE]) m4trace:configure.in:14: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.in:14: -1- AC_SUBST([AUTOHEADER]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([AUTOHEADER]) m4trace:configure.in:14: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.in:14: -1- AC_SUBST([MAKEINFO]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([MAKEINFO]) m4trace:configure.in:14: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.in:14: -1- AC_SUBST([install_sh]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([install_sh]) m4trace:configure.in:14: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.in:14: -1- AC_SUBST([STRIP]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([STRIP]) m4trace:configure.in:14: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:14: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) m4trace:configure.in:14: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.in:14: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.in:14: -1- AC_SUBST([MKDIR_P]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([MKDIR_P]) m4trace:configure.in:14: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.in:14: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([mkdir_p]) m4trace:configure.in:14: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.in:14: -1- AC_SUBST([AWK]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([AWK]) m4trace:configure.in:14: -1- m4_pattern_allow([^AWK$]) m4trace:configure.in:14: -1- AC_SUBST([SET_MAKE]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([SET_MAKE]) m4trace:configure.in:14: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.in:14: -1- AC_SUBST([am__leading_dot]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([am__leading_dot]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.in:14: -1- AC_SUBST([AMTAR]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([AMTAR]) m4trace:configure.in:14: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.in:14: -1- AC_SUBST([am__tar]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([am__tar]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.in:14: -1- AC_SUBST([am__untar]) m4trace:configure.in:14: -1- AC_SUBST_TRACE([am__untar]) m4trace:configure.in:14: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.in:19: -1- AC_SUBST([LIBVER_CURRENT]) m4trace:configure.in:19: -1- AC_SUBST_TRACE([LIBVER_CURRENT]) m4trace:configure.in:19: -1- m4_pattern_allow([^LIBVER_CURRENT$]) m4trace:configure.in:20: -1- AC_SUBST([LIBVER_REVISION]) m4trace:configure.in:20: -1- AC_SUBST_TRACE([LIBVER_REVISION]) m4trace:configure.in:20: -1- m4_pattern_allow([^LIBVER_REVISION$]) m4trace:configure.in:21: -1- AC_SUBST([LIBVER_AGE]) m4trace:configure.in:21: -1- AC_SUBST_TRACE([LIBVER_AGE]) m4trace:configure.in:21: -1- m4_pattern_allow([^LIBVER_AGE$]) m4trace:configure.in:24: -1- AC_SUBST([CC]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([CFLAGS]) m4trace:configure.in:24: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.in:24: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.in:24: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:24: -1- AC_SUBST([LIBS]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.in:24: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:24: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.in:24: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:24: -1- AC_SUBST([CC]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- AC_SUBST([CC]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- AC_SUBST([CC]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- AC_SUBST([CC]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:24: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:24: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([ac_ct_CC]) m4trace:configure.in:24: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.in:24: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([EXEEXT]) m4trace:configure.in:24: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.in:24: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([OBJEXT]) m4trace:configure.in:24: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.in:24: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([DEPDIR]) m4trace:configure.in:24: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.in:24: -1- AC_SUBST([am__include]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([am__include]) m4trace:configure.in:24: -1- m4_pattern_allow([^am__include$]) m4trace:configure.in:24: -1- AC_SUBST([am__quote]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([am__quote]) m4trace:configure.in:24: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.in:24: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.in:24: -1- AC_SUBST([AMDEP_TRUE]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([AMDEP_TRUE]) m4trace:configure.in:24: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.in:24: -1- AC_SUBST([AMDEP_FALSE]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([AMDEP_FALSE]) m4trace:configure.in:24: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.in:24: -1- AC_SUBST([AMDEPBACKSLASH]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) m4trace:configure.in:24: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.in:24: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([CCDEPMODE]) m4trace:configure.in:24: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.in:24: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:24: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) m4trace:configure.in:24: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.in:24: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.in:24: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) m4trace:configure.in:24: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.in:24: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.in:25: -1- AC_SUBST([LEX]) m4trace:configure.in:25: -1- AC_SUBST_TRACE([LEX]) m4trace:configure.in:25: -1- m4_pattern_allow([^LEX$]) m4trace:configure.in:25: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root]) m4trace:configure.in:25: -1- AC_SUBST_TRACE([LEX_OUTPUT_ROOT]) m4trace:configure.in:25: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$]) m4trace:configure.in:25: -1- AC_SUBST([LEXLIB]) m4trace:configure.in:25: -1- AC_SUBST_TRACE([LEXLIB]) m4trace:configure.in:25: -1- m4_pattern_allow([^LEXLIB$]) m4trace:configure.in:25: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER]) m4trace:configure.in:25: -1- m4_pattern_allow([^YYTEXT_POINTER$]) m4trace:configure.in:25: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a `char[]\'. */ #undef YYTEXT_POINTER]) m4trace:configure.in:26: -1- AC_SUBST([YACC]) m4trace:configure.in:26: -1- AC_SUBST_TRACE([YACC]) m4trace:configure.in:26: -1- m4_pattern_allow([^YACC$]) m4trace:configure.in:26: -1- AC_SUBST([YACC]) m4trace:configure.in:26: -1- AC_SUBST_TRACE([YACC]) m4trace:configure.in:26: -1- m4_pattern_allow([^YACC$]) m4trace:configure.in:26: -1- AC_SUBST([YFLAGS]) m4trace:configure.in:26: -1- AC_SUBST_TRACE([YFLAGS]) m4trace:configure.in:26: -1- m4_pattern_allow([^YFLAGS$]) m4trace:configure.in:27: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:27: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) m4trace:configure.in:27: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:27: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) m4trace:configure.in:27: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:27: -1- AC_SUBST_TRACE([INSTALL_DATA]) m4trace:configure.in:27: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:30: -1- AC_PROG_LIBTOOL m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... aclocal.m4:2048: AC_ENABLE_SHARED is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... aclocal.m4:2087: AC_ENABLE_STATIC is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... aclocal.m4:2126: AC_ENABLE_FAST_INSTALL is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1443: AC_ARG_WITH is expanded from... aclocal.m4:2267: AC_PROG_LD is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AC_SUBST([SED]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([SED]) m4trace:configure.in:30: -1- m4_pattern_allow([^SED$]) m4trace:configure.in:30: -1- AC_SUBST([GREP]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([GREP]) m4trace:configure.in:30: -1- m4_pattern_allow([^GREP$]) m4trace:configure.in:30: -1- AC_SUBST([EGREP]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([EGREP]) m4trace:configure.in:30: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.in:30: -1- AC_SUBST([LN_S], [$as_ln_s]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([LN_S]) m4trace:configure.in:30: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.in:30: -1- AC_SUBST([ECHO]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([ECHO]) m4trace:configure.in:30: -1- m4_pattern_allow([^ECHO$]) m4trace:configure.in:30: -1- AC_SUBST([AR]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([AR]) m4trace:configure.in:30: -1- m4_pattern_allow([^AR$]) m4trace:configure.in:30: -1- AC_SUBST([RANLIB]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([RANLIB]) m4trace:configure.in:30: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.in:30: -1- AC_SUBST([STRIP]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([STRIP]) m4trace:configure.in:30: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:30: -1- AC_SUBST([DSYMUTIL]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([DSYMUTIL]) m4trace:configure.in:30: -1- m4_pattern_allow([^DSYMUTIL$]) m4trace:configure.in:30: -1- AC_SUBST([NMEDIT]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([NMEDIT]) m4trace:configure.in:30: -1- m4_pattern_allow([^NMEDIT$]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1443: AC_ARG_WITH is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from... ../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from... ../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from... ../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from... aclocal.m4:565: _LT_AC_LOCK is expanded from... aclocal.m4:1186: AC_LIBTOOL_SYS_HARD_LINK_LOCKS is expanded from... aclocal.m4:2800: _LT_AC_LANG_C_CONFIG is expanded from... aclocal.m4:2799: AC_LIBTOOL_LANG_C_CONFIG is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H]) m4trace:configure.in:30: -1- AC_SUBST([CPP]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.in:30: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:30: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.in:30: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:30: -1- AC_SUBST([CPP]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.in:30: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:30: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.in:30: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.in:30: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) m4trace:configure.in:30: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.in:30: -1- _LT_AC_TAGCONFIG m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... ../../lib/autoconf/general.m4:1443: AC_ARG_WITH is expanded from... aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: error: tag name \"$tagname\" already exists], [../../lib/m4sugar/m4sh.m4:794: AS_ECHO is expanded from... aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: error: tag name \"$tagname\" already exists], [../../lib/m4sugar/m4sh.m4:794: AS_ECHO is expanded from... aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AC_SUBST([CXX]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CXX]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXX$]) m4trace:configure.in:30: -1- AC_SUBST([CXXFLAGS]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CXXFLAGS]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXXFLAGS$]) m4trace:configure.in:30: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.in:30: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:30: -1- AC_SUBST([LIBS]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.in:30: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:30: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.in:30: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:30: -1- AC_SUBST([CXX]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CXX]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXX$]) m4trace:configure.in:30: -1- AC_SUBST([ac_ct_CXX]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([ac_ct_CXX]) m4trace:configure.in:30: -1- m4_pattern_allow([^ac_ct_CXX$]) m4trace:configure.in:30: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CXXDEPMODE]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXXDEPMODE$]) m4trace:configure.in:30: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.in:30: -1- AC_SUBST([am__fastdepCXX_TRUE]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE]) m4trace:configure.in:30: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) m4trace:configure.in:30: -1- AC_SUBST([am__fastdepCXX_FALSE]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE]) m4trace:configure.in:30: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) m4trace:configure.in:30: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) m4trace:configure.in:30: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) m4trace:configure.in:30: -1- AC_SUBST([CXXCPP]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CXXCPP]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXXCPP$]) m4trace:configure.in:30: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.in:30: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:30: -1- AC_SUBST([CXXCPP]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([CXXCPP]) m4trace:configure.in:30: -1- m4_pattern_allow([^CXXCPP$]) m4trace:configure.in:30: -1- AC_SUBST([F77]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([F77]) m4trace:configure.in:30: -1- m4_pattern_allow([^F77$]) m4trace:configure.in:30: -1- AC_SUBST([FFLAGS]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([FFLAGS]) m4trace:configure.in:30: -1- m4_pattern_allow([^FFLAGS$]) m4trace:configure.in:30: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.in:30: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:30: -1- AC_SUBST([LIBS]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.in:30: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:30: -1- AC_SUBST([F77]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([F77]) m4trace:configure.in:30: -1- m4_pattern_allow([^F77$]) m4trace:configure.in:30: -1- AC_SUBST([ac_ct_F77]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([ac_ct_F77]) m4trace:configure.in:30: -1- m4_pattern_allow([^ac_ct_F77$]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. You should run autoupdate.], [../../lib/autoconf/lang.m4:148: AC_LANG_SAVE is expanded from... aclocal.m4:4186: _LT_AC_LANG_GCJ_CONFIG is expanded from... aclocal.m4:4185: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. You should run autoupdate.], [../../lib/autoconf/lang.m4:157: AC_LANG_RESTORE is expanded from... aclocal.m4:4186: _LT_AC_LANG_GCJ_CONFIG is expanded from... aclocal.m4:4185: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. You should run autoupdate.], [../../lib/autoconf/lang.m4:148: AC_LANG_SAVE is expanded from... aclocal.m4:4242: _LT_AC_LANG_RC_CONFIG is expanded from... aclocal.m4:4241: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. You should run autoupdate.], [../../lib/autoconf/lang.m4:157: AC_LANG_RESTORE is expanded from... aclocal.m4:4242: _LT_AC_LANG_RC_CONFIG is expanded from... aclocal.m4:4241: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... aclocal.m4:1925: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... aclocal.m4:6553: AM_PROG_LIBTOOL is expanded from... configure.in:30: the top level]) m4trace:configure.in:30: -1- AC_SUBST([LIBTOOL]) m4trace:configure.in:30: -1- AC_SUBST_TRACE([LIBTOOL]) m4trace:configure.in:30: -1- m4_pattern_allow([^LIBTOOL$]) m4trace:configure.in:31: -1- AC_SUBST([LIBTOOL_DEPS]) m4trace:configure.in:31: -1- AC_SUBST_TRACE([LIBTOOL_DEPS]) m4trace:configure.in:31: -1- m4_pattern_allow([^LIBTOOL_DEPS$]) m4trace:configure.in:34: -1- AC_SUBST([PERL]) m4trace:configure.in:34: -1- AC_SUBST_TRACE([PERL]) m4trace:configure.in:34: -1- m4_pattern_allow([^PERL$]) m4trace:configure.in:35: -1- AC_SUBST([PERL]) m4trace:configure.in:35: -1- AC_SUBST_TRACE([PERL]) m4trace:configure.in:35: -1- m4_pattern_allow([^PERL$]) m4trace:configure.in:49: -1- AH_OUTPUT([HAVE_LIBRESOLV], [/* Define to 1 if you have the `resolv\' library (-lresolv). */ #undef HAVE_LIBRESOLV]) m4trace:configure.in:49: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBRESOLV]) m4trace:configure.in:49: -1- m4_pattern_allow([^HAVE_LIBRESOLV$]) m4trace:configure.in:60: -1- AC_SUBST([CC_FOR_BUILD]) m4trace:configure.in:60: -1- AC_SUBST_TRACE([CC_FOR_BUILD]) m4trace:configure.in:60: -1- m4_pattern_allow([^CC_FOR_BUILD$]) m4trace:configure.in:67: -1- AC_SUBST([CC_FOR_BUILD]) m4trace:configure.in:67: -1- AC_SUBST_TRACE([CC_FOR_BUILD]) m4trace:configure.in:67: -1- m4_pattern_allow([^CC_FOR_BUILD$]) m4trace:configure.in:68: -1- AC_SUBST([CFLAGS_FOR_BUILD]) m4trace:configure.in:68: -1- AC_SUBST_TRACE([CFLAGS_FOR_BUILD]) m4trace:configure.in:68: -1- m4_pattern_allow([^CFLAGS_FOR_BUILD$]) m4trace:configure.in:73: -1- AC_DEFINE_TRACE_LITERAL([YY_USE_CONST]) m4trace:configure.in:73: -1- m4_pattern_allow([^YY_USE_CONST$]) m4trace:configure.in:73: -1- AH_OUTPUT([YY_USE_CONST], [/* */ #undef YY_USE_CONST]) m4trace:configure.in:79: -1- AC_DEFINE_TRACE_LITERAL([ATMSIGD_CONF]) m4trace:configure.in:79: -1- m4_pattern_allow([^ATMSIGD_CONF$]) m4trace:configure.in:79: -1- AH_OUTPUT([ATMSIGD_CONF], [/* Default config file location for atmsigd */ #undef ATMSIGD_CONF]) m4trace:configure.in:100: -2- AC_DEFINE_TRACE_LITERAL([DYNAMIC_UNI]) m4trace:configure.in:100: -2- m4_pattern_allow([^DYNAMIC_UNI$]) m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([UNI30]) m4trace:configure.in:82: -1- m4_pattern_allow([^UNI30$]) m4trace:configure.in:82: -1- AH_OUTPUT([UNI30], [/* */ #undef UNI30]) m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([UNI31]) m4trace:configure.in:82: -1- m4_pattern_allow([^UNI31$]) m4trace:configure.in:82: -1- AH_OUTPUT([UNI31], [/* Note: some UNI 3.0 switches will show really strange behaviour if confronted with using 3.1 signaling, so be sure to test your network *very* carefully before permanently configuring machines to use UNI 3.1. */ #undef UNI31]) m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([UNI40]) m4trace:configure.in:82: -1- m4_pattern_allow([^UNI40$]) m4trace:configure.in:82: -1- AH_OUTPUT([UNI40], [/* Some partial support for UNI 4.0 can be enabled by using UNI40 */ #undef UNI40]) m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([DYNAMIC_UNI]) m4trace:configure.in:82: -1- m4_pattern_allow([^DYNAMIC_UNI$]) m4trace:configure.in:82: -1- AH_OUTPUT([DYNAMIC_UNI], [/* The UNI version can be configured at run time. Dynamic is the default. Use the explicit version selections only in case of problems. */ #undef DYNAMIC_UNI]) m4trace:configure.in:103: -1- AC_DEFINE_TRACE_LITERAL([ALLOW_UNI30]) m4trace:configure.in:103: -1- m4_pattern_allow([^ALLOW_UNI30$]) m4trace:configure.in:103: -1- AH_OUTPUT([ALLOW_UNI30], [/* Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1) */ #undef ALLOW_UNI30]) m4trace:configure.in:114: -1- AC_DEFINE_TRACE_LITERAL([Q2963_1]) m4trace:configure.in:114: -1- m4_pattern_allow([^Q2963_1$]) m4trace:configure.in:114: -1- AH_OUTPUT([Q2963_1], [/* If using UNI40, you can also enable peak cell rate modification as specified in Q.2963.1 */ #undef Q2963_1]) m4trace:configure.in:128: -2- AC_DEFINE_TRACE_LITERAL([CISCO]) m4trace:configure.in:128: -2- m4_pattern_allow([^CISCO$]) m4trace:configure.in:128: -2- AH_OUTPUT([CISCO], [/* If you\'re using a Cisco LS100 or LS7010 switch, you should add the following line to work around a bug in their point-to-multipoint signaling (it got confused when receiving a CALL PROCEEDING, so we don\'t send it, which of course makes our clearing procedure slightly non-conformant): */ #undef CISCO]) m4trace:configure.in:136: -2- AC_DEFINE_TRACE_LITERAL([THOMFLEX]) m4trace:configure.in:136: -2- m4_pattern_allow([^THOMFLEX$]) m4trace:configure.in:136: -2- AH_OUTPUT([THOMFLEX], [/* Some versions of the Thomson Thomflex 5000 won\'t do any signaling before they get a RESTART. Uncomment the next line to enable sending of a RESTART whenever SAAL comes up. Note that the RESTART ACKNOWLEDGE sent in response to the RESTART will yield a warning, because we don\'t implement the full RESTART state machine. */ #undef THOMFLEX]) m4trace:configure.in:145: -1- AC_DEFINE_TRACE_LITERAL([BROKEN_POLL]) m4trace:configure.in:145: -1- m4_pattern_allow([^BROKEN_POLL$]) m4trace:configure.in:145: -1- AH_OUTPUT([BROKEN_POLL], [/* Use select() instead of poll() with MPOA */ #undef BROKEN_POLL]) m4trace:configure.in:149: -2- AC_DEFINE_TRACE_LITERAL([MPOA_1_1]) m4trace:configure.in:149: -2- m4_pattern_allow([^MPOA_1_1$]) m4trace:configure.in:149: -2- AH_OUTPUT([MPOA_1_1], [/* Use proposed MPOA 1.1 features */ #undef MPOA_1_1]) m4trace:configure.in:152: -1- AH_OUTPUT([HAVE_LIBMPR], [/* Define to 1 if you have the `mpr\' library (-lmpr). */ #undef HAVE_LIBMPR]) m4trace:configure.in:152: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBMPR]) m4trace:configure.in:152: -1- m4_pattern_allow([^HAVE_LIBMPR$]) m4trace:configure.in:176: -1- AC_SUBST([pmp_send]) m4trace:configure.in:176: -1- AC_SUBST_TRACE([pmp_send]) m4trace:configure.in:176: -1- m4_pattern_allow([^pmp_send$]) m4trace:configure.in:177: -1- AC_DEFINE_TRACE_LITERAL([MULTIPOINT]) m4trace:configure.in:177: -1- m4_pattern_allow([^MULTIPOINT$]) m4trace:configure.in:177: -1- AH_OUTPUT([MULTIPOINT], [/* Point to multipoint signalling support for atmsigd. */ #undef MULTIPOINT]) m4trace:configure.in:194: -1- AC_SUBST([atmoamd]) m4trace:configure.in:194: -1- AC_SUBST_TRACE([atmoamd]) m4trace:configure.in:194: -1- m4_pattern_allow([^atmoamd$]) m4trace:configure.in:211: -1- AC_CONFIG_FILES([Makefile \ doc/Makefile \ src/Makefile \ src/include/Makefile \ src/lib/Makefile \ src/test/Makefile \ src/debug/Makefile \ src/qgen/Makefile \ src/saal/Makefile \ src/q2931/Makefile \ src/sigd/Makefile \ src/maint/Makefile \ src/arpd/Makefile \ src/ilmid/Makefile \ src/ilmid/asn1/Makefile \ src/man/Makefile \ src/led/Makefile \ src/lane/Makefile \ src/mpoad/Makefile \ src/oamd/Makefile \ src/switch/Makefile \ src/switch/debug/Makefile \ src/switch/tcp/Makefile \ src/br2684/Makefile \ src/config/Makefile \ src/extra/Makefile \ src/extra/linux-atm.spec ]) m4trace:configure.in:211: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. You should run autoupdate.], []) m4trace:configure.in:211: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.in:211: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:211: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([LTLIBOBJS]) m4trace:configure.in:211: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.in:211: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) m4trace:configure.in:211: -1- AC_SUBST([am__EXEEXT_TRUE]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) m4trace:configure.in:211: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) m4trace:configure.in:211: -1- AC_SUBST([am__EXEEXT_FALSE]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) m4trace:configure.in:211: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) m4trace:configure.in:211: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) m4trace:configure.in:211: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([top_builddir]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([top_build_prefix]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([srcdir]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([abs_srcdir]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([top_srcdir]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([abs_top_srcdir]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([builddir]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([abs_builddir]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([abs_top_builddir]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([INSTALL]) m4trace:configure.in:211: -1- AC_SUBST_TRACE([MKDIR_P]) linux-atm-2.5.1/autom4te.cache/output.10000644000200100001440000262434211304770374016531 0ustar chasusers@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.63. @%:@ @%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="src/include/atm.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIB@&t@OBJS atmoamd pmp_send CFLAGS_FOR_BUILD CC_FOR_BUILD PERL LIBTOOL_DEPS LIBTOOL ac_ct_F77 FFLAGS F77 CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPP NMEDIT DSYMUTIL RANLIB AR ECHO LN_S EGREP GREP SED YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC LIBVER_AGE LIBVER_REVISION LIBVER_CURRENT am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_shared enable_static enable_fast_install with_gnu_ld enable_libtool_lock with_pic with_tags with_uni enable_allow_uni30 enable_q2963_1 enable_cisco enable_thomflex enable_mpoa_1_1 enable_mpr with_kernel_headers enable_multipoint ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS YACC YFLAGS CPP CXX CXXFLAGS CCC CXXCPP F77 FFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root @<:@DATAROOTDIR/doc/PACKAGE@:>@ --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ --enable-fast-install@<:@=PKGS@:>@ optimize for fast installation @<:@default=yes@:>@ --disable-libtool-lock avoid locking (might break parallel builds) --enable-allow_uni30 Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1) --enable-q2963_1 Enable peak cell rate modification as specified in Q.2963.1 (if using UNI 4.0) --enable-cisco Enable work around for point-to-multipoint signaling bug in Cisco LS100 or LS7010 switches --enable-thomflex Some versions of the Thomson Thomflex 5000 won't do any signaling before they get a RESTART. Enable sending of a RESTART whenever SAAL comes up. --enable-mpoa_1_1 Enable proposed MPOA 1.1 features --enable-mpr Enable memory debugging (if MPR is installed) --enable-multipoint Enable point to multipoint signalling Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ --with-pic try to use only PIC/non-PIC objects @<:@default=use both@:>@ --with-tags@<:@=TAGS@:>@ include additional configurations @<:@automatic@:>@ --with-uni=VERSION UNI version to use (3.0,3.1,4.0) default=dynamic --with-kernel-headers=path use the kernel headers found at path Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory YACC The `Yet Another C Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME @%:@@%:@ --------- @%:@@%:@ @%:@@%:@ Platform. @%:@@%:@ @%:@@%:@ --------- @%:@@%:@ hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ Core tests. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX @%:@@%:@ ----------------- @%:@@%:@ @%:@@%:@ Output variables. @%:@@%:@ @%:@@%:@ ----------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX @%:@@%:@ ------------------- @%:@@%:@ @%:@@%:@ File substitutions. @%:@@%:@ @%:@@%:@ ------------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if test "${ac_cv_target+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 $as_echo "$as_me: error: invalid value of canonical target" >&2;} { (exit 1); exit 1; }; };; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 $as_echo "$as_me: error: unsafe absolute working directory name" >&2;} { (exit 1); exit 1; }; };; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 $as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} { (exit 1); exit 1; }; };; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=linux-atm VERSION=2.5.1 cat >>confdefs.h <<_ACEOF @%:@define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' LIBVER_CURRENT="1" LIBVER_REVISION="0" LIBVER_AGE="0" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf @%:@ Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LEX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:$LINENO: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { yyless (input () != 0); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { (ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if test "${ac_cv_prog_lex_root+set}" = set; then $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else { { $as_echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 $as_echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:$LINENO: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if test "${ac_cv_lib_lex+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat >conftest.$ac_ext <<_ACEOF `cat $LEX_OUTPUT_ROOT.c` _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_lex=$ac_lib else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_prog_lex_yytext_pointer=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then cat >>confdefs.h <<\_ACEOF @%:@define YYTEXT_POINTER 1 _ACEOF fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_YACC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:$LINENO: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' @%:@ Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi @%:@ Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi @%:@ Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi { $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${lt_cv_path_SED+set}" = set; then $as_echo_n "(cached) " >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done fi SED=$lt_cv_path_SED { $as_echo "$as_me:$LINENO: result: $SED" >&5 $as_echo "$SED" >&6; } { $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" @%:@ Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac { $as_echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 $as_echo_n "checking for BSD-compatible nm... " >&6; } if test "${lt_cv_path_NM+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" { $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi { $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC @%:@ Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) libsuff=64 case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:$LINENO: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_F77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then { $as_echo "$as_me:$LINENO: result: $F77" >&5 $as_echo "$F77" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_F77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 $as_echo "$ac_ct_F77" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_F77" && break done if test "x$ac_ct_F77" = x; then F77="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } if test "${ac_cv_f77_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 $as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= { $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 $as_echo_n "checking whether $F77 accepts -g... " >&6; } if test "${ac_cv_prog_f77_g+set}" = set; then $as_echo_n "(cached) " >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_f77_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 $as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi if test $ac_compiler_gnu = yes; then G77=yes else G77= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments { $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$LINENO: result: none" >&5 $as_echo "none" >&6; } fi # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[ABCDGIRSTW]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi { $as_echo "$as_me:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. echo "int foo(void){return 1;}" > conftest.c $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib ${wl}-single_module conftest.c if test -f libconftest.dylib; then lt_cv_apple_cc_single_mod=yes rm -rf libconftest.dylib* fi rm conftest.c fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[0123]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil="~$DSYMUTIL \$lib || :" else _lt_dsymutil= fi ;; esac enable_dlopen=no enable_win32_dll=no @%:@ Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes @%:@ Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic='-qnocommon' lt_prog_compiler_wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs=no ;; esac fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= { $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ compiler_lib_search_dirs \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ fix_srcfile_path \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { $as_echo "$as_me:$LINENO: creating $ofile" >&5 $as_echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" @%:@ Check whether --with-tags was given. if test "${with_tags+set}" = set; then withval=$with_tags; tagnames="$withval" fi if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 $as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 $as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { $as_echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 $as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { $as_echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 $as_echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { $as_echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 $as_echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= compiler_lib_search_dirs_CXX= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration @%:@ Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" if test "$GXX" = yes ; then output_verbose_link_cmd='echo' archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_CXX=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else ld_shlibs_CXX=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext compiler_lib_search_dirs_CXX= if test -n "$compiler_lib_search_path_CXX"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_CXX='-qnocommon' lt_prog_compiler_wl_CXX='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc* | ecpc*) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 $as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 $as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ compiler_lib_search_dirs_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_F77='-qnocommon' lt_prog_compiler_wl_F77='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; rdos*) lt_prog_compiler_static_F77='-non_shared' ;; solaris*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_F77='-Qoption ld ';; *) lt_prog_compiler_wl_F77='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; unicos*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_can_build_shared_F77=no ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 $as_echo "$lt_prog_compiler_pic_F77" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_F77=yes fi else lt_cv_prog_compiler_static_works_F77=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then : else lt_prog_compiler_static_F77= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_F77=no fi ;; interix[3-9]*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_F77=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = no; then runpath_var= hardcode_libdir_flag_spec_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77='$convenience' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_F77='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_F77=no ;; esac fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; *) hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_F77=no fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_F77='${wl}-z,text' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_F77='${wl}-z,text' allow_undefined_flag_F77='${wl}-z,nodefs' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 $as_echo "$ld_shlibs_F77" >&6; } test "$ld_shlibs_F77" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 pic_flag=$lt_prog_compiler_pic_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 $as_echo "$archive_cmds_need_lc_F77" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ test "X$hardcode_automatic_F77" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 $as_echo "$hardcode_action_F77" >&6; } if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ compiler_lib_search_dirs_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ fix_srcfile_path_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no old_archive_cmds_GCJ=$old_archive_cmds lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_GCJ='-qnocommon' lt_prog_compiler_wl_GCJ='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-fpic' lt_prog_compiler_static_GCJ='-Bstatic' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; rdos*) lt_prog_compiler_static_GCJ='-non_shared' ;; solaris*) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_GCJ='-Qoption ld ';; *) lt_prog_compiler_wl_GCJ='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; unicos*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_can_build_shared_GCJ=no ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 $as_echo "$lt_prog_compiler_pic_GCJ" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_GCJ=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_GCJ=yes fi else lt_cv_prog_compiler_static_works_GCJ=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 $as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then : else lt_prog_compiler_static_GCJ= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 $as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_GCJ=no fi ;; interix[3-9]*) hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_GCJ=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_GCJ=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = no; then runpath_var= hardcode_libdir_flag_spec_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ='$convenience' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_GCJ=no ;; esac fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; *) hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_GCJ=no fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_GCJ='${wl}-z,text' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_GCJ='${wl}-z,text' allow_undefined_flag_GCJ='${wl}-z,nodefs' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 $as_echo "$ld_shlibs_GCJ" >&6; } test "$ld_shlibs_GCJ" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ pic_flag=$lt_prog_compiler_pic_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 $as_echo "$archive_cmds_need_lc_GCJ" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ test "X$hardcode_automatic_GCJ" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 $as_echo "$hardcode_action_GCJ" >&6; } if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ compiler_lib_search_dirs_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ fix_srcfile_path_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ compiler_lib_search_dirs_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ fix_srcfile_path_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { $as_echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 $as_echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { $as_echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 $as_echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PERL+set}" = set; then $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:$LINENO: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "${ac_cv_header_asm_errno_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for asm/errno.h" >&5 $as_echo_n "checking for asm/errno.h... " >&6; } if test "${ac_cv_header_asm_errno_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5 $as_echo "$ac_cv_header_asm_errno_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking asm/errno.h usability" >&5 $as_echo_n "checking asm/errno.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking asm/errno.h presence" >&5 $as_echo_n "checking asm/errno.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: asm/errno.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: asm/errno.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: asm/errno.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: asm/errno.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: asm/errno.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for asm/errno.h" >&5 $as_echo_n "checking for asm/errno.h... " >&6; } if test "${ac_cv_header_asm_errno_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_asm_errno_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5 $as_echo "$ac_cv_header_asm_errno_h" >&6; } fi if test "x$ac_cv_header_asm_errno_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: *** Unable to find asm/errno.h!!!" >&5 $as_echo "$as_me: error: *** Unable to find asm/errno.h!!!" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_linux_atmsap_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for linux/atmsap.h" >&5 $as_echo_n "checking for linux/atmsap.h... " >&6; } if test "${ac_cv_header_linux_atmsap_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5 $as_echo "$ac_cv_header_linux_atmsap_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking linux/atmsap.h usability" >&5 $as_echo_n "checking linux/atmsap.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking linux/atmsap.h presence" >&5 $as_echo_n "checking linux/atmsap.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for linux/atmsap.h" >&5 $as_echo_n "checking for linux/atmsap.h... " >&6; } if test "${ac_cv_header_linux_atmsap_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_linux_atmsap_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5 $as_echo "$ac_cv_header_linux_atmsap_h" >&6; } fi if test "x$ac_cv_header_linux_atmsap_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: *** Unable to find linux/atmsap.h!!!" >&5 $as_echo "$as_me: error: *** Unable to find linux/atmsap.h!!!" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking for main in -lresolv" >&5 $as_echo_n "checking for main in -lresolv... " >&6; } if test "${ac_cv_lib_resolv_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lresolv $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_resolv_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_resolv_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_main" >&5 $as_echo "$ac_cv_lib_resolv_main" >&6; } if test "x$ac_cv_lib_resolv_main" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_LIBRESOLV 1 _ACEOF LIBS="-lresolv $LIBS" else { { $as_echo "$as_me:$LINENO: error: *** Unable to find libresolv!!!" >&5 $as_echo "$as_me: error: *** Unable to find libresolv!!!" >&2;} { (exit 1); exit 1; }; } fi LIBS="" INCLUDES="-I\$(top_srcdir)/src/include" CFLAGS="$INCLUDES $CFLAGS -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes" if test "x$cross_compiling" = "xyes"; then { $as_echo "$as_me:$LINENO: checking cc for build" >&5 $as_echo_n "checking cc for build... " >&6; } for ac_prog in gcc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC_FOR_BUILD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC_FOR_BUILD="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then { $as_echo "$as_me:$LINENO: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC_FOR_BUILD" && break done { $as_echo "$as_me:$LINENO: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } CFLAGS_FOR_BUILD="$INCLUDES $CFLAGS_FOR_BUILD -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes" else CC_FOR_BUILD="${CC_FOR_BUILD-$CC}" CFLAGS_FOR_BUILD="${CFLAGS_FOR_BUILD-$CFLAGS}" fi YACC="$YACC -d" cat >>confdefs.h <<\_ACEOF @%:@define YY_USE_CONST /**/ _ACEOF atmsigd_conf_dir=` test "x$exec_prefix" = xNONE && exec_prefix=$ac_default_prefix test "x$prefix" = xNONE && prefix=${exec_prefix} eval echo "$sysconfdir"` cat >>confdefs.h <<_ACEOF @%:@define ATMSIGD_CONF "$atmsigd_conf_dir/atmsigd.conf" _ACEOF @%:@ Check whether --with-uni was given. if test "${with_uni+set}" = set; then withval=$with_uni; case "$with_uni" in "3.0" ) cat >>confdefs.h <<\_ACEOF @%:@define UNI30 /**/ _ACEOF ;; "3.1" ) cat >>confdefs.h <<\_ACEOF @%:@define UNI31 /**/ _ACEOF ;; "4.0" ) cat >>confdefs.h <<\_ACEOF @%:@define UNI40 /**/ _ACEOF ;; *) cat >>confdefs.h <<\_ACEOF @%:@define DYNAMIC_UNI /**/ _ACEOF { $as_echo "$as_me:$LINENO: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&5 $as_echo "$as_me: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&2;} esac else cat >>confdefs.h <<\_ACEOF @%:@define DYNAMIC_UNI 1 _ACEOF fi @%:@ Check whether --enable-allow_uni30 was given. if test "${enable_allow_uni30+set}" = set; then enableval=$enable_allow_uni30; if test "$with_uni" = "3.1" ; then cat >>confdefs.h <<\_ACEOF @%:@define ALLOW_UNI30 /**/ _ACEOF else { $as_echo "$as_me:$LINENO: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&5 $as_echo "$as_me: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&2;} fi fi @%:@ Check whether --enable-q2963_1 was given. if test "${enable_q2963_1+set}" = set; then enableval=$enable_q2963_1; if test "$with_uni" = "4.0" ; then cat >>confdefs.h <<\_ACEOF @%:@define Q2963_1 /**/ _ACEOF else { $as_echo "$as_me:$LINENO: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&5 $as_echo "$as_me: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&2;} fi fi @%:@ Check whether --enable-cisco was given. if test "${enable_cisco+set}" = set; then enableval=$enable_cisco; cat >>confdefs.h <<\_ACEOF @%:@define CISCO /**/ _ACEOF fi @%:@ Check whether --enable-thomflex was given. if test "${enable_thomflex+set}" = set; then enableval=$enable_thomflex; cat >>confdefs.h <<\_ACEOF @%:@define THOMFLEX /**/ _ACEOF fi cat >>confdefs.h <<\_ACEOF @%:@define BROKEN_POLL /**/ _ACEOF @%:@ Check whether --enable-mpoa_1_1 was given. if test "${enable_mpoa_1_1+set}" = set; then enableval=$enable_mpoa_1_1; cat >>confdefs.h <<\_ACEOF @%:@define MPOA_1_1 /**/ _ACEOF fi @%:@ Check whether --enable-mpr was given. if test "${enable_mpr+set}" = set; then enableval=$enable_mpr; case "$enable_mpr" in "" | y | ye | yes | Y | YE | YES ) { $as_echo "$as_me:$LINENO: checking for main in -lmpr" >&5 $as_echo_n "checking for main in -lmpr... " >&6; } if test "${ac_cv_lib_mpr_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpr $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_mpr_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_mpr_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpr_main" >&5 $as_echo "$ac_cv_lib_mpr_main" >&6; } if test "x$ac_cv_lib_mpr_main" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_LIBMPR 1 _ACEOF LIBS="-lmpr $LIBS" else { $as_echo "$as_me:$LINENO: WARNING: *** Could not find libmpr! Is MPR installed?" >&5 $as_echo "$as_me: WARNING: *** Could not find libmpr! Is MPR installed?" >&2;} fi ;; esac fi @%:@ Check whether --with-kernel-headers was given. if test "${with_kernel_headers+set}" = set; then withval=$with_kernel_headers; fi if test "x$with_kernel_headers" != "x"; then CFLAGS="-I$with_kernel_headers/include $CFLAGS" fi pmp_send="" @%:@ Check whether --enable-multipoint was given. if test "${enable_multipoint+set}" = set; then enableval=$enable_multipoint; cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include #include int main () { int fd; struct atm_iobuf buf; ioctl(fd, ATM_ADDPARTY, &buf); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF @%:@define MULTIPOINT /**/ _ACEOF pmp_send="pmp_send" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: WARNING: *** Multipoint signalling was not enabled. Missing kernel support?" >&5 $as_echo "$as_me: WARNING: *** Multipoint signalling was not enabled. Missing kernel support?" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi atmoamd="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include #include int main () { int fd; ioctl(fd, ATMOAMD_CTRL, 0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then atmoamd="atmoamd" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: WARNING: *** atmoamd will not be built. Missing kernel support?" >&5 $as_echo "$as_me: WARNING: *** atmoamd will not be built. Missing kernel support?" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_config_files="$ac_config_files Makefile doc/Makefile src/Makefile src/include/Makefile src/lib/Makefile src/test/Makefile src/debug/Makefile src/qgen/Makefile src/saal/Makefile src/q2931/Makefile src/sigd/Makefile src/maint/Makefile src/arpd/Makefile src/ilmid/Makefile src/ilmid/asn1/Makefile src/man/Makefile src/led/Makefile src/lane/Makefile src/mpoad/Makefile src/oamd/Makefile src/switch/Makefile src/switch/debug/Makefile src/switch/tcp/Makefile src/br2684/Makefile src/config/Makefile src/extra/Makefile src/extra/linux-atm.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/include/Makefile") CONFIG_FILES="$CONFIG_FILES src/include/Makefile" ;; "src/lib/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib/Makefile" ;; "src/test/Makefile") CONFIG_FILES="$CONFIG_FILES src/test/Makefile" ;; "src/debug/Makefile") CONFIG_FILES="$CONFIG_FILES src/debug/Makefile" ;; "src/qgen/Makefile") CONFIG_FILES="$CONFIG_FILES src/qgen/Makefile" ;; "src/saal/Makefile") CONFIG_FILES="$CONFIG_FILES src/saal/Makefile" ;; "src/q2931/Makefile") CONFIG_FILES="$CONFIG_FILES src/q2931/Makefile" ;; "src/sigd/Makefile") CONFIG_FILES="$CONFIG_FILES src/sigd/Makefile" ;; "src/maint/Makefile") CONFIG_FILES="$CONFIG_FILES src/maint/Makefile" ;; "src/arpd/Makefile") CONFIG_FILES="$CONFIG_FILES src/arpd/Makefile" ;; "src/ilmid/Makefile") CONFIG_FILES="$CONFIG_FILES src/ilmid/Makefile" ;; "src/ilmid/asn1/Makefile") CONFIG_FILES="$CONFIG_FILES src/ilmid/asn1/Makefile" ;; "src/man/Makefile") CONFIG_FILES="$CONFIG_FILES src/man/Makefile" ;; "src/led/Makefile") CONFIG_FILES="$CONFIG_FILES src/led/Makefile" ;; "src/lane/Makefile") CONFIG_FILES="$CONFIG_FILES src/lane/Makefile" ;; "src/mpoad/Makefile") CONFIG_FILES="$CONFIG_FILES src/mpoad/Makefile" ;; "src/oamd/Makefile") CONFIG_FILES="$CONFIG_FILES src/oamd/Makefile" ;; "src/switch/Makefile") CONFIG_FILES="$CONFIG_FILES src/switch/Makefile" ;; "src/switch/debug/Makefile") CONFIG_FILES="$CONFIG_FILES src/switch/debug/Makefile" ;; "src/switch/tcp/Makefile") CONFIG_FILES="$CONFIG_FILES src/switch/tcp/Makefile" ;; "src/br2684/Makefile") CONFIG_FILES="$CONFIG_FILES src/br2684/Makefile" ;; "src/config/Makefile") CONFIG_FILES="$CONFIG_FILES src/config/Makefile" ;; "src/extra/Makefile") CONFIG_FILES="$CONFIG_FILES src/extra/Makefile" ;; "src/extra/linux-atm.spec") CONFIG_FILES="$CONFIG_FILES src/extra/linux-atm.spec" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi linux-atm-2.5.1/aclocal.m40000644000200100001440000102556711304770371014143 0ustar chasusers# generated automatically by aclocal 1.11 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],, [m4_warning([this file was generated for autoconf 2.63. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # serial 52 AC_PROG_LIBTOOL # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) # ----------------------------------------------------------- # If this macro is not defined by Autoconf, define it here. m4_ifdef([AC_PROVIDE_IFELSE], [], [m4_define([AC_PROVIDE_IFELSE], [m4_ifdef([AC_PROVIDE_$1], [$2], [$3])])]) # AC_PROG_LIBTOOL # --------------- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])])# AC_PROG_LIBTOOL # _AC_PROG_LIBTOOL # ---------------- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ])# _AC_PROG_LIBTOOL # AC_LIBTOOL_SETUP # ---------------- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac _LT_REQUIRED_DARWIN_CHECKS AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ])# AC_LIBTOOL_SETUP # _LT_AC_SYS_COMPILER # ------------------- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_AC_SYS_COMPILER # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. AC_DEFUN([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. AC_DEFUN([_LT_COMPILER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. AC_DEFUN([_LT_LINKER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # -------------------------- # Check for some things on darwin AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. echo "int foo(void){return 1;}" > conftest.c $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib ${wl}-single_module conftest.c if test -f libconftest.dylib; then lt_cv_apple_cc_single_mod=yes rm -rf libconftest.dylib* fi rm conftest.c fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[0123]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil="~$DSYMUTIL \$lib || :" else _lt_dsymutil= fi ;; esac ]) # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_AC_SYS_LIBPATH_AIX # _LT_AC_SHELL_INIT(ARG) # ---------------------- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_AC_SHELL_INIT # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_LOCK # ----------- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) libsuff=64 case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ])# _LT_AC_LOCK # AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED]) AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ])# AC_LIBTOOL_COMPILER_OPTION # AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ------------------------------------------------------------ # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ])# AC_LIBTOOL_LINKER_OPTION # AC_LIBTOOL_SYS_MAX_CMD_LEN # -------------------------- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ])# AC_LIBTOOL_SYS_MAX_CMD_LEN # _LT_AC_CHECK_DLFCN # ------------------ AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ])# _LT_AC_CHECK_DLFCN # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # --------------------------------------------------------------------- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ---------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF # AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) # --------------------------------- # Check to see if options -c and -o are simultaneously supported by compiler AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* ]) ])# AC_LIBTOOL_PROG_CC_C_O # AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) # ----------------------------------------- # Check to see if we can do hard links to lock some files if needed AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS # AC_LIBTOOL_OBJDIR # ----------------- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ])# AC_LIBTOOL_OBJDIR # AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) # ---------------------------------------------- # Check hardcoding attributes. AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH # AC_LIBTOOL_SYS_LIB_STRIP # ------------------------ AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ])# AC_LIBTOOL_SYS_LIB_STRIP # AC_LIBTOOL_SYS_DYNAMIC_LINKER # ----------------------------- # PORTME Fill in your ld.so characteristics AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" m4_if($1,[],[ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec], [lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"]) sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec], [lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"]) sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER # _LT_AC_TAGCONFIG # ---------------- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ])# _LT_AC_TAGCONFIG # AC_LIBTOOL_DLOPEN # ----------------- # enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_DLOPEN # AC_LIBTOOL_WIN32_DLL # -------------------- # declare package support for building win32 DLLs AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL # AC_ENABLE_SHARED([DEFAULT]) # --------------------------- # implement the --enable-shared flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ])# AC_ENABLE_SHARED # AC_DISABLE_SHARED # ----------------- # set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ])# AC_DISABLE_SHARED # AC_ENABLE_STATIC([DEFAULT]) # --------------------------- # implement the --enable-static flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ])# AC_ENABLE_STATIC # AC_DISABLE_STATIC # ----------------- # set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ])# AC_DISABLE_STATIC # AC_ENABLE_FAST_INSTALL([DEFAULT]) # --------------------------------- # implement the --enable-fast-install flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ])# AC_ENABLE_FAST_INSTALL # AC_DISABLE_FAST_INSTALL # ----------------------- # set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ])# AC_DISABLE_FAST_INSTALL # AC_LIBTOOL_PICMODE([MODE]) # -------------------------- # implement the --with-pic flag # MODE is either `yes' or `no'. If omitted, it defaults to `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ])# AC_LIBTOOL_PICMODE # AC_PROG_EGREP # ------------- # This is predefined starting with Autoconf 2.54, so this conditional # definition can be removed once we require Autoconf 2.54 or later. m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], [AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi]) EGREP=$ac_cv_prog_egrep AC_SUBST([EGREP]) ])]) # AC_PATH_TOOL_PREFIX # ------------------- # find a file program which can recognize shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ])# AC_PATH_TOOL_PREFIX # AC_PATH_MAGIC # ------------- # find a file program which can recognize a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# AC_PATH_MAGIC # AC_PROG_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ])# AC_DEPLIBS_CHECK_METHOD # AC_PROG_NM # ---------- # find the pathname to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ])# AC_PROG_NM # AC_CHECK_LIBM # ------------- # check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ])# AC_CHECK_LIBM # AC_LIBLTDL_CONVENIENCE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # it is assumed to be `libltdl'. LIBLTDL will be prefixed with # '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' # (note the single quotes!). If your package is not flat and you're not # using automake, define top_builddir and top_srcdir appropriately in # the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_CONVENIENCE # AC_LIBLTDL_INSTALLABLE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # and an installed libltdl is not found, it is assumed to be `libltdl'. # LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and top_srcdir # appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_INSTALLABLE # AC_LIBTOOL_CXX # -------------- # enable support for C++ libraries AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ])# AC_LIBTOOL_CXX # _LT_AC_LANG_CXX # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ])# _LT_AC_LANG_CXX # _LT_AC_PROG_CXXCPP # ------------------ AC_DEFUN([_LT_AC_PROG_CXXCPP], [ AC_REQUIRE([AC_PROG_CXX]) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP fi ])# _LT_AC_PROG_CXXCPP # AC_LIBTOOL_F77 # -------------- # enable support for Fortran 77 libraries AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ])# AC_LIBTOOL_F77 # _LT_AC_LANG_F77 # --------------- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ])# _LT_AC_LANG_F77 # AC_LIBTOOL_GCJ # -------------- # enable support for GCJ libraries AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ])# AC_LIBTOOL_GCJ # _LT_AC_LANG_GCJ # --------------- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ])# _LT_AC_LANG_GCJ # AC_LIBTOOL_RC # ------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ])# AC_LIBTOOL_RC # AC_LIBTOOL_LANG_C_CONFIG # ------------------------ # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_C_CONFIG # AC_LIBTOOL_LANG_CXX_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" if test "$GXX" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) # ------------------------------------ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP], [AC_REQUIRE([LT_AC_PROG_SED])dnl dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_AC_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac ])# AC_LIBTOOL_POSTDEP_PREDEP # AC_LIBTOOL_LANG_F77_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) AC_DEFUN([_LT_AC_LANG_F77_CONFIG], [AC_REQUIRE([AC_PROG_F77]) AC_LANG_PUSH(Fortran 77) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_AC_TAGVAR(GCC, $1)="$G77" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_F77_CONFIG # AC_LIBTOOL_LANG_GCJ_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], [AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_GCJ_CONFIG # AC_LIBTOOL_LANG_RC_CONFIG # ------------------------- # Ensure that the configuration vars for the Windows resource compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) AC_DEFUN([_LT_AC_LANG_RC_CONFIG], [AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_RC_CONFIG # AC_LIBTOOL_CONFIG([TAGNAME]) # ---------------------------- # If TAGNAME is not passed, then create an initial libtool script # with a default configuration from the untagged config vars. Otherwise # add code to config.status for appending the configuration named by # TAGNAME from the matching tagged config vars. AC_DEFUN([AC_LIBTOOL_CONFIG], [# The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ _LT_AC_TAGVAR(compiler, $1) \ _LT_AC_TAGVAR(CC, $1) \ _LT_AC_TAGVAR(LD, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ _LT_AC_TAGVAR(old_archive_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ _LT_AC_TAGVAR(predep_objects, $1) \ _LT_AC_TAGVAR(postdep_objects, $1) \ _LT_AC_TAGVAR(predeps, $1) \ _LT_AC_TAGVAR(postdeps, $1) \ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \ _LT_AC_TAGVAR(archive_cmds, $1) \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ _LT_AC_TAGVAR(postinstall_cmds, $1) \ _LT_AC_TAGVAR(postuninstall_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ _LT_AC_TAGVAR(allow_undefined_flag, $1) \ _LT_AC_TAGVAR(no_undefined_flag, $1) \ _LT_AC_TAGVAR(export_symbols_cmds, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ _LT_AC_TAGVAR(hardcode_automatic, $1) \ _LT_AC_TAGVAR(module_cmds, $1) \ _LT_AC_TAGVAR(module_expsym_cmds, $1) \ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ _LT_AC_TAGVAR(fix_srcfile_path, $1) \ _LT_AC_TAGVAR(exclude_expsyms, $1) \ _LT_AC_TAGVAR(include_expsyms, $1); do case $var in _LT_AC_TAGVAR(old_archive_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ _LT_AC_TAGVAR(archive_cmds, $1) | \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ _LT_AC_TAGVAR(module_cmds, $1) | \ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\[$]0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` ;; esac ifelse([$1], [], [cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" AC_MSG_NOTICE([creating $ofile])], [cfgfile="$ofile"]) cat <<__EOF__ >> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ])# AC_LIBTOOL_CONFIG # AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([LT_AC_PROG_SED]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[[ABCDGIRSTW]]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) # --------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc* | ecpc*) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler. _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac # # Check to make sure the static flag actually works. # wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ]) # AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) # ------------------------------------ # See if the linker supports building shared libraries. AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. _LT_CC_BASENAME([$compiler]) case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi[[45]]*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then wlarc='${wl}' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ])# AC_LIBTOOL_PROG_LD_SHLIBS # _LT_AC_FILE_LTDLL_C # ------------------- # Be careful that the start marker always follows a newline. AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ])# _LT_AC_FILE_LTDLL_C # _LT_AC_TAGVAR(VARNAME, [TAGNAME]) # --------------------------------- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) # Cheap backport of AS_EXECUTABLE_P and required macros # from Autoconf 2.59; we should not use $as_executable_p directly. # _AS_TEST_PREPARE # ---------------- m4_ifndef([_AS_TEST_PREPARE], [m4_defun([_AS_TEST_PREPARE], [if test -x / >/dev/null 2>&1; then as_executable_p='test -x' else as_executable_p='test -f' fi ])])# _AS_TEST_PREPARE # AS_EXECUTABLE_P # --------------- # Check whether a file is executable. m4_ifndef([AS_EXECUTABLE_P], [m4_defun([AS_EXECUTABLE_P], [AS_REQUIRE([_AS_TEST_PREPARE])dnl $as_executable_p $1[]dnl ])])# AS_EXECUTABLE_P # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # # LT_AC_PROG_SED # -------------- # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_PROG_LEX # ----------- # Autoconf leaves LEX=: if lex or flex can't be found. Change that to a # "missing" invocation, for better error output. AC_DEFUN([AM_PROG_LEX], [AC_PREREQ(2.50)dnl AC_REQUIRE([AM_MISSING_HAS_RUN])dnl AC_REQUIRE([AC_PROG_LEX])dnl if test "$LEX" = :; then LEX=${am_missing_run}flex fi]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR linux-atm-2.5.1/configure0000755000200100001440000262253611304770372014213 0ustar chasusers#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="src/include/atm.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS atmoamd pmp_send CFLAGS_FOR_BUILD CC_FOR_BUILD PERL LIBTOOL_DEPS LIBTOOL ac_ct_F77 FFLAGS F77 CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPP NMEDIT DSYMUTIL RANLIB AR ECHO LN_S EGREP GREP SED YFLAGS YACC LEXLIB LEX_OUTPUT_ROOT LEX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC LIBVER_AGE LIBVER_REVISION LIBVER_CURRENT am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_shared enable_static enable_fast_install with_gnu_ld enable_libtool_lock with_pic with_tags with_uni enable_allow_uni30 enable_q2963_1 enable_cisco enable_thomflex enable_mpoa_1_1 enable_mpr with_kernel_headers enable_multipoint ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS YACC YFLAGS CPP CXX CXXFLAGS CCC CXXCPP F77 FFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-allow_uni30 Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1) --enable-q2963_1 Enable peak cell rate modification as specified in Q.2963.1 (if using UNI 4.0) --enable-cisco Enable work around for point-to-multipoint signaling bug in Cisco LS100 or LS7010 switches --enable-thomflex Some versions of the Thomson Thomflex 5000 won't do any signaling before they get a RESTART. Enable sending of a RESTART whenever SAAL comes up. --enable-mpoa_1_1 Enable proposed MPOA 1.1 features --enable-mpr Enable memory debugging (if MPR is installed) --enable-multipoint Enable point to multipoint signalling Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] --with-tags[=TAGS] include additional configurations [automatic] --with-uni=VERSION UNI version to use (3.0,3.1,4.0) default=dynamic --with-kernel-headers=path use the kernel headers found at path Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory YACC The `Yet Another C Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if test "${ac_cv_target+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 $as_echo "$as_me: error: invalid value of canonical target" >&2;} { (exit 1); exit 1; }; };; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 $as_echo "$as_me: error: unsafe absolute working directory name" >&2;} { (exit 1); exit 1; }; };; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 $as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} { (exit 1); exit 1; }; };; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=linux-atm VERSION=2.5.1 cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' LIBVER_CURRENT="1" LIBVER_REVISION="0" LIBVER_AGE="0" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LEX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:$LINENO: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { yyless (input () != 0); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { (ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if test "${ac_cv_prog_lex_root+set}" = set; then $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else { { $as_echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 $as_echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:$LINENO: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if test "${ac_cv_lib_lex+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat >conftest.$ac_ext <<_ACEOF `cat $LEX_OUTPUT_ROOT.c` _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_lex=$ac_lib else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_prog_lex_yytext_pointer=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then cat >>confdefs.h <<\_ACEOF #define YYTEXT_POINTER 1 _ACEOF fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_YACC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:$LINENO: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi { $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${lt_cv_path_SED+set}" = set; then $as_echo_n "(cached) " >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done fi SED=$lt_cv_path_SED { $as_echo "$as_me:$LINENO: result: $SED" >&5 $as_echo "$SED" >&6; } { $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac { $as_echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 $as_echo_n "checking for BSD-compatible nm... " >&6; } if test "${lt_cv_path_NM+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" { $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi { $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 4902 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) libsuff=64 case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:$LINENO: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_F77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then { $as_echo "$as_me:$LINENO: result: $F77" >&5 $as_echo "$F77" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_F77+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 $as_echo "$ac_ct_F77" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_F77" && break done if test "x$ac_ct_F77" = x; then F77="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } if test "${ac_cv_f77_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 $as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= { $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 $as_echo_n "checking whether $F77 accepts -g... " >&6; } if test "${ac_cv_prog_f77_g+set}" = set; then $as_echo_n "(cached) " >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_f77_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 $as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi if test $ac_compiler_gnu = yes; then G77=yes else G77= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments { $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$LINENO: result: none" >&5 $as_echo "none" >&6; } fi # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[ABCDGIRSTW]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi { $as_echo "$as_me:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. echo "int foo(void){return 1;}" > conftest.c $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib ${wl}-single_module conftest.c if test -f libconftest.dylib; then lt_cv_apple_cc_single_mod=yes rm -rf libconftest.dylib* fi rm conftest.c fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[0123]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil="~$DSYMUTIL \$lib || :" else _lt_dsymutil= fi ;; esac enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8002: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8006: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic='-qnocommon' lt_prog_compiler_wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8292: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8296: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8396: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8400: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs=no ;; esac fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= { $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ compiler_lib_search_dirs \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ fix_srcfile_path \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { $as_echo "$as_me:$LINENO: creating $ofile" >&5 $as_echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags was given. if test "${with_tags+set}" = set; then withval=$with_tags; tagnames="$withval" fi if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 $as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 $as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { $as_echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 $as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { $as_echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 $as_echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { $as_echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 $as_echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= compiler_lib_search_dirs_CXX= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" if test "$GXX" = yes ; then output_verbose_link_cmd='echo' archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_CXX=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else ld_shlibs_CXX=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext compiler_lib_search_dirs_CXX= if test -n "$compiler_lib_search_path_CXX"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_CXX='-qnocommon' lt_prog_compiler_wl_CXX='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc* | ecpc*) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 $as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:13307: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:13311: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:13411: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:13415: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 $as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ compiler_lib_search_dirs_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_F77='-qnocommon' lt_prog_compiler_wl_F77='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; rdos*) lt_prog_compiler_static_F77='-non_shared' ;; solaris*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_F77='-Qoption ld ';; *) lt_prog_compiler_wl_F77='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; unicos*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_can_build_shared_F77=no ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 $as_echo "$lt_prog_compiler_pic_F77" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14996: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:15000: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_F77=yes fi else lt_cv_prog_compiler_static_works_F77=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 $as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then : else lt_prog_compiler_static_F77= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:15100: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:15104: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 $as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_F77=no fi ;; interix[3-9]*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_F77=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = no; then runpath_var= hardcode_libdir_flag_spec_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77='$convenience' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_F77='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_F77=no ;; esac fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; *) hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_F77=no fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_F77='${wl}-z,text' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_F77='${wl}-z,text' allow_undefined_flag_F77='${wl}-z,nodefs' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 $as_echo "$ld_shlibs_F77" >&6; } test "$ld_shlibs_F77" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 pic_flag=$lt_prog_compiler_pic_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 $as_echo "$archive_cmds_need_lc_F77" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ test "X$hardcode_automatic_F77" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 $as_echo "$hardcode_action_F77" >&6; } if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ compiler_lib_search_dirs_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ fix_srcfile_path_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no old_archive_cmds_GCJ=$old_archive_cmds lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17317: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:17321: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_GCJ='-qnocommon' lt_prog_compiler_wl_GCJ='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-fpic' lt_prog_compiler_static_GCJ='-Bstatic' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; rdos*) lt_prog_compiler_static_GCJ='-non_shared' ;; solaris*) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_GCJ='-Qoption ld ';; *) lt_prog_compiler_wl_GCJ='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; unicos*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_can_build_shared_GCJ=no ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 $as_echo "$lt_prog_compiler_pic_GCJ" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17607: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:17611: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_GCJ=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_GCJ=yes fi else lt_cv_prog_compiler_static_works_GCJ=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 $as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then : else lt_prog_compiler_static_GCJ= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17711: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:17715: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 $as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_GCJ=no fi ;; interix[3-9]*) hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi else ld_shlibs_GCJ=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_GCJ=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = no; then runpath_var= hardcode_libdir_flag_spec_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ='$convenience' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_GCJ=no ;; esac fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; *) hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_GCJ=no fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_GCJ='${wl}-z,text' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_GCJ='${wl}-z,text' allow_undefined_flag_GCJ='${wl}-z,nodefs' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 $as_echo "$ld_shlibs_GCJ" >&6; } test "$ld_shlibs_GCJ" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ pic_flag=$lt_prog_compiler_pic_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 $as_echo "$archive_cmds_need_lc_GCJ" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ test "X$hardcode_automatic_GCJ" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 $as_echo "$hardcode_action_GCJ" >&6; } if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ compiler_lib_search_dirs_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ fix_srcfile_path_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ compiler_lib_search_dirs_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ fix_srcfile_path_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { $as_echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 $as_echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { $as_echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 $as_echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PERL+set}" = set; then $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:$LINENO: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "${ac_cv_header_asm_errno_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for asm/errno.h" >&5 $as_echo_n "checking for asm/errno.h... " >&6; } if test "${ac_cv_header_asm_errno_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5 $as_echo "$ac_cv_header_asm_errno_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking asm/errno.h usability" >&5 $as_echo_n "checking asm/errno.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking asm/errno.h presence" >&5 $as_echo_n "checking asm/errno.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: asm/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: asm/errno.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: asm/errno.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: asm/errno.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: asm/errno.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: asm/errno.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: asm/errno.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: asm/errno.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: asm/errno.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for asm/errno.h" >&5 $as_echo_n "checking for asm/errno.h... " >&6; } if test "${ac_cv_header_asm_errno_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_asm_errno_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_asm_errno_h" >&5 $as_echo "$ac_cv_header_asm_errno_h" >&6; } fi if test "x$ac_cv_header_asm_errno_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: *** Unable to find asm/errno.h!!!" >&5 $as_echo "$as_me: error: *** Unable to find asm/errno.h!!!" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_linux_atmsap_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for linux/atmsap.h" >&5 $as_echo_n "checking for linux/atmsap.h... " >&6; } if test "${ac_cv_header_linux_atmsap_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5 $as_echo "$ac_cv_header_linux_atmsap_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking linux/atmsap.h usability" >&5 $as_echo_n "checking linux/atmsap.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking linux/atmsap.h presence" >&5 $as_echo_n "checking linux/atmsap.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: linux/atmsap.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: linux/atmsap.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for linux/atmsap.h" >&5 $as_echo_n "checking for linux/atmsap.h... " >&6; } if test "${ac_cv_header_linux_atmsap_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_linux_atmsap_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_linux_atmsap_h" >&5 $as_echo "$ac_cv_header_linux_atmsap_h" >&6; } fi if test "x$ac_cv_header_linux_atmsap_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: *** Unable to find linux/atmsap.h!!!" >&5 $as_echo "$as_me: error: *** Unable to find linux/atmsap.h!!!" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking for main in -lresolv" >&5 $as_echo_n "checking for main in -lresolv... " >&6; } if test "${ac_cv_lib_resolv_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lresolv $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_resolv_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_resolv_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_main" >&5 $as_echo "$ac_cv_lib_resolv_main" >&6; } if test "x$ac_cv_lib_resolv_main" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBRESOLV 1 _ACEOF LIBS="-lresolv $LIBS" else { { $as_echo "$as_me:$LINENO: error: *** Unable to find libresolv!!!" >&5 $as_echo "$as_me: error: *** Unable to find libresolv!!!" >&2;} { (exit 1); exit 1; }; } fi LIBS="" INCLUDES="-I\$(top_srcdir)/src/include" CFLAGS="$INCLUDES $CFLAGS -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes" if test "x$cross_compiling" = "xyes"; then { $as_echo "$as_me:$LINENO: checking cc for build" >&5 $as_echo_n "checking cc for build... " >&6; } for ac_prog in gcc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC_FOR_BUILD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC_FOR_BUILD"; then ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC_FOR_BUILD="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD if test -n "$CC_FOR_BUILD"; then { $as_echo "$as_me:$LINENO: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC_FOR_BUILD" && break done { $as_echo "$as_me:$LINENO: result: $CC_FOR_BUILD" >&5 $as_echo "$CC_FOR_BUILD" >&6; } CFLAGS_FOR_BUILD="$INCLUDES $CFLAGS_FOR_BUILD -Wall -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes" else CC_FOR_BUILD="${CC_FOR_BUILD-$CC}" CFLAGS_FOR_BUILD="${CFLAGS_FOR_BUILD-$CFLAGS}" fi YACC="$YACC -d" cat >>confdefs.h <<\_ACEOF #define YY_USE_CONST /**/ _ACEOF atmsigd_conf_dir=` test "x$exec_prefix" = xNONE && exec_prefix=$ac_default_prefix test "x$prefix" = xNONE && prefix=${exec_prefix} eval echo "$sysconfdir"` cat >>confdefs.h <<_ACEOF #define ATMSIGD_CONF "$atmsigd_conf_dir/atmsigd.conf" _ACEOF # Check whether --with-uni was given. if test "${with_uni+set}" = set; then withval=$with_uni; case "$with_uni" in "3.0" ) cat >>confdefs.h <<\_ACEOF #define UNI30 /**/ _ACEOF ;; "3.1" ) cat >>confdefs.h <<\_ACEOF #define UNI31 /**/ _ACEOF ;; "4.0" ) cat >>confdefs.h <<\_ACEOF #define UNI40 /**/ _ACEOF ;; *) cat >>confdefs.h <<\_ACEOF #define DYNAMIC_UNI /**/ _ACEOF { $as_echo "$as_me:$LINENO: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&5 $as_echo "$as_me: WARNING: *** UNI version not specified correctly. Defaulting to dynamic UNI." >&2;} esac else cat >>confdefs.h <<\_ACEOF #define DYNAMIC_UNI 1 _ACEOF fi # Check whether --enable-allow_uni30 was given. if test "${enable_allow_uni30+set}" = set; then enableval=$enable_allow_uni30; if test "$with_uni" = "3.1" ; then cat >>confdefs.h <<\_ACEOF #define ALLOW_UNI30 /**/ _ACEOF else { $as_echo "$as_me:$LINENO: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&5 $as_echo "$as_me: WARNING: *** Allow UNI 3.0 was not enabled. It is only valid when UNI 3.1 is specified as the default via --with-uni." >&2;} fi fi # Check whether --enable-q2963_1 was given. if test "${enable_q2963_1+set}" = set; then enableval=$enable_q2963_1; if test "$with_uni" = "4.0" ; then cat >>confdefs.h <<\_ACEOF #define Q2963_1 /**/ _ACEOF else { $as_echo "$as_me:$LINENO: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&5 $as_echo "$as_me: WARNING: *** Q.2963.1 was not enabled. It is only valid when UNI 4.0 is specified as the default via --with-uni." >&2;} fi fi # Check whether --enable-cisco was given. if test "${enable_cisco+set}" = set; then enableval=$enable_cisco; cat >>confdefs.h <<\_ACEOF #define CISCO /**/ _ACEOF fi # Check whether --enable-thomflex was given. if test "${enable_thomflex+set}" = set; then enableval=$enable_thomflex; cat >>confdefs.h <<\_ACEOF #define THOMFLEX /**/ _ACEOF fi cat >>confdefs.h <<\_ACEOF #define BROKEN_POLL /**/ _ACEOF # Check whether --enable-mpoa_1_1 was given. if test "${enable_mpoa_1_1+set}" = set; then enableval=$enable_mpoa_1_1; cat >>confdefs.h <<\_ACEOF #define MPOA_1_1 /**/ _ACEOF fi # Check whether --enable-mpr was given. if test "${enable_mpr+set}" = set; then enableval=$enable_mpr; case "$enable_mpr" in "" | y | ye | yes | Y | YE | YES ) { $as_echo "$as_me:$LINENO: checking for main in -lmpr" >&5 $as_echo_n "checking for main in -lmpr... " >&6; } if test "${ac_cv_lib_mpr_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpr $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_mpr_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_mpr_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mpr_main" >&5 $as_echo "$ac_cv_lib_mpr_main" >&6; } if test "x$ac_cv_lib_mpr_main" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBMPR 1 _ACEOF LIBS="-lmpr $LIBS" else { $as_echo "$as_me:$LINENO: WARNING: *** Could not find libmpr! Is MPR installed?" >&5 $as_echo "$as_me: WARNING: *** Could not find libmpr! Is MPR installed?" >&2;} fi ;; esac fi # Check whether --with-kernel-headers was given. if test "${with_kernel_headers+set}" = set; then withval=$with_kernel_headers; fi if test "x$with_kernel_headers" != "x"; then CFLAGS="-I$with_kernel_headers/include $CFLAGS" fi pmp_send="" # Check whether --enable-multipoint was given. if test "${enable_multipoint+set}" = set; then enableval=$enable_multipoint; cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include #include int main () { int fd; struct atm_iobuf buf; ioctl(fd, ATM_ADDPARTY, &buf); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then cat >>confdefs.h <<\_ACEOF #define MULTIPOINT /**/ _ACEOF pmp_send="pmp_send" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: WARNING: *** Multipoint signalling was not enabled. Missing kernel support?" >&5 $as_echo "$as_me: WARNING: *** Multipoint signalling was not enabled. Missing kernel support?" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi atmoamd="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include #include int main () { int fd; ioctl(fd, ATMOAMD_CTRL, 0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then atmoamd="atmoamd" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: WARNING: *** atmoamd will not be built. Missing kernel support?" >&5 $as_echo "$as_me: WARNING: *** atmoamd will not be built. Missing kernel support?" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_config_files="$ac_config_files Makefile doc/Makefile src/Makefile src/include/Makefile src/lib/Makefile src/test/Makefile src/debug/Makefile src/qgen/Makefile src/saal/Makefile src/q2931/Makefile src/sigd/Makefile src/maint/Makefile src/arpd/Makefile src/ilmid/Makefile src/ilmid/asn1/Makefile src/man/Makefile src/led/Makefile src/lane/Makefile src/mpoad/Makefile src/oamd/Makefile src/switch/Makefile src/switch/debug/Makefile src/switch/tcp/Makefile src/br2684/Makefile src/config/Makefile src/extra/Makefile src/extra/linux-atm.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/include/Makefile") CONFIG_FILES="$CONFIG_FILES src/include/Makefile" ;; "src/lib/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib/Makefile" ;; "src/test/Makefile") CONFIG_FILES="$CONFIG_FILES src/test/Makefile" ;; "src/debug/Makefile") CONFIG_FILES="$CONFIG_FILES src/debug/Makefile" ;; "src/qgen/Makefile") CONFIG_FILES="$CONFIG_FILES src/qgen/Makefile" ;; "src/saal/Makefile") CONFIG_FILES="$CONFIG_FILES src/saal/Makefile" ;; "src/q2931/Makefile") CONFIG_FILES="$CONFIG_FILES src/q2931/Makefile" ;; "src/sigd/Makefile") CONFIG_FILES="$CONFIG_FILES src/sigd/Makefile" ;; "src/maint/Makefile") CONFIG_FILES="$CONFIG_FILES src/maint/Makefile" ;; "src/arpd/Makefile") CONFIG_FILES="$CONFIG_FILES src/arpd/Makefile" ;; "src/ilmid/Makefile") CONFIG_FILES="$CONFIG_FILES src/ilmid/Makefile" ;; "src/ilmid/asn1/Makefile") CONFIG_FILES="$CONFIG_FILES src/ilmid/asn1/Makefile" ;; "src/man/Makefile") CONFIG_FILES="$CONFIG_FILES src/man/Makefile" ;; "src/led/Makefile") CONFIG_FILES="$CONFIG_FILES src/led/Makefile" ;; "src/lane/Makefile") CONFIG_FILES="$CONFIG_FILES src/lane/Makefile" ;; "src/mpoad/Makefile") CONFIG_FILES="$CONFIG_FILES src/mpoad/Makefile" ;; "src/oamd/Makefile") CONFIG_FILES="$CONFIG_FILES src/oamd/Makefile" ;; "src/switch/Makefile") CONFIG_FILES="$CONFIG_FILES src/switch/Makefile" ;; "src/switch/debug/Makefile") CONFIG_FILES="$CONFIG_FILES src/switch/debug/Makefile" ;; "src/switch/tcp/Makefile") CONFIG_FILES="$CONFIG_FILES src/switch/tcp/Makefile" ;; "src/br2684/Makefile") CONFIG_FILES="$CONFIG_FILES src/br2684/Makefile" ;; "src/config/Makefile") CONFIG_FILES="$CONFIG_FILES src/config/Makefile" ;; "src/extra/Makefile") CONFIG_FILES="$CONFIG_FILES src/extra/Makefile" ;; "src/extra/linux-atm.spec") CONFIG_FILES="$CONFIG_FILES src/extra/linux-atm.spec" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi linux-atm-2.5.1/config.h.in0000644000200100001440000000647411304770373014323 0ustar chasusers/* config.h.in. Generated from configure.in by autoheader. */ /* Allow UNI 3.0 backwards-compatible extensions (if using UNI 3.1) */ #undef ALLOW_UNI30 /* Default config file location for atmsigd */ #undef ATMSIGD_CONF /* Use select() instead of poll() with MPOA */ #undef BROKEN_POLL /* If you're using a Cisco LS100 or LS7010 switch, you should add the following line to work around a bug in their point-to-multipoint signaling (it got confused when receiving a CALL PROCEEDING, so we don't send it, which of course makes our clearing procedure slightly non-conformant): */ #undef CISCO /* The UNI version can be configured at run time. Dynamic is the default. Use the explicit version selections only in case of problems. */ #undef DYNAMIC_UNI /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `mpr' library (-lmpr). */ #undef HAVE_LIBMPR /* Define to 1 if you have the `resolv' library (-lresolv). */ #undef HAVE_LIBRESOLV /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Use proposed MPOA 1.1 features */ #undef MPOA_1_1 /* Point to multipoint signalling support for atmsigd. */ #undef MULTIPOINT /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* If using UNI40, you can also enable peak cell rate modification as specified in Q.2963.1 */ #undef Q2963_1 /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Some versions of the Thomson Thomflex 5000 won't do any signaling before they get a RESTART. Uncomment the next line to enable sending of a RESTART whenever SAAL comes up. Note that the RESTART ACKNOWLEDGE sent in response to the RESTART will yield a warning, because we don't implement the full RESTART state machine. */ #undef THOMFLEX /* */ #undef UNI30 /* Note: some UNI 3.0 switches will show really strange behaviour if confronted with using 3.1 signaling, so be sure to test your network *very* carefully before permanently configuring machines to use UNI 3.1. */ #undef UNI31 /* Some partial support for UNI 4.0 can be enabled by using UNI40 */ #undef UNI40 /* Version number of package */ #undef VERSION /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER /* */ #undef YY_USE_CONST linux-atm-2.5.1/install-sh0000755000200100001440000003253711304770374014304 0ustar chasusers#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: linux-atm-2.5.1/missing0000755000200100001440000002623311304770374013673 0ustar chasusers#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: linux-atm-2.5.1/depcomp0000755000200100001440000004426711304770377013663 0ustar chasusers#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: linux-atm-2.5.1/ylwrap0000755000200100001440000001404311304770377013537 0ustar chasusers#! /bin/sh # ylwrap - wrapper for lex/yacc invocations. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, # 2007, 2009 Free Software Foundation, Inc. # # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . case "$1" in '') echo "$0: No files given. Try \`$0 --help' for more information." 1>&2 exit 1 ;; --basedir) basedir=$2 shift 2 ;; -h|--h*) cat <<\EOF Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... Wrapper for lex/yacc invocations, renaming files as desired. INPUT is the input file OUTPUT is one file PROG generates DESIRED is the file we actually want instead of OUTPUT PROGRAM is program to run ARGS are passed to PROG Any number of OUTPUT,DESIRED pairs may be used. Report bugs to . EOF exit $? ;; -v|--v*) echo "ylwrap $scriptversion" exit $? ;; esac # The input. input="$1" shift case "$input" in [\\/]* | ?:[\\/]*) # Absolute path; do nothing. ;; *) # Relative path. Make it absolute. input="`pwd`/$input" ;; esac pairlist= while test "$#" -ne 0; do if test "$1" = "--"; then shift break fi pairlist="$pairlist $1" shift done # The program to run. prog="$1" shift # Make any relative path in $prog absolute. case "$prog" in [\\/]* | ?:[\\/]*) ;; *[\\/]*) prog="`pwd`/$prog" ;; esac # FIXME: add hostname here for parallel makes that run commands on # other machines. But that might take us over the 14-char limit. dirname=ylwrap$$ trap "cd '`pwd`'; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15 mkdir $dirname || exit 1 cd $dirname case $# in 0) "$prog" "$input" ;; *) "$prog" "$@" "$input" ;; esac ret=$? if test $ret -eq 0; then set X $pairlist shift first=yes # Since DOS filename conventions don't allow two dots, # the DOS version of Bison writes out y_tab.c instead of y.tab.c # and y_tab.h instead of y.tab.h. Test to see if this is the case. y_tab_nodot="no" if test -f y_tab.c || test -f y_tab.h; then y_tab_nodot="yes" fi # The directory holding the input. input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'` # Quote $INPUT_DIR so we can use it in a regexp. # FIXME: really we should care about more than `.' and `\'. input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'` while test "$#" -ne 0; do from="$1" # Handle y_tab.c and y_tab.h output by DOS if test $y_tab_nodot = "yes"; then if test $from = "y.tab.c"; then from="y_tab.c" else if test $from = "y.tab.h"; then from="y_tab.h" fi fi fi if test -f "$from"; then # If $2 is an absolute path name, then just use that, # otherwise prepend `../'. case "$2" in [\\/]* | ?:[\\/]*) target="$2";; *) target="../$2";; esac # We do not want to overwrite a header file if it hasn't # changed. This avoid useless recompilations. However the # parser itself (the first file) should always be updated, # because it is the destination of the .y.c rule in the # Makefile. Divert the output of all other files to a temporary # file so we can compare them to existing versions. if test $first = no; then realtarget="$target" target="tmp-`echo $target | sed s/.*[\\/]//g`" fi # Edit out `#line' or `#' directives. # # We don't want the resulting debug information to point at # an absolute srcdir; it is better for it to just mention the # .y file with no path. # # We want to use the real output file name, not yy.lex.c for # instance. # # We want the include guards to be adjusted too. FROM=`echo "$from" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` TARGET=`echo "$2" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \ -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$? # Check whether header files must be updated. if test $first = no; then if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then echo "$2" is unchanged rm -f "$target" else echo updating "$2" mv -f "$target" "$realtarget" fi fi else # A missing file is only an error for the first file. This # is a blatant hack to let us support using "yacc -d". If -d # is not specified, we don't want an error when the header # file is "missing". if test $first = yes; then ret=1 fi fi shift shift first=no done else ret=$? fi # Remove the directory. cd .. rm -rf $dirname exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: linux-atm-2.5.1/INSTALL0000644000200100001440000002713611304770377013333 0ustar chasusersInstallation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 6. Often, you can also type `make uninstall' to remove the installed files again. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *Note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. linux-atm-2.5.1/config.guess0000755000200100001440000013226411304770377014621 0ustar chasusers#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2009-04-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: linux-atm-2.5.1/config.sub0000755000200100001440000010224011304770377014253 0ustar chasusers#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2009-04-17' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: linux-atm-2.5.1/Makefile.in0000644000200100001440000005451511304770377014350 0ustar chasusers# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ THANKS config.guess config.sub depcomp install-sh ltmain.sh \ missing ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d "$(distdir)" \ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr "$(distdir)"; }; } am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CC_FOR_BUILD = @CC_FOR_BUILD@ CFLAGS = @CFLAGS@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIBVER_AGE = @LIBVER_AGE@ LIBVER_CURRENT = @LIBVER_CURRENT@ LIBVER_REVISION = @LIBVER_REVISION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ atmoamd = @atmoamd@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pmp_send = @pmp_send@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src doc EXTRA_DIST = COPYING.GPL COPYING.LGPL BUGS all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @$(am__cd) '$(distuninstallcheck_dir)' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am rpms: dist src/extra/linux-atm.spec -mkdir -p src/extra/RPMS -mkdir -p src/extra/SRPMS rpmbuild -ba src/extra/linux-atm.spec rpm: rpms @echo -n cscope: cscope -b -R # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: