From: robertc <> Date: Tue, 24 Aug 2004 06:21:08 +0000 (+0000) Subject: merge in cppunit test support. see lib/tests for examples of use X-Git-Tag: SQUID_3_0_PRE4~1069 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa85aa89ff5cf6c07cae814e2346f0dca05baec7;p=thirdparty%2Fsquid.git merge in cppunit test support. see lib/tests for examples of use --- diff --git a/lib/cppunit-1.10.0/AUTHORS b/lib/cppunit-1.10.0/AUTHORS new file mode 100644 index 0000000000..b600073ca1 --- /dev/null +++ b/lib/cppunit-1.10.0/AUTHORS @@ -0,0 +1,6 @@ +Michael Feathers +Jerome Lacoste +E. Sommerlade +Baptiste Lepilleur +Bastiaan Bakker +Steve Robbins diff --git a/lib/cppunit-1.10.0/BUGS b/lib/cppunit-1.10.0/BUGS new file mode 100644 index 0000000000..64fb00f921 --- /dev/null +++ b/lib/cppunit-1.10.0/BUGS @@ -0,0 +1,6 @@ + KNOWN BUGS + ---------- + +The handling of html and man pages in doc/Makefile.am is +flawed. It will not pass "make distcheck". + diff --git a/lib/cppunit-1.10.0/COPYING b/lib/cppunit-1.10.0/COPYING new file mode 100644 index 0000000000..b1e3f5a263 --- /dev/null +++ b/lib/cppunit-1.10.0/COPYING @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 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 Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + 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 Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +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 and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +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 other code 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. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + 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, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser 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 combine 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) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) 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. + + d) 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. + + e) 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 materials to be 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 with +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 Lesser 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + 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! + + diff --git a/lib/cppunit-1.10.0/ChangeLog b/lib/cppunit-1.10.0/ChangeLog new file mode 100644 index 0000000000..ba1221e047 --- /dev/null +++ b/lib/cppunit-1.10.0/ChangeLog @@ -0,0 +1,3277 @@ +2004-06-16 Baptiste Lepilleur + + * release 1.10.0 + + * install-UNIX.txt: added some notes concerning Sun CC 5.5 & AIX. + + * examples/*/*.dsp: fixed project settings (rtti not enabled). + +2004-03-13 Baptiste Lepilleur + + * release 1.9.14 + +2004-03-13 Baptiste Lepilleur + + * cppunit-config.in: bug #903363, missing -ldl from the output of + cppunit-config --libs. Fixed thanks Eric Blossom patch. + + * examples/qt/Main.cpp: + * examples/qt/ExampleTestCase.h: fixed bug #789672: QT example should + use CPPUNIT_NS macro. + + * src/cppunit/UnixDynamicLibraryManager.cpp: applied patch #816563 + from Gareth Sylvester. Adding RTLD_GLOBAL allows test plug-ins + to provide symbols to shared objects they load themselves. + + * examples/cppunittest/TestAssertTest.h: + * examples/cppunittest/TestAssertTest.cpp: + * examples/cppunittest/XmlUniformiserTest.h: + * examples/cppunittest/XmlUniformiserTest.cpp: + * include/cppunit/TestAssert.h: add the exception assertion macros + from cppunit 2: CPPUNIT_ASSERT_THROW, CPPUNIT_ASSERT_NO_THROW, + CPPUNIT_ASSERT_ASSERTION_FAIL, CPPUNIT_ASSERT_ASSERTION_PASS. + Updated unit test to use and test the new macros. + + * include/cppunit/extensions/HelperMacros.h: deprecated the + test case factory that check for exception (CPPUNIT_TEST_FAIL & + CPPUNIT_TEST_EXCEPTION). + + +2004-02-20 Baptiste Lepilleur + + * release 1.9.12 + +2004-02-18 Baptiste Lepilleur + + * configure.in: + * makefile.am: + * config/ax_cxx_gcc_abi_demangle.m4: + * src/cppunit/TypeInfoHelper.cpp: added patch from + Neil Ferguson to use gcc c++ abi to demangle typeinfo + name when available. + +2003-05-15 Baptiste Lepilleur + + * include/cppunit/plugin/testplugin.h: fixed bug #767358, wrong + preprocessor symbol for SHL_LOADER. + +2003-05-15 Baptiste Lepilleur + + * include/cppunit/config/config-msvc6.h: changed the compiler outputter + default format (CPPUNIT_COMPILER_LOCATION_FORMAT) for Visual Studio 7.0. + Assertion now appears in the task list. + +2003-05-07 Baptiste Lepilleur + + * include/cppunit/extensions/Makefile.am: removed TestSuiteBuilder.h + + * Makefile.am + * configure.in + * config/ac_dll.m4 + * examples/cppunittest/Makefile.am + * examples/hierarchy/Makefile.am + * examples/money/Makefile.am + * examples/simple/Makefile.am + * include/cppunit/config/SelectDllLoader.h + * include/cppunit/plugin/TestPlugIn.h + * include/cppunit/tools/Algorithm.h + * src/DllPlugInTester/Makefile.am + * src/cppunit/Makefile.am + * src/cppunit/TestDecorator.cpp + * src/cppunit/ShlDynamicLibraryManager.cpp + * src/cppunit/UnixDynamicLibraryManager.cpp + * src/cppunit/Win32DynamicLibraryManager.cpp: applied patch from + Abdessattar Sassi to add support + for plug-in to hp-ux (patch #721546). + + * INSTALL-unix: added build instruction for HP-UX. + +2003-04-06 Baptiste Lepilleur + + * include/cppunit/extensions/TestSuiteBuilder.h: removed (unused) + +2003-03-31 Baptiste Lepilleur + + * src/cppunit/DynamicLibraryManager.cpp: fixed compilation issue on Mingw + (bug #711583) + +2003-03-20 Baptiste Lepilleur + + * include/cppunit/extensions/TestNamer.h: + * src/cppunit/TestNamer.cpp: Fixed bug #704684, TestNamer has non-virtual + destructor. + +2003-03-15 Baptiste Lepilleur + + * src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.cpp: + * examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp: + * examples/msvc6/HostApp/HostApp.cpp: + * src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp: fixed compatibility + issues with vc7 MFC. + + * include/cppunit/tools/Algorithm.h: + * examples/cppunittest/XmlOutputterTest.cpp: + * examples/cppunittest/XmlUniformiser.*: + * src/cppunit/CompilerOutputter.cpp: + * src/cppunit/ProtectorChain.cpp: + * src/cppunit/StringTools.cpp: + * src/cppunit/TestPath.cpp: + * src/cppunit/TypeInfoHelper.cpp: + * src/cppunit/XmlElement.cpp: + * src/cppunit/XmlOutputter.cpp: + * src/DllPlugInTester/CommandLineParser.h: + * src/msvc6/testrunner/TestRunnerDlg.cpp: switched to using unsigned index in loop to + avoid signed/unsigned warning in vc7. + + * include/cppunit/extension/ExceptionTestCaseDecorator.h: removed dll export + on template (caused link error on vc7). + +2003-03-11 Baptiste Lepilleur + * config/bb_enable_doxygen.m4: + * doc/Makefile.am: applied Luke Dunstan's fix for bug #700730 (spaces not + allowed in doxygen path) + + * src/cppunit/XmlElement.cpp: + * src/examples/cppunittest/XmlUniformser.cpp: fixed bug #676505 (no space + between attributes of XmlElement). + + * include/cppunit/tools/Algorithm.h: + * src/cppunit/TestResult.cpp: + * src/msvc6/testrunner/TestRunnerModel.cpp: added removeFromSequence + algorithm in Algorithm.h to fix STLPort compatibility issue + (std::remove use the one of cstdio instead of algorithm). Bug #694971. + + * src/examples/cppunittest/TrackedTestCase.cpp: + * src/examples/cppunittest/CppUnitTestMain.cpp: + * src/examples/money/Money.h: partially applied patch #699794. Fixed + compilation issues with Borland C++ 6. + +2003-01-23 Baptiste Lepilleur + + * include/cppunit/extensions/TestNamer.h: fixed bug #662666 (missing include + for typeinfo). + +2002-12-12 Baptiste Lepilleur + + * src/cppunit/TestResult.cpp: TestFailure are no longer passed as temporary, + but explicitely instantiated on the stack. Work around AIX compiler bug. + +2002-12-03 Baptiste Lepilleur + + * include/cppunit/TextTestResult.h: added missing dll export for + operator << (bug #610119). + +2002-12-02 Baptiste Lepilleur + + * include/cppunit/plugin/DynamicLibraryManagerException.h: added constructor + to fix compilation issues on recents version of gcc and sun CC (bug #619059) + + * include/cppunit/input/XmlInputHelper.h: added. + + * src/cppunit/XmlOuputter.cpp: use iterator instead of const_iterator. + + * src/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.cpp: added call to + IsUp() in cdxCDynamicWnd::DoOnGetMinMaxInfo() before calling + GetBorderSize() which caused an assertion. Bug #643612. + +2002-09-10 Baptiste Lepilleur + + * include/cppunit/extensions/TestSuiteBuilderContext.h: + * src/cppunit/TestSuiteBuilderContext.cpp: added addProperty() and + getStringProperty(). Added macros CPPUNIT_TEST_SUITE_PROPERTY. + + * src/msvc6/testrunner/TestRunnerDlg.cpp: integrated Tim Threlkeld's + bug fix #610162: browse button was disabled if history was empty. + + * src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.cpp: integrated + Tim Threlkeld's bug fix #610191: common control were not initialized. + + * include/cppunit/extensions/ExceptionTestCaseDecorator.h: bug #603172, + missing Message construction. + + * src/cppunit/DefaultProtector.cpp: bug #603172. Fixed missing ';'. + + * src/cppunit/TestCase.cpp: bug #603671. Removed unguarded typeinfo + include. + + * examples/cppunittests/*Suite.h: bug #603666. Added missing Portability.h + include. + +2002-09-01 Baptiste Lepilleur + + * include/cppunit/ui/text/TextTestRunner.h: fixed header guards. + +2002-08-29 Baptiste Lepilleur + + * include/cppunit/TestResult.h: + * src/cppunit/TestResult.cpp: fixed shouldStop() bug. + +2002-08-29 Baptiste Lepilleur + + * include/cppunit/CompilerOutputter.h: + * include/cppunit/Exception.h: + * include/cppunit/Protector.h: + * include/cppunit/TestListener.h: + * include/cppunit/TestPath.h: + * include/cppunit/TestResult.h: + * include/cppunit/TestRunner.h: + * include/cppunit/XmlOutputter.h: + * include/cppunit/plugin/DynamicLibraryManager.h: + * include/cppunit/plugin/PlugInManager.h: + * include/cppunit/plugin/PlugInParameters.h: + * include/cppunit/TestPlugIn.h: + * src/cppunit/DefaultProtector.h: + * src/cppunit/ProtectorChain.h: + * src/cppunit/ProtectorContext.h: + * src/cppunit/TestCase.cpp: + * src/cppunit/TestResult.cpp: fixed a dew documentation bugs. + + * include/cppunit/TestResult.h: + * src/cppunit/TestResult.cpp: moved documentation to header. + +2002-08-29 Baptiste Lepilleur + + * include/cppunit/Asserter.h: + * include/cppunit/Message.h: + * include/cppunit/extensions/TestNamer.h: + * include/cppunit/extensions/TestSuiteBuilder.h: + * include/cppunit/tools/XmlDocument.h: + * include/cppunit/tools/XmlElement.h: Fixed a few documentation bugs. + +2002-08-28 Baptiste Lepilleur + + * include/cppunit/Portability.h: added CPPUNIT_STATIC_CAST. + + * include/cppunit/extensions/TestFixtureFactory.h: extracted from + HelperMacros.h. Added template class ConcretTestFixtureFactory. + + * include/cppunit/extensions/TestSuiteBuilderContext.h: + * src/cppunit/TestSuiteBuilderContext.cpp: added. Context used + to add test case to the fixture suite. Prevent future + compatibility break for custom test API. + + * include/cppunit/extensions/HelperMacros.h: mostly rewritten. No + longer use TestSuiteBuilder. Added support for abstract test fixture + through macro CPPUNIT_TEST_SUITE_END_ABSTRACT. Made custom test API + easier to use. + + * examples/cppunittest/HelperMacrosTest.h: + * examples/cppunittest/HelperMacrosTest.cpp: updated against + HelperMacros.h changes. + +2002-08-27 Baptiste Lepilleur + + * CodingGuideLines.txt: updated for OS/390 C++ limitation. + + * examples/cppunittests/MockFunctor.h: added. Mock Functor to help + testing. + + * examples/cppunittests/MockProtector.h: qdded. Mock Protector to help + testing. + + * examples/cppunittests/TestResultTest.h + * examples/cppunittests/TestResultTest.cpp: added tests for + pushProtector(), popProtector() and protect(). + + * include/cppunit/TestAssert.h: removed default message value from + assertEquals(). Caused compilation error on OS/390. + + * include/cppunit/plugin/PlugInParameters.h: + * src/cppunit/PlugInParameters.cpp: renamed commandLine() to + getCommandLine(). + + * src/msvc6/testrunner/TestRunnerDlg.h: + * src/msvc6/testrunner/TestRunnerDlg.cpp: bug fix, disabled Browse + button while running tests. + +2002-08-22 Steve M. Robbins + + * cppunit.m4: Doc fix: MINIMUM-VERSION is not optional when using + this macro. + +2002-08-04 Baptiste Lepilleur + + * src/cppunit/XmlDocument.cpp: fixed compatility bug with C++ builder. + + * include/cppunit/plugin/Parameters.h: renamed PlugInParameters.h. + + * src/cppunit/PlugInParameter.cpp: added. Implementation of class + PlugInParameters. + + * examples/DumperPlugIn/DumperPlugIn.cpp: + * examples/ClockerPlugIn/ClockerPlugIn.cpp: + * src/DllPlugInTester/CommandLineParser.h: + * src/DllPlugInTester/CommandLineParser.cpp: + * include/cppunit/plugin/TestPlugInDefaultImpl.h: + * src/cppunit/TestPlugInDefaultImpl.cpp: + * include/cppunit/plugin/PlugInManager.h: + * src/cppunit/PlugInManager.cpp: updated against PlugInParameter + change. + +2002-08-03 Baptiste Lepilleur + + * include/cppunit/XmlOutputterHook.h: integrated Stephan Stapel + documentation update. + +2002-08-03 Baptiste Lepilleur + + * include/cppunit/Exception.h: + * src/cppunit/Exception.h: added setMessage(). + + * include/cppunit/Protector.h: + * src/cppunit/Protector.cpp: added class ProtectorGuard. Change the + reportXXX() method to support Exception passing and SourceLine. + + * include/cppunit/TestCaller.h: removed 'expect exception' features. + It is now handled by ExceptionTestCaseDecorator and TestCaller no + longer need default template argument support. + + * include/cppunit/TestCase.h: + * include/cppunit/extensions/TestCaller.h: runTest() is now public + instead of protected, so that it can be decorated. + + * include/cppunit/TestResult.h: + * src/cppunit/TestResult.h: added pushProtector() and popProtector() + methods. This allow user to specify their own exception trap when + running test case. + + * include/cppunit/extensions/TestDecorator.h: + * src/cppunit/TestDecorator.cpp: added. Extracted from TestDecorator.h. + The test passed to the constructor is now owned by the decorator. + + * include/cppunit/extensions/TestCaseDecorator.h: + * src/cppunit/TestCaseDecorator.cpp: added. Decorator for TestCase + setUp(), tearDown() and runTest(). + + * include/cppunit/extensions/ExceptionTestCaseDecorator.h: added. + TestCaseDecorator to expect that a specific exception is thrown. + + * include/cppunit/extensions/HelperMacros.h: updated against TestCaller + change. + + * src/cppunit/DefaultFunctor.h: fixed bug (did not return underlying + test return code). + + * src/cppunit/ProtectorChain.cpp: fixed bug in chaing return code. + + * src/cppunit/DefaultFunctor.h: fixed bug. + + * src/msvc6/testrunner/ActiveTest.h: + * src/msvc6/testrunner/ActiveTest.cpp: updated against + TestCaseDecorator ownership policy change. Moved inline functions + to .cpp. + + * examples/cppunittest/TestSetUpTest.cpp: updated to use MockTestCase + and against the new ownership policy. + + * examples/cppunittest/TestDecoratorTest.cpp: + * examples/cppunittest/RepeatedTestTest.cpp: updated against + TestDecorator ownership policy change. + + * examples/cppunittest/ExceptionTestCaseDecoratorTest.h: + * examples/cppunittest/ExceptionTestCaseDecoratorTest.cpp: added. Unit + tests for ExceptionTestCaseDecoratorTest. + +2002-07-16 Baptiste Lepilleur + + * include/cppunit/Protector.h: + * src/cppunit/Protector.cpp: added. Base class for protectors. + + * src/cppunit/DefaultProtector.h: + * src/cppunit/DefaultProtector.cpp: added. Implementation of the default + protector used to catch std::exception and any other exception. + + * src/cppunit/ProtectorChain.h: + * src/cppunit/ProtectorChain.cpp: added. Implementation of a chain of + protector, allowing catching custom exception and implementation of + expected exception. + + * src/cppunit/TestCase.cpp: + * src/cppunit/TestResult.cpp: updated to use protector. + +2002-07-14 Baptiste Lepilleur + + * CodingGuideLines.txt: added. CppUnit's coding guidelines for portability. + + * include/cppunit/portability/CppUnitStack.h: added. wrapper for std::stack. + + * include/cppunit/portability/CppUnitSet.h: added. wrapper for std::set. + + * include/cppunit/ui/text/TestRunner.h: fixed namespace definition for + deprecated TestRunner. + + * include/cppunit/TestAssert.h: + * src/cppunit/TestAssert.cpp: removed old deprecated functions that did + not use SourceLine. Moved assertEquals() and assertDoubleEquals() into + CppUnit namespace. + + * src/cppunit/TestFactoryRegistry.cpp: use CppUnitMap instead of std::map. + + * src/DllPlugInTester/CommandLineParser.h: use CppUnitDeque instead + std::deque. + + * examples/cppunittest/*.h: + * examples/cppunittest/*.cpp: removed all usage of CppUnitTest namespace. + Everything is now in global space. + + * examples/*/*.h: + * examples/*/*.cpp: replaced usage of CppUnit:: with CPPUNIT_NS::. + + * examples/ClockerPlugIn/ClockerModel.h: use CppUnit STL wrapper instead + of STL container. + +2002-07-13 Baptiste Lepilleur + + * include/cppunit/ui/text/TestRunner.h: + * src/cppunit/TextTestRunner.cpp: Renamed TextUi::TestRunner + TextTestRunner and moved it to the CppUnit namespace. Added + a deprecated typedef for compatibility with previous version. + + * include/cppunit/ui/text/TextTestRunner.h: added. + + * include/cppunit/ui/mfc/TestRunner.h: + * src/cppunit/msvc6/testrunner/TestRunner.cpp: Renamed MfcUi::TestRunner + MfcTestRunner. Added deprecated typedef for compatibility. Renamed + TestRunner.cpp to MfcTestRunner.cpp. + + * include/cppunit/ui/mfc/MfcTestRunner.h: added. + + * include/cppunit/ui/qt/TestRunner.h: + * src/qttestrunner/TestRunner.cpp: renamed QtUi::TestRunner QtTestRunner + and moved it to CppUnit namespace. Added a deprecated typedef for + compatibility. Renamed TestRunner.cpp to QtTestRunner.cpp. + + * include/cppunit/ui/qt/TestRunner.h: + * src/qttestrunner/TestRunner.h: Moved TestRunner to CppUnit namespace + and renamed it QtTestRunner. Added deprecated typedef for compatibility. + + * include/cppunit/Asserter.h: + * src/cppunit/Asserter.cpp: changed namespace Asserter to a struct and + made all methods static. + + * include/cppunit/extensions/HelperMacros.h: + * include/cppunit/extensions/SourceLine.h: + * include/cppunit/extensions/TestAssert.h: + * include/cppunit/extensions/TestPlugIn.h: + * include/cppunit/Portability.h: changed CPPUNIT_NS(symbol) to a + symbol macro that expand either to CppUnit or nothing. The symbol is + no longer a parameter. + + * include/cppunit/portability/CppUnitVector.h: + * include/cppunit/portability/CppUnitDeque.h: + * include/cppunit/portability/CppUnitMap.h: added. STL Wrapper for + compilers that do not support template default argumenent and need + the allocator to be passed when instantiating STL container. + + * examples/cppunittest/*.h: + * examples/cppunittest/*.cpp: + * src/msvc6/testrunner/*.h: + * src/msvc6/testrunner/*.cpp: + * src/msvc6/testpluginrunner/*.h: + * src/msvc6/testpluginrunner/*.cpp: + * src/qttestrunner/*.h: + * src/qttestrunner/*.cpp: replaced occurence of CppUnit:: by CPPUNIT_NS. + + * src/cppunit/TestSuite.h: + replaced occurence of std::vector by CppUnitVector. + +2002-07-12 Baptiste Lepilleur + + * include/cppunit/config/Portability.h: If the compiler does not support + namespace (CPPUNIT_HAVE_NAMESPACES=0), define CPPUNIT_NO_STD_NAMESPACE + and CPPUNIT_NO_NAMESPACE. If CPPUNIT_NO_STD_NAMESPACE is defined, then + CppUnit assumes that STL are in the global namespace. If + CPPUNIT_NO_NAMESPACE is defined, then CppUnit classes are placed in the + global namespace instead of the CppUnit namespace. + + * include/cppunit/config/config-bcb5.h: + * include/cppunit/config/config-msvc6.h: added definition of macro + CPPUNIT_HAVE_NAMESPACES. + + * include/cppunit/tools/StringTools.h: use CPPUNIT_WRAP_COLUMN as default + parameter value for wrap(). + + * include/cppunit/*/*.h: + * src/cppunit/*.cpp: changed all CppUnit namespace declaration to use + macros CPPUNIT_NS_BEGIN and CPPUNIT_NS_END. Also, changed reference + to CppUnit namespace (essentially in macros) using CPPUNIT_NS macro. + + * doc/doxyfile.in: + * doc/CppUnit-Win.dox: updated doxygen configuration files so that + CPPUNIT_NS_BEGIN and CPPUNIT_NS_END macros are expanded. This help + generates the documentation using the CppUnit namespace. + +2002-07-11 Baptiste Lepilleur + + * include/cppunit/Portability.h: added macro CPPUNIT_CONST_CAST. + + * src/cppunit/Exception.cpp: + * src/cppunit/Test.cpp: + * examples/cppunittest/MockTestCase.cpp: replaced usage of const_cast with + CPPUNIT_CONST_CAST. + + * include/cppunit/Test.h: + * src/cppunit/Test.cpp: made findTestPath(), findTest() and resolvePath() + const methods. + +2002-07-10 Baptiste Lepilleur + + * include/cppunit/extensions/AutoRegisterSuite.h: + * include/cppunit/extensions/Orthodox.h: + * include/cppunit/extensions/TestSuiteBuilder.h: + * include/cppunit/extensions/TestSuiteFactory.h: + * include/cppunit/TestCaller.h: + * examples/hierarchy/BoardGameTest.h: + * examples/hierarchy/ChessTest.h: replaced usage of 'typename' in template + declaration with 'class'. + + * include/cppunit/ui/text/TestRunner.h: + * src/cppunit/TextTestRunner.cpp: updated to use the generic TestRunner. + Removed methods runTestByName() and runTest(). Inherits + CppUnit::TestRunner. + + * include/cppunit/extensions/TestSuiteBuilder.h: removed templatized method + addTestCallerForException(). It is no longer used since release 1.9.8. + + * examples/cppunittest/MockTestCase.h + * examples/cppunittest/MockTestCase.cpp: removed the usage of 'mutable' + keyword. + +2002-07-04 Baptiste Lepilleur + + * src/msvc6/DSPlugIn/DSPlugIn.dsp: updated so that only the release + configuration get copied to the lib/ directory. + +2002-07-03 Baptiste Lepilleur + + * include/cppunit/XmlOutputter.h: fixed XmlOutputter constructed default + value initializatino which caused compilation error with BC5. + + * src/cppunit/PlugInManager.cpp: added missing CPPUNIT_NO_TESTPLUGIN guard. + + * src/msvc6/testrunner/TestRunner.dsp: + * src/msvc6/testrunner/TestRunner.rc: + * src/msvc6/testrunner/TestRunnerDlg.cpp: + * src/msvc6/testrunner/TestRunnerDlg.h: + * src/msvc6/testrunner/TreeHierarchyDlg.cpp: + * src/msvc6/testrunner/TreeHierarchyDlg.h: + * src/msvc6/testpluginrunner/TestPlugInRunner.dsp: + * src/msvc6/testpluginrunner/TestPlugInRunner.rc: + * src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp: + * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp: + * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h: applied Steven Mitter + patch to fix bug #530426 (conflict between TestRunner and host + application's resources). Adapted patch to compile work with Unicode. + + * src/msvc6/testrunner/ResourceLoaders.h: + * src/msvc6/testrunner/ResourceLoaders.cpp: + * src/msvc6/testrunner/Change-Diary-ResourceBugFix.txt: added, from + Steven Mitter's patch. Simplified loadCString() to compile with Unicode. + + * src/cppunit/cppunit.dsp: + * src/cppunit/cppunit_dll.dsp: + * src/DllPlugInTester/DllPlugInTester.dsp: + * src/msvc6/testrunner/TestRunner.dsp: + * src/msvc6/testpluginrunner/TestPlugInRunner.dsp: all lib, dll and exe are + now created in the intermediate directory. A post-build rule is used to + copy them to the lib/ directory. + +2002-06-17 Baptiste Lepilleur + + * include/cppunit/AdditionalMessage.h: + * src/cppunit/AdditionalMessage.cpp: added. Class to help passing + additional message parameter. + + * include/cppunit/Asserter.h: added makeExpected(), makeActual() and + makeNotEqualMessage(). Removed methods made unnecessary by the + use of AdditionalMessage. + + * include/cppunit/Portability.h: added CPPUNIT_WRAP_COLUMN to define + CppUnit default wrap column. + + * src/cppunit/CompilerOutputter.cpp: use CPPUNIT_WRAP_COLUMN instead + of hard-coded value. + +2002-06-16 Baptiste Lepilleur + + * bumped version to 1.9.9 + + * release 1.9.8 + + * include/cppunit/plugin/TestPlugIn.h: updated documentation. + + * include/cppunit/tools/XmlDocument.h: updated documentation. + + * include/cppunit/tools/StringTools.h: + * src/cppunit/StringTools.cpp: added split() and wrap() functions. + + * include/cppunit/CompilerOutputter.h: + * src/cppunit/CompilerOutputter.cpp: extracted wrap() and + splitMessageIntoLines() to StringTools. + + * include/cppunit/XmlOutputterHook.h: + * src/cppunit/XmlOutputterHook.cpp: removed rooNode parameter from + beginDocument() and endDocument(). It can be retreive from document. + Renamed 'node' occurences to 'element'. + + * include/cppunit/XmlOutputter.h: + * src/cppunit/XmlOutputter.cpp: updated against + XmlOutputterHook changes. Renamed 'node' occurences to 'element'. + + * src/cppunit/Message.cpp: + * src/cppunit/XmlElement.cpp: added missing include + + * examples/ClockerPlugIn/ClockerXmlHook.h: + * examples/ClockerPlugIn/ClockerXmlHook.cpp: updated against + XmlOutputterHook changes. + + * examples/cppunittest/MessageTest.cpp: removed std::string() from + assertion. Somehow gcc can't parse it. Added missing include . + + * examples/cppunittest/XmlElement.cpp: added missing include . + + * examples/cppunittest/XmlElementTest.h: + * examples/cppunittest/XmlElementTest.cpp: Renamed 'node' occurences + to 'element'. + + * examples/cppunittest/XmlOutputterTest.cpp: updated against + XmlOutputterHook changes. + + * examples/cppunittest/StringToolsTest.h: + * examples/cppunittest/StringToolsTest.cpp: added. Unit tests for + StringTools. Turn out that VC++ dismiss empty lines in tools output, + which is the reason why empty lines where not printed in + CompilerOutputter. + +2002-06-14 Baptiste Lepilleur + + * include/cppunit/plugin/PlugInManager.h: + * src/cppunit/PlugInManager.cpp: added two methods to use the plug-in + interface for Xml Outputter hooks. + + * include/cppunit/plugin/TestPlugIn.h: added two methods to the plug-in + interface for Xml Outputter hooks. + + * include/cppunit/plugin/TestPlugInAdapter.h: + * src/cppunit/plugin/TestPlugInAdapter.cpp: renamed TestPlugInDefaultImpl. + Added empty implementation for Xml outputter hook methods. + + * include/cppunit/tools/StringTools.h: + * src/cppunit/tools/StringTools.cpp: added. Functions to manipulate string + (conversion, wrapping...) + + * include/cppunit/tools/XmlElement.h: + * src/cppunit/XmlElement.cpp: renamed addNode() to addElement(). Added + methods to walk and modify XmlElement (for hook). Added documentation. + Use StringTools. + + * include/cppunit/XmlOutputter.h: + * src/cppunit/XmlOutputter.cpp: added hook calls & management. + + * include/cppunit/XmlOutputterHook.h: + * src/cppunit/XmlOutputterHook.cpp: added. Hook to customize XML output. + + * src/DllPlugInTester/DllPlugInTester.cpp: call plug-in XmlOutputterHook + when writing XML output. Modified so that memory is freed before + unloading the test plug-in (caused crash when freeing the XmlDocument). + + * examples/ReadMe.txt: + * examples/ClockerPlugIn/ReadMe.txt: added details about the plug-in + (usage, xml content...) + + * examples/ClockerPlugIn/ClockerModel.h: + * examples/ClockerPlugIn/ClockerModel.cpp: extracted from ClockerListener. + Represents the test hierarchy and tracked time for each test. + + * examples/ClockerPlugIn/ClockerListener.h: + * examples/ClockerPlugIn/ClockerListener.cpp: extracted test hierarchy + tracking to ClockerModel. Replaced the 'flat' view option with a 'text' + option to print the timed test tree to stdout. + + * examples/ClockerPlugIn/ClockerPlugIn.cpp: updated to hook the XML + output and use the new classes. + + * examples/ClockerPlugIn/ClockerXmlHook.h: + * examples/ClockerPlugIn/ClockerXmlHook.cpp: added. XmlOutputterHook to + includes the timed test hierarchy and test timing in the XML output. + + * examples/cppunittest/XmlElementTest.h: + * examples/cppunittest/XmlElementTest.cpp: added new test cases. + + * examples/cppunittest/XmlOutputterTest.h: + * examples/cppunittest/XmlOutputterTest.cpp: added tests for + XmlOutputterHook. + +2002-06-14 Baptiste Lepilleur + + * src/cppunit/TypeInfoHelper.cpp: added work around for bug #565481. + gcc 3.0 RTTI name() returns the type prefixed with a number (the + length of the type). The work around strip the number. + + * src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp: registry key is now + set. Allow to save settings. + + * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h: + * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp: added layout + initialization for resizing. + + * src/msvc6/testpluginrunner/TestPlugRunner.rc: + * src/msvc6/testpluginrunner/TestPlugInRunner.dsp: added TestRunner + project files. Somehow I can't get cdxCDynamicDialog to compile + as a MFC extension. Included all sources files and resources + as a very dirt work around. + + * src/msvc6/testrunner/TestRunnerDlg.h: + * src/msvc6/testrunner/TestRunnerDlg.cpp: + * src/msvc6/testrunner/TestRunnerModel.h: those classes are no longer + exported in the MFC extension. See TestPlugInRunner issue with + cdxCDynamicDialog. + + * include/cppunit/Message.h: + * include/cppunit/TestPath.h: + * include/cppunit/TestResult.h: + * include/cppunit/TestResultCollector.h: + * include/cppunit/TestSuite.h: + * include/cppunit/TestFactoryRegistry.h: + * include/cppunit/XmlElement.h: + * include/cppunit/TypeInfoHelper.h: commented out STL template export + in DLL. This caused conflicts when instantiting the same template in + a user project. + +2002-06-14 Baptiste Lepilleur + + * src/cppunit/CompilerOutputter.cpp: fixed bug #549762 (line wrap). + + * src/msvc6/testrunner/DynamicWindow/*: added. Dynamic Window library + from Hans Bühler (hans.buehler@topmail.de) to resize window. + + * src/msvc6/testrunner/TestRunnerModel.h: + * src/msvc6/testrunner/TestRunnerModel.cpp: removed dialog bounds from + settings. Added public registry keys for cppunit, main dialog, and + browse dialog. + + * src/msvc6/testrunner/TreeHierarchyDlg.h: + * src/msvc6/testrunner/TreeHierarchyDlg.cpp: dialog is now resizable. + Window placement is stored and restored. + + * src/msvc6/testrunner/TestRunnerDlg.h: + * src/msvc6/testrunner/TestRunnerDlg.cpp: replaced dialog resizing code + by usage of Hans Bühler's Dynamic Window library. Dialog placement + is stored/restored by that library. ProgressBar is now a child window. + Added edit field to see the details of the failure. List on show + the short description of the failure. + + * src/msvc6/testrunner/ProgressBar.h: + * src/msvc6/testrunner/ProgressBar.cpp: is now a CWnd. + + * src/msvc6/testrunner/TestRunner.rc: named all static fill ID for resizing. + Added an invisble static field for progress bar placement. + +2002-06-13 Baptiste Lepilleur + + * doc/other_documentation.dox: fixed some typos. + + * include/cppunit/NotEqualException.h: + * src/cppunit/NotEqualException.cpp: removed. + + * include/cppunit/Exception.h: + * src/cppunit/Exception.cpp: removed 'type' related stuffs. + + * include/cppunit/TextTestResult.h: + * src/cppunit/TextTestResult.cpp: delegate printing to TextOutputter. + + * examples/simple/ExampleTestCase.h: + * examples/simple/ExampleTestCase.cpp: reindented. + + * src/qttestrunner/build: + * src/qttestrunner/qttestrunner.pro: + * src/qttestrunner/TestBrowserDlgImpl.h: + * src/qttestrunner/TestRunnerModel.h: applied Thomas Neidhart's patch, + 'Some minor fixes to compile QTTestrunner under Linux.'. + +2002-06-13 Baptiste Lepilleur + + * include/cppunit/Asserter.h: + * src/cppunit/Asserter.cpp: added functions that take a Message as a + parameter. Existing function have a short description indicating + an assertion failure. + + * include/cppunit/CompilerOuputter.h: + * src/cppunit/CompilerOuputter.cpp: removed printNotEqualMessage() and + printDefaultMessage(). Updated to use Message. + + * include/cppunit/Message.h: + * src/cppunit/Message.cpp: added. Represents a message associated to an + Exception. + + * include/cppunit/Exception.h: + * src/cppunit/Exception.cpp: the message associated to the exception is now + stored as a Message instead of a string. + + * include/cppunit/NotEqualException.cpp: constructs a Message instead of a + string. + + * include/cppunit/TestAssert.h: + * src/cppunit/TestAssert.cpp: updated to use Asserter functions that + take a message when pertinent (CPPUNIT_FAIL...). + + * include/cppunit/TestCaller.h: + * src/cppunit/TestCaller.cpp: exception not caught failure has a better + short description. + + * src/cppunit/TestCase.cpp: better short description when setUp() or + tearDown() fail. + + * src/msvc6/testrunner/TestRunnerDlg.cpp: replace '/n' in failure message + with space. + + * examples/cppunittest/ExceptionTest.cpp: + * examples/cppunittest/NotEqualExceptionTest.cpp: + * examples/cppunittest/TestCallerTest.cpp: + * examples/cppunittest/TestFailureTest.cpp: + * examples/cppunittest/TestResultCollectorTest.h: + * examples/cppunittest/TestResultCollectorTest.cpp: + * examples/cppunittest/TestResultTest.cpp: + * examples/cppunittest/XmlOutputterTest.h: + * examples/cppunittest/XmlOutputterTest.cpp: updated to use Exception/Message. + + * examples/cppunittest/MessageTest.h: + * examples/cppunittest/MessageTest.cpp: added. Unit test for Message. + +2002-06-11 Baptiste Lepilleur + + * install-unix: added some hints extracted from bug #544684 on how to compile + for Solaris/Forte C++ compiler. + + * TODO: cleaned-up and added new things. + + * include/cppunit/extensions/HelperMacros.h: CPPUNIT_TEST_SUITE now declares + a class named ThisTestFixtureFactory which is a wrapper for the fixture + factory. This removes the need to cast the fixture to the correct type when + using the factory. Updated other macros implementation to use this new + factory. Modified CPPUNIT_TEST_CUSTOM(S) macros to use this new factory + class. Added macro CPPUNIT_TEST_ADD to help create new macros like + CPPUNIT_TEST_xxx. + + * examples/cppunittest/HelperMacrosTest.h: + * examples/cppunittest/HelperMacrosTest.cpp: added unit tests for + CPPUNIT_TEST_CUSTOM, CPPUNIT_TEST_CUSTOMS and CPPUNIT_TEST_ADD. + +2002-06-01 Baptiste Lepilleur + + * doc/cookbook.dox: fixed bug. + + * install-unix: added compilation instruction for Solaris/Sun 6.0 + +2002-05-25 Baptiste Lepilleur + + * include/cppunit/extensions/TestSuiteBuilder.h: updated to use TestNamer. Removed + template method addTestCallerForException() which should solve the compilation + issue with Sun 5.0/6.0 compiler. + + * include/cppunit/extensions/HelperMacros.h: updated against TestSuiteBuilder + change. Added CPPUNIT_TEST_CUSTOM and CPPUNIT_TEST_CUSTOMS to add custom + tests to the fixture suite. + + * include/cppunit/extensions/TestNamer.h: + * src/cppunit/TestNamer.cpp: added, TestNamer to name test case and fixture. + +2002-05-23 Baptiste Lepilleur + + * include/cppunit/XmlOutputter.h: + * src/cppunit/XmlOutputter.cpp: extracted class XmlOutputter::Node to + XmlElement. Extracted xml 'prolog' generation to XmlDocument. + + * include/cppunit/tools/XmlElement.h: + * src/cppunit/tools/XmlElement.cpp: added, extracted from XmlOutputter::Node. + + * include/cppunit/tools/XmlDocument.h: + * src/cppunit/tools/XmlDocument.cpp: added, extracted from XmlOutputter. Handle + XML document prolog (encoding & style-sheet) and manage the root element. + + * src/DllPlugInTester/DllPlugInTester.cpp: bug fix, flag --xsl was ignored. + + * examples/cppunittest/XmlOutputterTest.h: + * examples/cppunittest/XmlOutputterTest.cpp: updated for XmlOuputter changes. + extracted tests for XmlOutputter::Node to XmlElementTest + + * examples/cppunittest/XmlElementTest.h: + * examples/cppunittest/XmlElementTest.cpp: added, tests extracted from + XmlOutputterTest. + +2002-05-21 Baptiste Lepilleur + + * src/msvc6/testrunner/MsDevCallerListCtrl.h: + * src/msvc6/testrunner/MsDevCallerListCtrl.cpp: + * src/msvc6/testrunner/Resource.h: + * src/msvc6/testrunner/TestRunner.rc: + * src/msvc6/testrunner/TestRunnerDlg.cpp: + * src/msvc6/testrunner/TestRunnerModel.h: + * src/msvc6/testpluginrunner/TestPlugInRunner.rc: + * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp: + * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h: + * src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp: integrated patch from + Marco Welti (Welti@GretagMacbeth.ch) with a few clean up. + Display the name of the test being run during above the progress bar. Allow the + VC++ add-ins to works with TestPlugInRunner (COM init). DLL name can be specified + on the command line after flag '-testsuite'. Display wait cursor, clear and reload + history when reloading DLL. + + * THANKS: added Marco Welti to the list. + +2002-05-07 Baptiste Lepilleur + + * src/DllPlugInTester/CommandLineParser.cpp: fixed compilation issue. + + * src/msvc6/TestRunner/ActiveTest.h: + * src/msvc6/TestRunner/ActiveTest.cpp: reindented. bugfix: thread + handle resource leak (bug #553424). + +2002-04-25 Baptiste Lepilleur + + * src/cppunit/XmlOutputter.cpp: bugfix, use ISO-8859-1 encoding if an + empty string is given. + + * src/DllPlugInTester/CommandLineParser.h: + * src/DllPlugInTester/CommandLineParser.cpp: + * src/DllPlugInTester/DllPlugInTester.cpp: added option -w to wait for + the user to press a key before exiting (Philippe Lavoie patch, + with change). + +2002-04-22 Baptiste Lepilleur + + * include/cppunit/plugin/DynamicLibraryManagerException.h: removed + trailing ',' in enum. + + * examples/ClockerPlugIn/ClockerListener.cpp: bugfix, average test + case time computation. + +2002-04-21 Baptiste Lepilleur + + * bumped version to 1.9.7 + + * comitted stuffs I forgot to in 1.9.6. + +2002-04-21 Baptiste Lepilleur + + * contrib/bc5/bcc-makefile.zip: updated, generic makefile for + Borland 5.5, contributed by project cuppa. + + * examples/cppunittest/*Suite.h: integrated Jeffrey Morgan's patch, + to remove warning with gcc. + + * release 1.9.6 + +2002-04-21 Baptiste Lepilleur + + * src/DllPlugInTester/makefile.am: removed ld.so from LDADD flags. + + * src/DllPlugInTester/CommandLineParser.h: + * src/DllPlugInTester/CommandLineParser.cpp: rewrote, fixed problem + with double quotes in command line... + + * src/DllPlugInTester/CommandLineParserTest.h: + * src/DllPlugInTester/CommandLineParserTest.cpp: + * src/DllPlugInTester/DllPlugInTesterTest.cpp: added, unit tests for + CommandLineParser. + + * src/msvc6/TestPlugIn/*: removed. + + * examples/Money/*: added. New 'hello world' example. + + * doc/Money.dox: added. Article that go along with the Money example. + +2002-04-21 Baptiste Lepilleur + + * THANKS: updated + + * src/cppunit/DynamicLibraryManager.cpp: bugfix: did not pass + library name to exception. + + * include/cppunit/TestPath.h: + * src/cppunit/TestPath.cpp: changed into value object. + + * src/cppunit/BeosDynamicLibraryManager.cpp: integrated patch from + Shibu Yoshiki for BeOS ('cuppa' project team). + + * src/DllPlugInTester/CommandLineParser.h: + * src/DllPlugInTester/CommandLineParser.cpp: added. Command line + parsing. + + * src/DllPlugInTester/DllPlugInTester.cpp: full command line support + with parameters for plug-ins. + + * src/DllPlugInTester/makefile.am: + * examples/simple/makefile.am: + * examples/cppunittest/makefile.am: integrated Jeffrey Morgan's patch, + Unix side should be working again. + + * examples/ReadMe.txt: added. Brief description of each example. + + * examples/cppunittest/CppUnitTestPlugIn.cpp: + * examples/cppunittest/CppUnitTestPlugIn.dsp: added. New project to + build CppUnit's test suite as a test plug-in. + + * examples/cppunittest/CppUnitTestSuite.cpp: updated. Use new + helper macros to create the test suite hierarchy. + + * examples/simple/simple_plugin.opt: added. Contains debug tab + settings. + + * examples/ClockerPlugIn/ClockerListener.cpp: + * examples/ClockerPlugIn/ClockerListener.h: + * examples/ClockerPlugIn/Timer.cpp: + * examples/ClockerPlugIn/Timer.h: + * examples/ClockerPlugIn/WinNtTimer.cpp: + * examples/ClockerPlugIn/WinNtTimer.h: + * examples/ClockerPlugIn/ClockerPlugIn.cpp: + * examples/ClockerPlugIn/ClockerPlugIn.dsp: added. test listener + plug-in that times tests. + + * examples/DumperPlugIn/DumperListener.cpp: + * examples/DumperPlugIn/DumperListener.h: + * examples/DumperPlugIn/DumperPlugIn.cpp: + * examples/DumperPlugIn/DumperPlugIn.dsp: added. test listener + plug-in that dump the test tree. + + +2002-04-19 Baptiste Lepilleur + + * src/cppunit/PlugInManager.cpp: fixed bug in unload(). + + * include/cppunit/TypeInfoHelper.h: + * src/cppunit/TypeInfoHelper.cpp: Implementation is now always available + is CPPUNIT_HAVE_RTTI is not 0. This removes the need to use + different libraries. CPPUNIT_USE_TYPEINFO_NAME can be set on a + case by case basis for HelperMacros. + + * src/cppunit/TestFactoryRegistry.cpp: removed unused include of + TypeInfoHelper.h. + + * include/cppunit/TextTestProgressListener.h: + * src/cppunit/TextTestProgressListener.cpp: used endTest() instead + of done() to finalize. + + * src/msvc6/TestPlugInRunner/TestPlugIn.h: + * src/msvc6/TestPlugInRunner/TestPlugIn.cpp: updated to use the + new test plug-in system. + + * examples/simple/SimplePlugIn.cpp: + * examples/simple/simple_plugin.dsp: crossplatform test plug-in + example using 'simple'. + + * examples/msvc6/EasyTestPlugIn/*: projects replaced with the + crossplatform projecct examples/simple/simple_plugin.dsp. + +2002-04-19 Baptiste Lepilleur + + * configure.in: added some makefile.am + + * contrib/readme.txt: updated. + + * contrib/bc5/bc5-makefile.zip: added borland 5.5 makefile. Contributed by + project cuppa. + + * src/cppunit/TypeInfoHelper.cpp: fixed implementation to be more + portable. + + +2002-04-18 Baptiste Lepilleur + + * bumped version to 1.9.3 + + * FAQ: added question about 4786 warning on VC++. + + * NEWS: updated. + + * contrib/msvc/readme.txt: moved to contrib/readme.txt. + + * contrib/xml-xsl/report.xsl: added XML style sheet contributed by + 'cuppa' project team (http://sourceforge.jp/projects/cuppa/) + + * examples/cppunittest/TestResultTest.h: + * examples/cppunittest/TestResultTest.cpp: added tests for + startTestRun()/endTestRun(). + + * examples/simple/*: added. A simple example. + + * include/cppunit/BriefTestProgressListener.h: + * src/cppunit/BriefTestProgressListener.cpp: added. Verbose progess listener + that print the test name before running the test. + + * include/cppunit/TestListener.h: added startTestRun()/endTestRun(). + + * include/cppunit/TestResult.h: + * src/cppunit/TestResult.cpp: added runTest(), to be called to run + a test by test runner. + + * src/cppunit/TextTestRunner.cpp: + * src/cppunit/TestRunner.cpp: updated to use TestResult::runTest(). + + * include/cppunit/plugin/PlugInManager.h: + * src/cppunit/PlugInManager.cpp: added. Managers for all loaded plug-ins. + + * include/cppunit/plugin/TestPlugInDefaultImpl.h: + * src/cppunit/TestPlugInDefaultImpl.cpp: renamed TestPlugInAdapter. All + implementations are empty. + + * include/cppunit/plugin/TestPlugInSuite.h: removed. + * src/cppunit/TestPlugInSuite.cpp: removed. Replaced by PlugInManager. + + * include/cppunit/plugin/TestPlugIn.h: rewrote the plug-in interface to + provide more versatility. updated macros to match new interface. + + * include/cppunit/extensions/TestFactoryRegistry.h: + * include/cppunit/extensions/TestFactoryRegistry.cpp: Added unregisterFactory(). + Added convenience method addRegistry(). Rewrote registry life cycle + management. AutoRegisterSuite can now detect that the registry has been + destroy and not call to it to unregister its test factory. + + * include/cppunit/extensions/AutoRegisterTest.h: on destruction, the registered + factory is unregistered from the registry. + + * include/cppunit/extensions/HelperMacros.h: added macros + CPPUNIT_REGISTRY_ADD_TO_DEFAULT and CPPUNIT_REGISTRY_ADD to help + build test suite hierarchy. + + * src/cppunit/msvc/DllPlugInTester/*: moved to src/cppunit/DllPlugInTester/. + + * src/cppunit/DllPlugInTester/DllPlugInTester.cpp: removed UNICODE stuffs. Use + the PlugInManager instead of PlugInTestSuite. Simplified: only one test on + command line, but many DLL can be specified. Added configurations to link + against cppunit dll, those are now the default configuration (static linking + don't make much sense for plug-in). + +2002-04-15 Baptiste Lepilleur + + * release 1.9.2. + + * NEWS: updated. + + * configure.in: added include/cppunit/config/Makefile and + include/cppunit/plugin/Makefile to the list of target. + + * doc/CppUnit-win.dox: enabled generation of HTML Help documentation. + + * include/cppunit/config/Makefile.am: + * include/cppunit/plugin/Makefile.am: added. + + * include/cppunit/config-bcb5.h: + * include/cppunit/config-msvc6.h: + * include/cppunit/config-mac.h: moved to include/cppunit/config/. + + * include/cppunit/Portability.h: updated config files location. Added macros + CPPUNIT_STRINGIZE and CPPUNIT_JOIN (implementation adapted from boost.org). + Added macro CPPUNIT_MAKE_UNIQUE_NAME. + + * include/cppunit/Test.h: modified methods order. + + * include/cppunit/extensions/HelperMacros.h: renamed macro + __CPPUNIT_MAKE_UNIQUE_NAME to CPPUNIT_MAKE_UNIQUE_NAME and moved its + definition to include/cppunit/Portability.h. + + * include/cppunit/extensions/TestDecorator.h: Inherits Test instead of TestLeaf. + + * include/cppunit/plugin/DynamicLibraryManager.h: + * src/cppunit/DynamicLibraryManager.cpp: added. DLL manager (load & lookup + symbol). + + * src/cppunit/BeOsDynamicLibraryManager.cpp: + * src/cppunit/UnixDynamicLibraryManager.cpp: + * src/cppunit/Win32DynamicLibraryManager.cpp: added. Implementation of + platform dependent methods of DynamicLibraryManager. + + * include/cppunit/plugin/DynamicLibraryManagerException.h: + * src/cppunit/DynamicLibraryManagerException.cpp: added. Exception thrown + by DynamicLibraryManager. + + * include/cppunit/plugin/TestPlugIn.h: added. CppUnitTestPlugIn interface + definition. Helper macros to implements plug-in. + + * include/cppunit/plugin/TestPlugInSuite.h: + * src/cppunit/plugin/TestPlugInSuite.cpp: added. A suite to wrap a test + plug-in. + + * include/cppunit/plugin/TestPlugInDefaultImpl.h: + * src/cppunit/TestPlugInDefaultImpl.cpp: added. A default implementation + of the test plug-in interface. + + * src/msvc6/DllPlugInTester/DllPlugInTester.cpp: updated to use the + new TestPlugIn. + + * examples/cppunittest/TestResultCollectorTest.cpp: fixed typo. + +2002-04-14 Baptiste Lepilleur + + * NEWS: updated. + + * include/cppunit/TestSucessListener.h: + * src/cppunit/TestSucessListener.cpp: renamed TestSuccessListener + + * doc/cookbook.dox: + * src/msvc6/DllPlugInTester/DllPlugInTester.cpp: + * examples/cppunittest/TestResultCollectorTest.h: + * examples/cppunittest/TestResultCollectorTest.cpp: + * examples/cppunittest/XmlOutputterTest.h: + * examples/cppunittest/XmlOutputterTest.cpp: + * include/cppunit/CompilerOutputter.h: + * include/cppunit/TestListener.h: + * include/cppunit/XmlOutputter.h: + * src/cppunit/XmlOutputter.cpp: + * src/cppunit/CompilerOutputter.cpp: fixed 'success' typo (was misspelled + 'sucess'). + + * include/cppunit/TestResultCollector.h: + * src/cppunit/TestResultCollector.cpp: updated (renaming of + TestSucessListener). + + * src/cppunit/XmlOutputter.cpp: + * examples/cppunittest/XmlOutputterTest.cpp: Changed SucessfulTests tag to + SucessfulTests. + +2002-04-13 Baptiste Lepilleur + + * include/cppunit/XmlOutputter.h: + * src/cppunit/XmlOutputter.cpp: Made XML output more human readable. Idented element. + + * examples/cppunittest/XmlUniformiser.h: + * examples/cppunittest/XmlUniformiser.cpp: + * examples/cppunittest/XmlUniformiserTest.cpp: modified to ignore trailing space + at the end of element content. + +2002-04-13 Baptiste Lepilleur + + * Snapshot 1.9.0 + + * NEWS: updated + + * doc/other_documentation.dox: addded new module for test plug-in. + + * include/msvc6/DSPlugin/TestRunnerDSPlugin.h: + * include/msvc6/DSPlugin/TestRunnerDSPlugin_i.c: added. Those file are + generated by project src/msvc/DSPlugin. They are provided to allow + compilation of TestRunner without compiling DSPlugIn which does not + build on VC++ 7. + + * examples/examples.dsw: removed DSPlugIn for workspace (fail to build + with VC++ 7). Added DllPlugInTester.dsp to workspace. + + * examples/msvc6/TestPlugIn/TestPlugIn.dsp: added post-build unit testing + using the new DllPlugInTester. + + * examples/msvc6/EasyTestPlugIn/*: a new project that + demonstrates the use of CPPUNIT_TESTPLUGIN_IMPL to create a test plug-in. + + * src/cppunit/cppunit.dsw: + * src/TestPlugInRunner.dsw: + * src/TestRunner.dsw: removed. Should use src/CppUnitLibraries.dsw instead. + + * include/cppunit/ui/text/TestRunner.h: + * src/cppunit/TextTestRunner.cpp: removed findTestName() method. Replaced + by Test::findTest(). + + * src/msvc6/DSPlugIn/DSPlugIn.dsp: + * src/msvc6/DSPlugIn/DSAddIn.h: changed include for add-in. MIDL generates + files in sub-directory ToAddToDistribution. Generated file should be + copied to include/msvc6/DSPlugin when modified. This remove the dependecy + of MfcTestRunner on DSPlugIn. + + * src/msvc6/testrunner/ListCtrlFormatter.h: + * src/msvc6/testrunner/ListCtrlFormatter.cpp: added GetNextColumnIndex(). + + * src/msvc6/testrunner/src/TestRunnerDlg.h: + * src/msvc6/testrunner/src/TestRunnerDlg.cpp: set column number in + MsDevCallerListCtrl when initializing the list. + + * src/msvc6/testrunner/src/MsDevCallerListCtrl.h: + * src/msvc6/testrunner/src/MsDevCallerListCtrl.cpp: column indexes for + file and line number are no longer static. Added methods to set those + indexes. Changed DSPlugIn header name. + + * include/msvc6/testrunner/TestPlugInInterface.h: fixed inclusion of + windows header for WINAPI. Added macro CPPUNIT_TESTPLUGIN_IMPL to + automatically implements a test plug-in. + + * src/msvc6/DllPlugInTester/*: added new project. A application to test DLL + and report using CompilerOutputter. Target for post-build testing and + debugging of DLL. + + +2002-04-13 Baptiste Lepilleur + + * include/cppunit/CompilerOutputter.h: + * src/cppunit/CompilerOutputter.h: deprecated defaultOuputter(). Added + setLocationFormat() and format specifiation in constructor. A string + that represent the location format is used to output the location. + Default format is defined by CPPUNIT_COMPILER_LOCATION_FORMAT. + + * include/cppunit/config-msvc6.h: + * include/cppunit/Portability.h: added CPPUNIT_COMPILER_LOCATION_FORMAT. + Use gcc location format if VC++ is not detected. + + * include/cppunit/Test.h: fixed documentation. + + * include/cppunit/TestListener.h: added startSuite() and endSuite() + callbacks. Added new example to documentation. + + * include/cppunit/TestResult.h: + * src/cppunit/TestResult.cpp: + * include/cppunit/TestComposite.h: + * src/cppunit/TestComposite.cpp: Updated to inform the listeners. + + * src/qttestrunner/TestBrowserDlgImpl.cpp: used Test new composite + interface instead of RTTI to explore the test hierarchy. + + * examples/cppunittest/MockTestListener.h: + * examples/cppunittest/MockTestListener.cpp: updated,added support for + startSuite() and endSuite(). + + * examples/cppunittest/TestResultTest.h: + * examples/cppunittest/TestResultTest.cpp: added tests for startSuite() + and endSuite(). + +2002-04-12 Baptiste Lepilleur + + * Makefile.am: added examples/qt to tar ball release. + + * TODO: heavily updated. + + * contrib/msvc/CppUnit*.wwtpl: changed base class for unit test to TestFixture. + + * include/cppunit/Test.h: removed toString() method. Not used by the framework + and source of confusions with getName(). + Added getChildTestCount() and getChildTestAt(), introducing the composite pattern + at top level. Added utility methods findTest() and findTestPath(). + + * src/cppunit/Test.cpp: added. Implementation of new utility methods. + + * include/cppunit/TestCase.h: + * src/cppunit/TestCase.cpp: inherits TestLeaf. Removed toString(), run(void) and + defaultResult(). Removed default constructor. + + * src/cppunit/TestCase.cpp: + * src/cppunit/TestSuite.cpp: fixed some includes that used "" instead of <>. + + * include/cppunit/TestComposite.h: + * src/cppunit/TestComposite.cpp: added. Common implementation of Test for composite + tests (TestSuite). + + * include/cppunit/TestFailure.h: + * src/cppunit/TestFailure.cpp: removed toString(). + + * include/cppunit/TestLeaf.h: + * src/cppunit/TestLeaf.cpp: added. Common implementation of Test for single test + (TestCase). + + * include/cppunit/TestListener.h: added TimingListener example to documentation. + + * include/cppunit/TestPath.h: + * src/cppunit/TestPath.cpp: added. List of test traversed to access a test in the + test hierarchy. + + * include/cppunit/TestRunner.h: added. Generic TestRunner. + + * src/cppunit/TestRunner.cpp: moved to TextTestRunner.cpp. Added new implementation + of includecppunit/TestRunner.h. + + * include/cppunit/TestSuite.h: + * src/cppunit/TestSuite.cpp: inherits TestComposite and implements new Test + interface. Removed toString(). + + * src/cppunit/TextTestRunner.cpp: moved from TestRunner.cpp. Implementation of + include/cppunit/ui/text/TestRunner.h. + + * include/cppunit/extensions/RepeatedTest.h: + * src/cppunit/RepeatedTest.cpp: removed toString(). + + * include/cppunit/extensions/TestDecorator.h: inherits TestLeaf. + Removed toString() + + * include/cppunit/XmlOutputter.h: + * src/cppunit/XmlOutputter.cpp: + * examples/cppunittest/XmlOutputterTest.cpp: + * examples/cppunittest/XmlOutputterTest.h: XML outputter now escape node content. + Add unit test for that bug (#540944). Added style sheet support. Modified + XML structure: failure message as its own element. + + * src/msvc/testrunner/TestRunnerModel.h: + * src/msvc/testrunner/TestRunnerModel.cpp: used Test::findTest() to find a test + by name instead of using RTTI. Added toAnsiString() for convertion when + compiling as UNICODE. + + * src/msvc/testrunner/TreeHierarchyDlg.h: + * src/msvc/testrunner/TreeHierarchyDlg.cpp: used new composite interface of Test + to explorer the test hierarchy instead of RTTI. + + * examples/cppunittest/TestPathTest.h: + * examples/cppunittest/TestPathTest.cpp: added, unit tests for TestPath. + + * examples/cppunittest/TestCaseTest.h: + * examples/cppunittest/TestCaseTest.cpp: added test for TestLeaf. + + * examples/cppunittest/TestSuiteTest.h: + * examples/cppunittest/TestSuiteTest.cpp: added test for TestComposite and + new Test interface. + +2002-04-11 Baptiste Lepilleur + + * configure.in: bumped version to 1.9.0 + + * NEWS: added version 1.9.0 + +2002-04-11 Baptiste Lepilleur + + * doc/FAQ: removed question about the Exception::operator =() problem. + + * release 1.8.0 + +2002-04-11 Steve M. Robbins + + * include/cppunit/ui/mfc/Makefile.am: + * include/cppunit/ui/qt/Makefile.am: + * include/cppunit/ui/text/Makefile.am: Set the libcppunitincludedir + variable. Correct case of header file ui/qt/Config.h. + + * configure.in: Output the new include/*/Makefiles. + +2002-04-10 Baptiste Lepilleur + + * Makefile.am: removed directory cppunitui from copy when making + the dist. + + * include/cppunit/ui: added Makefile.am for dist and install. + +2002-04-10 Baptiste Lepilleur + + * include/cppunitui/: moved to include/cppunit/ui (fix unix + install problem). + + * doc/cookbook.dox: + * examples/cppunittest/CppUnitTestMain.cpp: + * examples/msvc/CppUnitTestApp/HostApp.cpp: + * examples/msvc/HostApp/HostApp.cpp: + * examples/qt/Main.Cpp: + * examples/src/cppunit/TestRunner.cpp: + * examples/src/msvc6/TestRunner/TestRunner.cpp: + * examples/src/qttestrunner/TestRunner.cpp: updated to use + instead of in include directives. + + * doc/CppUnit-win.dox: generated documentation give the include + path at the bottom of the page for each class. + + * NEWS: added compatibility break for 1.7.10 users. + +2002-04-05 Baptiste Lepilleur + + * examples/cppunittest/CppUnitTestMain.cpp: never wait for a key press. + +2002-04-04 Baptiste Lepilleur + + * NEW: added CPPUNIT_ASSERT_EQUAL_MESSAGE compatiblity break. + + * include/cppunit/TestAssert.h: changed arguments order for + CPPUNIT_ASSERT_EQUAL_MESSAGE. 'message' is now the first argument + instead of the last (like CPPUNIT_ASSERT_MESSAGE). + + * examples/cppunittest/MockTestCase.cpp: + * examples/cppunittest/MockTestListener.cpp: updated to reflect + change on CPPUNIT_ASSERT_EQUAL_MESSAGE. + +2002-03-28 Baptiste Lepilleur + + * configure.in: bumped version to 1.7.11 + +2002-03-28 Baptiste Lepilleur + + * doc/cookbook.html: removed. Replaced by cookbook.doc. + + * doc/cookbook.dox: added, conversion of cookbook.html to Doxygen + format. + + * doc/other_documentation.dox: added groups definition. + + * doc/Makefile.am: replaced cookbook.html by cookbook.dox + + * doc/Doxyfile.in: added predefined CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION. + Replaced cookbook.html by cookbook.dox. + + * include/cppunitui/mfc/TestRunner.h: added, extracted from + include/msvc6/testrunner/TestRunner.h. Moved class TestRunner to + namespace CppUnit::MfcUi. + + * include/msvc6/testrunner/TestRunner.h: deprecated. A simple + typedef to CppUnit::MfcUi::TestRunner. + + * include/textui/TestRuner.h: added, extracted from + include/cppunit/TextTestRunner.h. + + * src/cppunit/TextTestRunner.cpp: renamed TestRunner.cpp. Moved + into namespace CppUnit::TextUi. + + * src/msvc6/testruner/TestRunner.cpp: moved into namespace + CppUnit::MfcUi. + + * src/cppunit/CompilerOutputter.cpp: removed printing "- " before + NotEqualException addional message, for consistency between + different TestRunner (Mfc,Text...) + + * include/cppunit/Asserter.h: + * include/cppunit/CompilerOutputter.h: + * include/cppunit/Exception.h: + * include/cppunit/NotEqualException.h: + * include/cppunit/Outputter.h: + * include/cppunit/SourceLine.h: + * include/cppunit/TestAssert.h: + * include/cppunit/TestCaller.h: + * include/cppunit/TestFailure.h: + * include/cppunit/TestFixture.h: + * include/cppunit/TestListener.h: + * include/cppunit/TestResult.h: + * include/cppunit/TestResultCollector.h: + * include/cppunit/TestSucessListener.h: + * include/cppunit/TestSuite.h: + * include/cppunit/TextTestProgressListener.h: + * include/cppunit/TextTestRunner.h: + * include/cppunit/XmlOutputter.h: + * include/cppunit/extensions/AutoRegisterSuite.h: + * include/cppunit/extensions/HelperMacros.h: + * include/cppunit/extensions/TestFactoryRegistry.h: + * include/cppunit/extensions/TestSuiteBuilder.h: + * include/cppunit/extensions/TestSuiteFactory.h: doc + update. organization in groups. + + * examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp: + * examples/msvc6/HostApp/HostApp.cpp: updated to use + CppUnit::MfcUi::TestRunner. + + * examples/cppunittest/CppUnitTestMain.cpp: updated to use + CppUnit::TextUi::TestRunner. + +2002-03-27 Baptiste Lepilleur + + * include/msvc/testrunner/TestRunner.h: updated doc. reindented. + + * include/cppunit/Asserter.h: + * include/cppunit/Asserter.cpp: + * include/cppunit/TestResultCollector.h: + * include/cppunit/TestResult.h: + * include/cppunit/SynchronizedObject.h: + * include/cppunit/extensions/TestCaller.h: doc update. + + * include/cppunitui/qt/TestRunner.h: doc update. + +2002-03-27 Baptiste Lepilleur + + * makefile.am: added src/CppUnitLibraries.dsw, new contribution, and + src/qttestrunner. + + * TODO: updated (doc). + + * contrib/msvc/AddingUnitTestMethod.dsm: added, submitted by + bloodchen@hotmail.com. + + * constrib/msvc/readme.txt: updated. + + * include/cppunit/TestAsserter.h: + * include/cppunit/SourceLine.h: updated doc. + + * include/cppunit/TestCaller.h: reindented. updated doc. + + * include/cppunit/extensions/HelperMacros.h: relaxed constraint on fixture. + Fixture base class may be TestFixture instead of TestCase. + + * include/cppunit/TestCase.h: + * src/cppunit/TestCase.h: TestCase inherits TestFixture for setUp() and + tearDown() definition. Moved documentation to TestFixture. + + * include/cppunit/TestFixture.h: updated documentation. + + * include/cppunit/TestRegistry.h: + * src/cppunit/TestRegistry.cpp: Removed. Replaced by TestFactoryRegistry. + + * include/cppunit/TextTestRunner.h: + * src/cppunit/TextTestRunner.cpp: made printing progress using a + TextTestProgressListener optional. + + * examples/cppunittest/ExceptionTest.h: + * examples/cppunittest/HelperMacrosTest.h: + * examples/cppunittest/HelperMacrosTest.cpp: + * examples/cppunittest/NotEqualException.h: + * examples/cppunittest/OrthodoxTest.h: + * examples/cppunittest/RepeatedTest.h: + * examples/cppunittest/TestAssertTest.h: + * examples/cppunittest/TestCallerTest.h: + * examples/cppunittest/TestDecoratorTest.h: + * examples/cppunittest/TestFailureTest.h: + * examples/cppunittest/TestResultCollectorTest.h: + * examples/cppunittest/TestResultTest.h: + * examples/cppunittest/TestSetUpTest.h: + * examples/cppunittest/TestSuiteTest.h: + * examples/cppunittest/XmlOutputterTest.h: + * examples/cppunittest/XmlOutputterTest.cpp: + * examples/cppunittest/XmlUniformizerTest.h: + * examples/cppunittest/XmlUniformizerTest.cpp: changed base class for fixture + from TestCase to TestFixture. + + * examples/hierarchy/BoardGameTest.h: + * examples/hierarchy/ChessTest.h: + * examples/hierarchy/main.cpp: updated to use HelperMacros for correct + fixture instantiation (the ChessBoard::testReset test case was using + BoardGame fixture instance instead of ChessBoard). + +2002-03-26 Baptiste Lepilleur + + * configure.in: bumped version to 1.7.9 + +2002-03-26 Baptiste Lepilleur + + * src/msvc6/testpluginrunner/TestPlugInRunner.dsp: fixed release configuration. + +2002-03-25 Baptiste Lepilleur + + * include/cppunit/makefile.am: removed TestRegistry.h + + * include/cppunit/TestRegistry.h: removed. Obsolete, replaced by + TestFactoryRegistry. + + * src/cppunit/makefile.am: removed TestRegistry.cpp. Added cppunit_dll.dsp. + + * include/cppunit/CompilerOutputter.h: + * include/cppunit/NotEqualException.h: + * include/cppunit/SynchronizedObject.h: + * include/cppunit/TestFixture.h: + * include/cppunit/TestListener.h: + * include/cppunit/TestResult.h: + * include/cppunit/TestSucessListener.h: + * include/cppunit/TextOutputter.h: + * include/cppunit/TextTestProgressListener.h: + * include/cppunit/TextTestResult.h: + * include/cppunit/XmlOutputter.h: + * include/cppunit/extensions/TestFactory.h: + * include/cppunit/extensions/TestFactoryRegistry.h: + * include/cppunit/extensions/TestSuiteBuilder.h: + * include/cppunit/extensions/TestSuiteFactory.h: minor doc update. + + * include/cppunit/TestFixture.h: added DLL export. + + * include/cppunit/msvc6/TestPlugInInterface.h: updated doc. Added automatic + exportation of TestPlugIn publishing function. + + * src/cppunit/TestCase.cpp: + * include/cppunit/TestCase.h: inherits setUp() and tearDown() from + class TestFixture. + +2002-03-25 Baptiste Lepilleur + + * configure.in: bumped version to 1.7.7 + +2002-03-25 Baptiste Lepilleur + + * include/cppunit/config-msvc6.h: + * include/cppunit/Portability.h + * include/cppunit/extensions/TestFactoryRegistry.h + * include/cppunit/TestResult.h + * include/cppunit/TestResultCollector.h + * include/cppunit/TestSuite.h + * include/cppunit/TextTestRunner.h + * include/cppunit/XmlOutputter.h: removed warning when compiling CppUnit + as DLL. + + * src/cppunit/DllMain.cpp: added some defines to speed up compilation a bit. + +2002-03-25 Baptiste Lepilleur + + * INSTALL-WIN32.txt: updated for MFC Unicode TestRunner. + + * src/msvc6/testrunner/TestRunner.dsp: added Unicode configurations. + + * src/msvc6/testrunner/ListCtrlSetter.cpp: + * src/msvc6/testrunner/ListCtrlSetter.h: replaced usage of std::string by + CString for easier ansi/unicode switch. + + * src/msvc6/testrunner/MsDevCallerListCtrl.cpp: + * src/msvc6/testrunner/TestRunnerDlg.cpp: + * src/msvc6/testrunner/TestRunnerModel.cpp: + * src/msvc6/testrunner/TestRunnerModel.h: + * src/msvc6/testrunner/TreeHierarchyDlg.cpp: made changes to compile with + either ANSI and UNICODE support. + + * examples/msvc6/HostApp/HostApp.cpp: + * examples/msvc6/HostApp/HostApp.h: + * examples/msvc6/HostApp/HostAppDoc.cpp: + * examples/msvc6/HostApp/HostAppDoc.h: moved TestRunner execution to + HostApp::RunUnitTests() and removed the MainFrame application window. + + * examples/msvc6/HostApp/HostApp.dsp: added Unicode configurations. + +2002-03-24 Baptiste Lepilleur + + * INSTALL-WIN32.txt: added some info to build cppunit as a DLL. + + * include/cppunit/config-msvc6.h: added definition of macro CPPUNIT_API + when building or linking DLL. Defined CPPUNIT_BUILD_DLL when building, and + CPPUNIT_DLL when linking. + + * include/cppunit/Portability.h: added empty definition of macro + CPPUNIT_API when not building or using CppUnit as a DLL. When any of + those symbol is defined, the symbol CPPUNIT_NEED_DLL_DECL is set to 1. + + * include/cppunit/extensions/RepeatedTest.h: + * include/cppunit/extensions/TestDecorator.h: + * include/cppunit/extensions/TestSetUp.h: + * include/cppunit/TestCaller.h + * include/cppunit/extensions/TestFactory.h + * include/cppunit/extensions/TestFactoryRegistry.h + * include/cppunit/extensions/TypeInfoHelper.h + * include/cppunit/Asserter.h + * include/cppunit/Exception.h + * include/cppunit/NotEqualException.h + * include/cppunit/SourceLine.h + * include/cppunit/SynchronizedObject.h + * include/cppunit/Test.h + * include/cppunit/TestAssert.h + * include/cppunit/TestCase.h + * include/cppunit/TestFailure.h + * include/cppunit/TestListener.h + * include/cppunit/TestResult.h + * include/cppunit/TestSuite.h + * include/cppunit/CompilerOutputter.h + * include/cppunit/Outputter.h + * include/cppunit/TestResultCollector.h + * include/cppunit/TestSuccessListener.h + * include/cppunit/TextOutputter.h + * include/cppunit/TextTestProgressListener.h + * include/cppunit/TextTestResult.h + * include/cppunit/TextTestRunner.h + * include/cppunit/XmlOutputter.h: added CPPUNIT_API for DLL export. + + * include/cppunit/TestSuite.h: + * src/cppunit/TestSuite.cpp: reindented + + * include/cppunit/extensions/TestSetUp.h: + * src/cppunit/TestSetUp.cpp: added .cpp. extracted inline method and moved + them to cpp file. + + * src/cppunit/DllMain.cpp: added, contains Dll entry point. + +2002-03-06 Baptiste Lepilleur + + * src/cppunit/TextTestProgressListener.cpp: flush the stream after each + progess step. + +2002-03-03 Baptiste Lepilleur + + * configure.in: updated version number to 1.7.4 + +2002-03-03 Baptiste Lepilleur + + * include/cppunit/makefile.am: + * src/cppunit/makefile.am: added missing SynchronizedObject and + TextOutputter.h. + + * generated 1.7.3 tar ball. + +2002-02-29 Baptiste Lepilleur + + * inclued/cppunit/XmlOutputter.h: + * inclued/cppunit/XmlOutputter.cpp: added optional parameter to constructor + to specify the encoding. + + * configure.in: updated version number to 1.7.3 + +2002-02-28 Baptiste Lepilleur + + * NEW: updated and restructured. + + * include/cppunit/CompilerOutputter.h: + * src/cppunit/CompilerOutputter.cpp: + updated against TestResultChange. Changed TestResult to TestResultCollector. + + * include/cppunit/extensions/HelperMacros.h: minor documentation fix. + + * include/cppunit/Outputter.h: added. Abstract base class for all Outputter. + + * include/cppunit/Portability.h: made the fix on OStringStream suggested by + Bob Summerwill to remove level 4 warning with VC++. + + * include/cppunit/TestAssert.h: added macro CPPUNIT_ASSERT_EQUAL_MESSAGE. + + * src/cppunit/TestFailure.cpp: + * include/cppunit/TestFailure.h: added method clone() to duplicate a + failure. Made all method virtual. + + * include/cppunit/TestListener.h: changed signature of addFailure() to + addFailure( const TestFailure &failure ). Failure is now only a temporary + object. + + * include/cppunit/Outputter.h: added. Abstract base class for all + outputter. Used by TextTestRunner. + + * include/cppunit/SynchronizedObject.h: + * src/cppunit/SynchronizedObject.cpp: added. Class extracted from + TestResult. Base class for objects that can be accessed from different + threads. + + * include/cppunit/TestResult.h: TestFailure.h is no longer included. + + * include/cppunit/TestResult.h: + * src/cppunit/TestResult.cpp: extracted all methods related to keeping track + of the result to the new TestResultCollector class which is a TestListener. + + * include/cppunit/TestResultCollector.h: + * src/cppunit/TestResultCollector.cpp: added. TestListener which kept track + of the result of the test run. All failure/error, and tests are tracked. + + * include/cppunit/TestSucessListener.h: + * src/cppunit/TestSucessListener.cpp: added. TestListener extracted from + TestResult. Is responsible for wasSucessful(). + + * include/cppunit/TestCase.h: + * src/cppunit/TestCase.cpp: reindented. + + * include/cppunit/TextOutputter.h: + * src/cppunit/TextOutputter.cpp: added. Copied from the deprecated + TextTestResult and modified to act as an Ouputter. + + * include/cppunit/TextTestProgressListener.h: + * src/cppunit/TextTestProgressListener.cpp: Copied from the deprecated + TextTestResult and modified to print the dot while the test are running. + + * include/cppunit/TextTestResult.h: + * src/cppunit/TextTestResult.cpp: updated against TestResult change. + No compatiblity break. Deprecated. + + * include/cppunit/TextTestRunner.h: + * src/cppunit/TextTestRunner.cpp: updated to work with the new TestResult. + Use TextTestProgressListener and TextOutputter instead of TextTestResult. + Any outputter with interface Outputter can be used to print the test result + (CompilerOutputter, XmlOutputter, TextOutputter...) + + * include/cppunit/XmlOutputter.h: + * src/cppunit/XmlOutputter.cpp: updated against TestResultChange. + Changed TestResult to TestResultCollector. + + * src/msvc6/TestRunnerDlg.h: + * src/msvc6/TestRunnerDlg.cpp: fixed the 'fullrowselect' feature of the + list view. The dialog is a TestListener itself, it no longer use the + GUITestResult class. + + * src/msvc6/TestRunner.rc: moved the "autorun test button" in such a way that + it did not overlap the progress bar anymore. + + * src/msvc6/MfcSynchronizationObject.h: added. Generic SynchronizedObject + lock for MFC. + + * src/msvc6/GUITestResult.h : + * src/msvc6/GUITestResult.cpp : removed. + + * src/qttestrunner/TestRunnerModel.h: + * src/qttestrunner/TestRunnerModel.cpp: changed addFailure() signature to + reflect change on TestListener. + + * examples/cppunittest/CppUnitTestMain.cpp: updated to use the new Outputter + abstraction and TextTestRunner facilities. + + * examples/cppunittest/FailingTestCase.h: + * examples/cppunittest/FailingTestCase.cpp: removed. Replaced by MockTestCase. + + * examples/cppunittest/FailingTestCase.h: + * examples/cppunittest/FailingTestCase.h: + + * examples/cppunittest/HelperMacrosTest.h: + * examples/cppunittest/HelperMacrosTest.cpp: Updated against TestResult change. + Use MockTestListener instead of TestResult to check for sucess or failure. + + * examples/cppunittest/MockTestListener.h: + * examples/cppunittest/MockTestListener.cpp: the class now behave like a mock + object. + + * examples/cppunittest/MockTestCase.h: + * examples/cppunittest/MockTestCase.cpp: added. Mock TestCase object. + + * examples/cppunittest/OrthodoxTest.h: + * examples/cppunittest/OrthodoxTest.cpp: Updated against TestResult change. + Use MockTestListener instead of TestResult to check for sucess or failure. + + * examples/cppunittest/SynchronizedTestResult.h: Updated against TestResult + change. + + * examples/cppunittest/TestCallerTest.h: + * examples/cppunittest/TestCallerTest.cpp: Updated against TestResult change. + Use MockTestListener instead of TestResult. + + * examples/cppunittest/TestCaseTest.h: + * examples/cppunittest/TestCaseTest.cpp: Updated against TestResult change. + Use MockTestListener and MockTestCase instead of FailingTestCase and TestResult. + + * examples/cppunittest/TestDecoratorTest.h: + * examples/cppunittest/TestDecoratorTest.cpp: Updated against TestResult change. + Use MockTestCase instead of FailingTestCase. + + * examples/cppunittest/TestListenerTest.h: + * examples/cppunittest/TestListenerTest.cpp: removed. Those unit tests have been + rewrote and moved to TestResultTest. + + * examples/cppunittest/TestResultTest.h: + * examples/cppunittest/TestResultTest.cpp: Updated to test the new interface. + Tests from TestListenerTest have been moved here. + + * examples/cppunittest/TestResultCollectorTest.h: + * examples/cppunittest/TestResultCollectorTest.cpp: added. Tests for the class + that been extracted from TestResult. + + * examples/cppunittest/TestSetUpTest.h: + * examples/cppunittest/TestSetUpTest.cpp: renamed SetUp inner class to MockSetUp. + Changed interface to be more akin to a Mock object. + + * examples/cppunittest/TestSuiteTest.h: + * examples/cppunittest/TestSuiteTest.cpp: Updated against TestResult change, + and rewrote to use MockTestCase instead of FailingTestCase. + + * examples/cppunittest/XmlOutputterTest.h: + * examples/cppunittest/XmlOutputterTest.cpp: Updated against TestResult change. + Added some utility methods to make the update easier. + +2001-10-28 Steve M. Robbins + + * INSTALL-unix: Add note about cygwin. + +2001-10-24 Baptiste Lepilleur + + * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp: + * examples/msvc6/HostApp/HostApp.dsp: use custom file build instead + of post-build/pre-link step to copy the TestRunner DLL to the + Release/Debug directory. + + * src/msvc6/ProgressBar.cpp: + * src/msvc6/ProgressBar.h: + * src/msvc6/TestRunner.rc: + * src/msvc6/TestRunnerDlg.cpp: + * src/msvc6/TestRunnerDlg.h: + * src/msvc6/testRunner.dsp: + * src/msvc6/TestRunnerModel.cpp: + * src/msvc6/TestRunnerModel.h: included Gigi Sayfan (gigi@morphink.com) + patch. The dialog can now be resized, and list view columns and dialog + sizes are saved. + + * src/msvc6/ProgressBar.cpp: + * src/msvc6/ProgressBar.h: Minor refactoring. + + * THANKS: added Gigi Sayfan to the list. + +2001-10-21 Steve M. Robbins + + * configure.in: Bump version to 1.7.2. + + * Release 1.7.1 (alpha). + + * Merged changes from cvs BRANCH_1_6; details follow. + + * examples/cppunittest/TestSetUpTest.h (class SetUp): Add + namespace qualifier to CppUnit::TestSetup() constructor call. + + * include/cppunit/Makefile.am (dist-hook): Restore hook to + remove config-auto.h from distribution. + + * doc/Makefile.am: Move the definition of htmldir inside if DOC + conditional. Add "else" branch to conditional with dummy targets + for install-data-hook and uninstall-local. Move all-local outside + the conditional, and move "dox" target into both branches of the + conditional. + +2001-10-20 Steve M. Robbins + + * examples/cppunittest/Makefile.am (cppunittestmain_SOURCES): + Include XmlUnformiserTest files. + + * doc/Doxyfile.in (GENERATE_MAN): Do not generate man pages. + * doc/Makefile.am: Do not make man directories. + +2001-10-19 Baptiste Lepilleur + + * include/cppunit/Exception.h: + * src/cppunit/Exception.cpp: what(), added back the throw() qualifier. + +2001-10-14 Baptiste Lepilleur + + * include/cppunitui/* : added, Qt TestRunner. + + * examples/qt/* : added, example showing the use of Qt TestRunner. + + * src/qttestrunner : added, source of the Qt TestRunner DLL. + +2001-10-08 Steve M. Robbins + + * src/cppunit/Exception.cpp (what): Remove "throw()" qualifier, to + match earlier change to header. + +2001-10-07 Baptiste Lepilleur + + * include/cppunit/CompilerTestResultOutputter.h : + renamed CompilerOutputter.h + + * src/cppunit/CompilerTestResultOutputter.cpp : + renamed CompilerOutputter.cpp + + * include/cppunit/CompilerTestResultOutputter.h : + * src/cppunit/CompilerTestResultOutputter.cpp : ajust max line length + for wrapping. Added static factory method defaultOutputter(). Print + the number of test runs on success. + + * include/cppunit/CompilerTestResultOutputter.h : renamed + CompilerOutputter.h. + + * src/cppunit/CompilerTestResultOutputter.cpp : renamed + CompilerOutputter.cpp. + + * examples/cppunittest/CppUnitTestMain.cpp : use factory method + CompilerTestResultOutputter::defaultOutputter(). + + * src/msvc6/DSPlugIn/DSPlugIn.dsp : removed COM registration in + post-build step. IT is automatically done by VC++ when the add-in is + added. Caused build to failed if the add-in was used in VC++. + + * NEWS : updated. + + * src/cppunit/TestAssert.cpp : modified deprecated assert + implementations to use Asserter. + + * examples/cppunittest/XmlTestResultOutputterTest.h : + renamed XmlOutputterTest.h. + + * examples/cppunittest/XmlTestResultOutputterTest.cpp : + renamed XmlOutputterTest.cpp. + + * NEWS : + * examples/cppunittest/CppUnitTestMain.cpp : + * examples/cppunittest/CppUnitTestMain.dsp : + * examples/cppunittest/Makefile.am : + * examples/cppunittest/XmlTestResultOutputterTest.h : + * examples/cppunittest/XmlTestResultOutputterTest.cpp : + * examples/msvc6/CppUniTestApp/CppUnitTestApp.dsp + * include/cppunit/CompilerOutputter.h : + * include/cppunit/Makefile.am : + * include/cppunit/XmlTestResultOutputter.h : + * src/cppunit/CompilerOutputter.cpp : + * src/cppunit/cppunit.dsp : + * src/cppunit/Makefile.am : + * src/cppunit/XmlTestResultOutputter.cpp : change due to renaming + CompilerTestResultOutputter to CompilerOutputter, + XmlTestResultOutputter to XmlOuputter, XmlTestResultOutputterTest + to XmlOutputterTest. + +2001-10-06 Baptiste Lepilleur + + * include/cppunit/CompilerTestResultOutputter.h : + * src/cppunit/CompilerTestResultOutputter.cpp : added. Output result + in a compiler compatible format. + + * src/cppunit/CppUnit.dsp : + * include/cppunit/MakeFile.am : + * src/cppunit/MakeFile.am : added CompilerTestResultOutputter.cpp + and CompilerTestResultOutputter.h. + + * examples/cppunittest/CppUnitTestMain.cpp : if -selftest is specified + on the command line, no standard test result are printed, but compiler + compatible result at printed. + + * examples/cppunittest/CppUnitTestMain.dsp : added post-build step to + run the test suite with -selftest. + + * NEWS : updated. + + * src/cppunit/TextTestRunner.cpp : skip a line after printing + progress. + +2001-10-06 Baptiste Lepilleur + + * examples/cppunittest/CppUnitTestMain.cpp : application returns + 0 is test suite run sucessfuly, 1 otherwise. + + * src/cppunit/Exception.cpp : bug fix, operator =() with VC++. + Removed call to std::exception::operator =() which is bugged + on VC++. + + * doc/FAQ : added a note explaining why the test + ExceptionTest.testAssignment used to fail. + + * NEWS : updated and detailed. + + * include/cppunit/TestResult.h : + * src/cppunit/TestResult.cpp : added reset(). + + * include/cppunit/TextTestRunner.h : + * src/cppunit/TextTestRunner.cpp : Constructor take an optional + TextTestRestult. The TextTestResult remain alive as long as + the runner. Added result() to retreive the result. Printing the + result is now optinal (enabled by default). + +2001-10-05 Baptiste Lepilleur + + * include/cppunit/Asserter.h : + * src/cppunit/Asserter.cpp : added. Helper to create assertion macros. + + * src/cppunit/cppunit.dsp : + * src/cppunit/Makefile.am : + * include/cppunit/Makefile.am : added Asserter.h and Asserter.cpp. + + * include/cppunit/Exception.h : + * src/cppunit/Exception.cpp : added constructor that take a + SourceLine argument. Deprecated static constant and old constructor. + Fixed some constness issues. + + * examples/cppunittest/ExceptionTest.cpp : Refactored. + + * NEWS : partially updated (need to be more detailed) + + * include/cppunit/NotEqualException.h : + * src/cppunit/NotEqualException.cpp : added constructor that take a + SourceLine argument. Deprecated old constructor. Added a third element + to compose message. + + * examples/cppunittest/NotEqualExceptionTest.cpp : moved to "Core" + suite. Added test for SourceLine() and additionalMessage(). + Refactored. + + * include/cppunit/SourceLine.h : + * src/cppunit/SourceLine.cpp : added. Result of applying + IntroduceParameterObject refactoring on filename & line number... + + * include/cppunit/TestAssert.h : + * src/cppunit/TestAssert.cpp : deprecated old assert functions. + added functions assertEquals() and assertDoubleEquals() which use + SourceLine. + + * src/cppunit/TestCase.cpp : Modified for SourceLine. + + * include/cppunit/TestFailure.h : + * src/cppunit/TestFailure.cpp : added failedTestName(), and + sourceLine(). + + * src/msvc6/testrunner/TestRunnerDlg.cpp : modified to use SourceLine. + + * include/cppunit/TextTestResult.h : + * src/cppunit/TextTestResult.cpp : corrected include order and + switched to angled brackets. Refactored. Don't print failure location + if not available. Not equal failure dump additional message if + available. + + * src/cppunit/TextTestRunner.cpp : run() now returns a boolean to + indicate if the run was sucessful. + + * src/cppunit/XmlTestResultOutputter.cpp : replaced itoa() with + OStringStream. Refactored. + + * examples/cppunittest/XmlUniformiser.h : + * examples/cppunittest/XmlUniformiser.cpp : + CPPUNITTEST_ASSERT_XML_EQUAL capture failure location. Refactored + checkXmlEqual(). + + * examples/cppunittest/XmlUniformiserTest.h : + * examples/cppunittest/XmlUniformiserTest.cpp : added test for + CPPUNITTEST_ASSERT_XML_EQUAL. + + * include/cppunit/XmlTestResultOutputter.h : + * src/cppunit/XmlTestResultOutputter.cpp : updated to use SourceLine. + +2001-10-05 Baptiste Lepilleur + + * NEWS : updated. + + * include/cppunit/Exception.h : added include Portability.h. + + * include/cppunit/TestResult.* : changed TestFailures to a deque. + added tests(). + + * examples/cppunittest/CppUnitTest.dsp : + * examples/cppunittest/MakeFile.am : + * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp : Added + XmlTestResultOutputterTest.*, XmlUniformiser.*, XmlUniformiserTest.*, + UnitTestToolSuite.h, OutputSuite.h. + + * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp : revised project + folders structure. Added missing NoteEqualExceptionTest.*. + + * examples/cppunittest/CppUnitTestSuite.cpp : added 'Output' and + 'UnitTestTool' suites. + + * src/cppunit/cppunit.dsp: removed estring.h. Revised project folders + structure. Removed TestRegistry.*. Added TestSetUp.h, + XmlTestResultOutputter.*. + + * src/cppunit/MakeFile.am: added XmlTestResultOutputter.*. + + * src/testrunner/TestRunnerDlg.cpp: removed disabled code. + +2001-10-03 Baptiste Lepilleur + + * include/cppunit/TestFailure.cpp : + * include/cppunit/TestFailure.h : fixed some constness issues. Added + argument to indicate the type of failure to constructor. Added + isError(). + + * include/cppunit/TestListener.h : removed addError(). addFailure() + now take a TestFailure as argument. + + * include/cppunit/TestResult.h : + * include/cppunit/TestResult.cpp : removed errors(). Refactored. Fixed + some constness issues. Added typedef TestFailures for vector returned + by failures(). failures() returns a const reference on the list of + failure. added testFailuresTotal(). Constructor can take an optional + synchronization object. + + * include/cppunit/TextTestResult.h : + * include/cppunit/TextTestResult.cpp : removed printErrors(). + Refactored. Updated to suit new TestResult, errors and failures are + reported in the same list. + + * examples/cppunittest/TestFailureTest.cpp : + * examples/cppunittest/TestFailureTest.h : modified to use the new + TestFailure constructor. Added one test. + + * examples/cppunittest/TestListenerTest.cpp: removed addError(). + Refactored to suit new TestListener. + + * examples/cppunittest/TestResultTest.h : + * examples/cppunittest/TestResultTest.cpp : modified to suit the + new TestResult. + +2001-10-02 Baptiste Lepilleur + + * include/cppunit/extensions/TestFactoryRegistry.h + * src/cppunit/TestFactoryRegistry.cpp : fixed memory leaks that + occured when a TestFactoryRegistry was registered into another + TestFactoryRegistry. + + * include/cppunit/extensions/AutoRegisterSuite.h : updated doc. + + * include/cppunit/extensions/HelperMacros.h : added macro + CPPUNIT_TEST_SUITE_NAMED_REGISTRATION to register a suite into + a named suite. Updated doc. + + * examples/cppunittest/CoreSuite.h: + * examples/cppunittest/ExtensionSuite.h: + * examples/cppunittest/HelperSuite.h: added, declaration of suite for + use with CPPUNIT_TEST_SUITE_NAMED_REGISTRATION. + + * examples/cppunittest/makefile.am : added HelperSuite.h, CoreSuite.h, + ExtensionSuite.h, CppUnitTestSuite.h and CppUnitTestSuite.cpp. + + * examples/cppunittest/CppUnitTestSuite.*: added. + + * examples/cppunittest/ExceptionTest.cpp: + * examples/cppunittest/TestAssertTest.cpp: + * examples/cppunittest/TestCaseTest.cpp: + * examples/cppunittest/TestFailureTest.cpp: + * examples/cppunittest/TestListenerTest.cpp: + * examples/cppunittest/TestResultTest.cpp: + * examples/cppunittest/TestSuiteTest.cpp: moved into named suite + "Core" using CPPUNIT_TEST_SUITE_NAMED_REGISTRATION. + + * examples/cppunittest/OrthodoxTest.cpp: + * examples/cppunittest/RepeatedTest.cpp: + * examples/cppunittest/TestDecoratorTest.cpp: + * examples/cppunittest/TestSetUpTest.cpp: moved into named suite + "Extension" using CPPUNIT_TEST_SUITE_NAMED_REGISTRATION. + + * examples/cppunittest/HelperMacrosTest.cpp: + * examples/cppunittest/TestCallerTest.cpp: moved into named suite + "Helper" using CPPUNIT_TEST_SUITE_NAMED_REGISTRATION. + + * examples/cppunittest/CppUnitTest.dsp : + * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp : added + Makefile.am, HelperSuite.h, CoreSuite.h, ExtensionSuite.h, + CppUnitTestSuite.h and CppUnitTestSuite.cpp. + +2001-10-01 Baptiste Lepilleur + + * NEWS : updated. + + * doc/other_documentation.dox : added all the authors to the list of + authors. + + * examples/cppunittest/HelperMacrosTest.*: added unit tests for + CPPUNIT_TEST_FAIL & CPPUNIT_TEST_EXCEPTION. + + * examples/cppunittest/TestAssertTest.*: added unit tests for + CPPUNIT_FAIL. Corrected spelling error. Relaxed constraint on message + produced by CPPUNIT_ASSERT_MESSAGE. Refactored some tests. + + * include/cppunit/extensions/HelperMacros.h : added macro + CPPUNIT_TEST_EXCEPTION to create a test case for the specified method + that must throw an exception of the specified type. + + * include/cppunit/extensions/TestSuiteBuilder.h : made + makeTestName() public. Added addTestCallerForException() to add a + test case expecting an exception of the specified type to be + caught. + + * include/cppunit/TestAssert.h : added macro CPPUNIT_FAIL as a + shortcut for CPPUNIT_ASSERT_MESSAGE( message, false ). + +2001-09-30 Steve M. Robbins + + * configure.in: Set version to 1.7.0. + +2001-09-30 Steve M. Robbins + + * Release 1.6.1. + + * doc/footer.html: Do not meddle with font size. + + * doc/header.html: Add link to FAQ. Do not meddle with font size. + + * doc/Doxyfile.in (PROJECT_NAME): Set to "CppUnit", to be + consistent on capitalization. + (PROJECT_NUMBER): Include "Version" in the string. + + * doc/Makefile.am (EXTRA_DIST): Distribute FAQ. + + * Makefile.am (EXTRA_DIST): Distribute contrib/msvc/CppUnit.WWTpl + and contrib/msvc/readme.txt. + (dist-hook): Change line endings of these files. + + * include/cppunit/extensions/RepeatedTest.h + * src/cppunit/RepeatedTest.cpp (countTestCases, toString): + Add const qualifier to function. + +2001-09-30 Baptiste Lepilleur + + * contrib/msvc/CppUnit.WWTpl: added, template for WorkSpace Whiz! + to create new classes and unit tests. + + * doc/FAQ: + * INSTALL-WIN32.txt: moved FAQ from install-WIN32 to that file. Added + a generic question to hint at the helper macros. + + * include/cppunit/extensions/HelperMacros.h: bug #464844, moved + declaration of ThisTestCaseFactory from CPPUNIT_TEST_SUITE_END to + CPPUNIT_TEST_SUITE where the Fixture class name is available from + the macro parameter. + +2001-09-30 Steve M. Robbins + + * include/cppunit/config-mac.h: New. Macintosh configuration, + courtesy of Duane Murphy. + + * include/cppunit/Portability.h: Move include inside + #if-block that needs it. + + * doc/Makefile.am (doc-dist): Creates tar file of HTML doc files. + Remove all wildcarded filenames. Do not bother with manpages. + + * Makefile.am (EXTRA_DIST): Distribute INSTALL-unix and + cppunit-config.1. + (man_MANS): Install cppunit-config.1. + (doc-dist): Use "make doc-dist" in doc directory. + + * cppunit-config.1: Document --prefix and --exec-prefix. + + * cppunit-config.in (Usage): Remove "[LIBRARIES]" from help string. + +2001-09-29 Steve M. Robbins + + * configure.in: Set version to 1.6.1. + +2001-09-29 Baptiste Lepilleur + + * example/cppunittest/TestCaller.*: remove some memory leaks. + TestCaller exception catching features is now tested correctly. + Previous test tested nothing! + +2001-09-23 Steve M. Robbins + + * configure.in: Set version to 1.6.0. + + * Makefile.am (EXTRA_DIST): Add BUGS. + + * NEWS: Incorporate Baptiste's notes. + + * BUGS: New file for list of known bugs. + + * README: Note about file BUGS. + +2001-09-24 Baptiste Lepilleur + + * include/cppunit/TestAssert.h : changed header order to remove + warning on VC++ + + * include/cppunit/TestCaller.h : bugfix: threw 'new Exception' + instead of 'Exception'. + +2001-09-23 Steve M. Robbins + + * doc/footer.html: Put devel list in mailto tag. + + * doc/Makefile.am (man_MANS): Restore ability to install manpages. + (htmldir): HTML pages installed under $(pkgdatadir). + + * doc/other_documentation.dox: Reference cookbook.html + in same directory. Remove obsolete text. + + * configure.in: Do not set CFLAGS; remove --enable-debug-mode. + + * include/cppunit/Portability.h: + * include/cppunit/extensions/HelperMacros.h: Allow user + to request the old-style CU_TEST family of macros. + + * doc/Doxyfile.in (EXCLUDE_PATTERNS): Remove estring.h. + + * README: Add contact and bug-reporting info. + + * INSTALL-unix: New. Move the unix install notes here + from README. + + * AUTHORS: Put myself on the list. + +2001-09-21 Baptiste Lepilleur + + * include/cppunit/TestFailure.h : made destructor virtual. + + * INSTALL-WIN32.txt : added some more infos about DSPlugIn. + + * src/msvc6/DSPlugIn/DSPlugIn.rgs: added some registry data + that where missing to register the COM object. + + * src/msvc6/DSPlugIn/DSPlugIn.rc: updated some dll version info. + + * src/msvc6/DSPlugIn/DSPlugIn.dsp: fixed the custom build step to + register the DLL using regsvr32.exe. Added a post-build step to + copy the dll to the lib/ directory. This prevent a blocking + compilation error if the DLL is in use by VC++. + +2001-09-20 Steve M. Robbins + + * Makefile.am (snapshot): Replace "date -I" GNUism with portable + specification for ISO date format. + (dist-hook): Correct rule to change line endings for INSTALL-WIN32.txt. + + * include/cppunit/Portability.h: + * config/ac_cxx_have_strstream.m4 (AC_CXX_HAVE_STRSTREAM): Extend + to check for and use in preference to . + Patrick Hartling reports the former is required for the SGI + MIPSpro 7.3.1.2 compiler. + +2001-09-19 Baptiste Lepilleur + + * examples/cppunittest/makefile.am : added TestSetupTest.(cpp/h) + + * examples/examples.dsw: removed some unnecessary dependencies. + + * examples/msvc6/HostApp/HostApp.dsp: fixed release configuration + + * src/msvc6/DSPlugIn/DSPlugIn.dsp: fixed release configuration, and + disabled the custom build command that does not work. + + * include/cppunit/extensions/HelperMacros.h: reordered header to remove + some warning with VC++. + + * INSTALL-WIN32.txt : detailed what was in each project. Added a FAQ + about the failing test case in cppunittest. + +2001-09-19 Steve M. Robbins + + * README: Describe how to check if libtool is fixed. + + * Makefile.am (dist-hook): Include INSTALL-WIN32.txt in the list + of files to convert to MSDOS line endings. + (snapshot): Use ISO-8601 compliant date for filename. + (ACLOCAL_AMFLAGS): Specify local directory. + +2001-09-18 Steve M. Robbins + + * include/cppunit/TextTestResult.h: Change include from + to . Sugggested by Peer Sommerlund. + + * include/cppunit/Portability.h: Qualify ostrstream with std. + Suggested by Patrick Hartling. + +2001-09-18 Baptiste Lepilleur + + * examples/examples.dsw: + * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsw: + * examples/msvc6/HostApp/HostApp.dsw: + * examples/msvc6/TestPlugIn/TestPlugIn.dsw: Added missing + project dependency. + + * src/msvc6/DSPlugIn/DSPlugIn.dsp: fixed *.tlb output directory. + + * include/msvc6/testrunner/TestPlugInInterface.h: does not define + NOMINMAX if already defined. + +2001-09-17 Baptiste Lepilleur + + * Makefile.am: Added INSTALL-WIN32.txt to EXTRA_DIST. + + * INSTALL-WIN32.txt: added, short documentation for CppUnit and VC++. + + * include/cppunit/extensions/HelperMacros.h: bug #448363, removed + an extraneous ';' at the end of CPPUNIT_TEST_SUITE_END macro. + + * examples/cppunittest/TestCallerTest.cpp: bug #448332, fixed + memory leaks. + + * src/msvc6/testrunner/TestRunnerDlg.h: + * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h: + * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp: change to define + IDD to a dummy value when subclassing the dialog. + + * src/cppunit/cppunit.dsp: + * src/msvc6/testrunner/TestRunner.dsp: + * src/msvc6/testpluginrunner/TestPlugInRunner.dsp: + * examples/cppunitttest/CppUnitTestMain.dsp: + * examples/hierarchy.dsp: + * examples/msvc6/TestPlugIn/TestPlugIn.dsp: + * examples/msvc6/HostApp/HostApp.dsp: all configurations can be compiled. + + * src/msvc6/testpluginrunner/TestPlugInRunner.dsw: added dependency to + cppunit.dsp and TestRunner.dsp. + +2001-09-16 Steve M. Robbins + + * Revert TestFixture-related changes from 2001-07-15: + + * src/cppunit/cppunit.dsp (SOURCE): Remove TestFixture.h. + + * src/cppunit/TestCase.cpp (setUp, tearDown): Restore function + bodies. + + * include/cppunit/TestCase.h (class TestCase): Do not derive + from class TestFixture. Restore member functions setUp() + and tearDown(). + + * include/cppunit/TestCaller.h: Do not include + . + + * include/cppunit/Makefile.am (libcppunitinclude_HEADERS): Remove + TestFixture.h. + +2001-09-14 Baptiste Lepilleur + * src/msvc6/testrunner/TestRunner.dsp: fixed release configuration. + + * src/msvc6/testrunner/TestRunner.dsw: added DSPlugIn.dsp. TestRunner + depends on DSPlugIn. + + * src/msvc6/testrunner/TestRunner.cpp: + * src/msvc6/testrunner/TestRunnerDlg.h: + * src/msvc6/testrunner/TestRunnerDlg.cpp: + * src/msvc6/testrunner/MsDevCallerListCtrl.cpp: + * src/msvc6/testrunner/MsDevCallerListCtrl.h: + * src/msvc6/DSPlugIn/*: integrated patch from + Patrick Berny (PPBerny@web.de). An add-ins for VC++. Double-cliking + a failed test in the TestRunner, VC++ will open the source file and + go to the failure location. + + * src/cppunit/Exception.cpp: + * include/cppunit/Exception.h: compile fix, call to overrided + operator = of parent class failed. Using typedef to the parent + class fix that. + + * src/cppunit/cppunit.dsp: added TestFixture.h + + * src/cppunit/TestFactoryRegistry.cpp: removed which isn't + needed any more. + + * include/cppunit/TestCase.h: + * include/cppunit/TestSuite.h: + * include/cppunit/extensions/TestFactoryRegistry.h: added + include before any other includes to remove warning + with VC++. + + * include/cppunit/Portability.h: moved platform specific includes at + the beginning of the header. fixed CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION + declaration. + + * include/cppunit/config-msvc6.h: removed pragma once (useless, should + be put in each header to have an effect). + +2001-08-07 Steve M. Robbins + + * doc/Makefile.am: Add workaround for broken Doxygen. + + * src/cppunit/TextTestResult.cpp (operator<<): Remove CppUnit:: + prefix. + + * configure.in: Add check for . + * src/cppunit/TestAssert.cpp: Use if not + available. + * src/cppunit/TestCase.cpp: Do not include . + + * include/cppunit/config-bcb5.h (HAVE_CMATH): + * include/cppunit/config-msvc6.h (HAVE_CMATH): Add. + + * src/cppunit/Exception.cpp: Qualify std::exception. + + * examples/cppunittest/OrthodoxTest.h (TestCase): Add assignment + operator. MIPSpro fails to compile without one. + + * Makefile.am: Removed automake conditional "DOC". + * doc/Makefile.am: Placed "DOC" conditional around + rules that invoke Doxygen. + + * config/Makefile.am: Removed. + * configure.in: Do not create config/Makefile. + * Makefile.am (EXTRA_DIST): Distribute config/*.m4. + (SUBDIRS): Do not descend into config. + +2001-07-15 Steve M. Robbins + + * include/cppunit/TestFixture.h: New. Declare class TextFixture. + + * include/cppunit/TestCaller.h: + * include/cppunit/TestCase.h: + * src/cppunit/TestCase.cpp: + * include/cppunit/Makefile.am: Subclass TestCase from TestFixture. + +2001-07-14 Steve M. Robbins + + * include/cppunit/Exception.h: + * include/cppunit/Test.h: + * include/cppunit/TestCaller.h: + * include/cppunit/TestCase.h: + * include/cppunit/TestFailure.h: + * include/cppunit/TestListener.h: + * include/cppunit/TestSuite.h: + * include/cppunit/extensions/RepeatedTest.h: + * include/cppunit/extensions/TestDecorator.h: + * src/cppunit/TestCase.cpp: Add documentation. + +2001-07-13 Steve M. Robbins + + * examples/cppunittest/TestAssertTest.h: + * examples/cppunittest/TestAssertTest.cpp: Add tests + for CPPUNIT_ASSERT_EQUAL. + +2001-07-12 Steve M. Robbins + + * configure.in: Set to version 1.5.6. On the assumption that + backwards compatibility has been broken (though I'm not certain), + set the binary age and interface age to zero. + + * examples/cppunittest/TestFailureTest.h: + * include/cppunit/Exception.h: + * include/cppunit/NotEqualException.h: + * src/cppunit/Exception.cpp: + * src/cppunit/NotEqualException.cpp: Add "throw()" to overridden + std::exception destructors; required for GCC 3.0. + +2001-07-07 Steve M. Robbins + + * include/cppunit/Makefile.am: Clean config-auto.h using + DISTCLEANFILES. + + * doc/Makefile.am: Temporarily disable manpage installation. + Fix html installation to ensure files removed by uninstall. + + * src/cppunit/estring.h: Removed. + + * src/cppunit/Makefile.am: + * src/cppunit/TestCase.cpp: + * src/cppunit/TextTestResult.cpp: Recode to avoid use of estring. + + * examples/cppunittest/OrthodoxTest.h: Add const qualifier + to operator== methods. + + * include/cppunit/config-bcb5.h: + * include/cppunit/config-msvc6.h: Define CPPUNIT_HAVE_SSTREAM to 1. + + * config/ac_cxx_have_sstream.m4: New. Defines macro + AC_CXX_HAVE_SSTREAM. Taken from the autoconf archive. + + * config/ac_cxx_have_strstream.m4: New. Copy of above, + modified to check for presence of strstream; defines + macro AC_CXX_HAVE_STRSTREAM. + + * configure.in: Invoke AC_CXX_HAVE_SSTREAM and + AC_CXX_HAVE_STRSTREAM. + + * include/cppunit/Portability.h: Define class + CppUnit::OStringStream. + + * include/cppunit/TestAssert.h: + * src/cppunit/TestFactoryRegistry.cpp: Replace std::ostringstream + by CppUnit::OStringStream. + + +2001-07-06 Steve M. Robbins + + * configure.in: Add --disable-typeinfo-name option. + + * README: Add note about new configure option. + + * configure.in: Remove AM_DISABLE_STATIC. + + * INSTALL: Update to version from autoconf 2.50. + +2001-07-05 Steve M. Robbins + + * include/cppunit/Portability.h: Remove definition of + CPPUNIT_USE_TYPEINFO. + + * configure.in: Define USE_TYPEINFO_NAME in config.h. + + * include/cppunit/config-msvc6.h (CPPUNIT_USE_TYPEINFO_NAME): + * include/cppunit/config-bcb5.h (CPPUNIT_USE_TYPEINFO_NAME): Add + definition. + + * include/cppunit/TestCaller.h: + * include/cppunit/extensions/TypeInfoHelper.h: + * include/cppunit/extensions/TestSuiteBuilder.h: + * include/cppunit/extensions/HelperMacros.h: + * src/cppunit/TypeInfoHelper.cpp: + * src/cppunit/TestFactoryRegistry.cpp: + * src/cppunit/TestCase.cpp (toString): + Switch from CPPUNIT_USE_TYPEINFO to CPPUNIT_USE_TYPEINFO_NAME. + + * src/cppunit/TestAssert.cpp: Remove include of estring.h. + + * configure.in: Invoke AC_PROG_CC to workaround a automake + bug. Move probes for CC/CXX ahead of the libtool macros. + + * examples/hierarchy/Makefile.am: + * examples/cppunittest/Makefile.am: + * src/cppunit/Makefile.am (INCLUDES): Search + $(top_builddir)/include for . + +2001-06-27 Baptiste Lepilleur + + * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp: + moved dll copy from post-build to custom build setting, so that the + dll is copied even if the CppUnitTestApp was not modified. + + * examples/msvc6/TestPlugIn/: a new example of test plug in. + + * src/msvc6/TestRunner/ListCtrlFormatter.* + * src/msvc6/TestRunner/ListCtrlSetter.*: + added, helper to manipulate list control. + + * src/msvc6/TestRunner/TestRunnerDlg.*: change to make the error list + more compact. text moved to string resources. icons added for typ + test tfailure type. + + * src/msvc6/TestRunner/MostRecentTests.*: added, classes that will + replace the current implementation of MRU test which make it hard + to subclass the dialog. + + * src/msvc6/TestRunner/res/errortype.bmp: added, bitmap with error + types (failure and error). + + * src/msvc6/TestPlugInRunner/: A test runner to run test plug in. + Test plug in are DLL that publish a specified plug in interface. + Those DLL are loaded and reloaded by the TestPlugInRunner to run + tests. This remove the need to wrap DLL with a executable to test + them. + + * src/cppunit/cppunit.dsp: + removed config.h from project + added Portability.h and config-msvc6.h + + * include/cppunit/config-msvc6.h: + undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST + + +2001-06-20 Steve M. Robbins + + * autogen.sh: Stop when tool fails. Try /usr/local/share/aclocal + only if aclocal fails without it. + + * README.CVS: New. + +2001-06-18 Steve M. Robbins + + * include/cppunit/Portability.h (CPPUNIT_USE_TYPEINFO): + (CPPUNIT_ENABLE_NAKED_ASSERT): + (CPPUNIT_HAVE_CPP_SOURCEANNOTATION): Fix setting of + default values. + +2001-06-17 Steve M. Robbins + + * configure.in: Require autoconf 2.50 or better. + +2001-06-17 Bastiaan Bakker + + * configure.in: moved config.h from include/ to config/ + + * configure.in: added AC_CREATE_PREFIX_CONFIG_H call + + * config/ac_create_prefix_config_h.m4: added + + * configure.in: removed include/cppunit/config.h from AC_OUTPUT + * include/cppunit/config.h.in: obsoleted by + AC_CREATE_PREFIX_CONFIG_H macro. + + * configure.in: + * config/bb_enable_doxygen.m4: moved doxygen stuff into + BB_ENABLE_DOXYGEN macro + + * include/cppunit/Makefile.am: removed config.h, added config-auto.h, + config-msvc6.h, config-bcb5.h, Portability.h + + * include/cppunit/Makefile.am: added dist-hook to exclude + config-auto.h from dist tar + + * include/cppunit/TestAssert.h: + * include/cppunit/extensions/TypeInfoHelper.h: + * include/cppunit/extensions/TestSuiteBuilder.h: + * include/cppunit/extensions/HelperMacros.h: + * src/cppunit/TypeInfoHelper.cpp: + * src/cppunit/TestRegistry.cpp: + * src/cppunit/TestFactoryRegistry.cpp: + * src/cppunit/TestCase.cpp: replaced #include of with + + + * src/cppunit/TypeInfoHelper.cpp: use new macro name + CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST + + +2001-06-12 Baptiste Lepilleur + + * include/cppunit/NotEqualException.h + * src/cppunit/NotEqualException.h: + Fixed constructor and operator = (aren't unit test nice?). Added + methods expectedValue() and actualValue(). + + * include/cppunit/TestAssert.h: + * src/cppunit/TestAssert.cpp: + Use NotEqualException to report equality failure. + + * src/cppunit/TestFactoryRegistry.cpp: fixed makeTest(). It did not use m_name for + naming the suite. + + * src/cppunit/TestResult.cpp: + Report expect/was on different line for assertEquals failure. + + * examples/cppunittest/NotEqualExceptionTest.*: added unit tests for + NotEqualException. + + * examples/cppunittest/OrthodoxTest.*: operator ! use explicit construction. + + * examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp: modified so that the dialog + is not displayed after the tests are run. + +2001-06-11 Steve M. Robbins + + * examples/cppunittest/TestResultTest.cpp (testAddTwoErrors, + testAddTwoFailures): Replace vector::at() with more portable + vector::operator[]; GCC doesn't have the former. + + * include/cppunit/extensions/TestDecorator.h (countTestCases): + Declare return type. + + * src/cppunit/Makefile.am (libcppunit_la_SOURCES): Add + TestAssert.cpp, RepeatedTest.cpp. + + * include/cppunit/TestCaller.h (NoExceptionExpected): Fix + constructor name. + +2001-06-11 Baptiste Lepilleur + + * include/cppunit/Exception.h: now inherit from std::exception + instead of ::exception. Added clone(), type(), and isInstanceOf() + methods for subclassing support. Changed UNKNOWNLINENUMBER type to + long for consistence with lineNumber(). + + * include/cppunit/NotEqualException.h: addded, exception to be + used with assertEquals(). + + * include/cppunit/TestAssert.h: changed TestAssert into a + namespace instead of a class. This remove the need of template + member methods and does not cause compiler internal error on + VC++. Macro CPPUNIT_ASSERT_MESSAGE has been added to fail test + with a specified message. + + * include/cppunit/TestCaller.h: added "Expected exception" + support. Based on Tim Jansen patch (#403745), but use a traits + instead of RTTI to distingh between "No expected exception" and + "Excepted exception". Exception type name is reported using RTTI + if CPPUNIT_USE_TYPEINFO is defined. + + * include/cppunit/extensions/HelperMacros.h: static method suite() + implemented by CPPUNIT_TEST_SUITE_END macro now returns a + TestSuite instead of a Test. + + * include/cppunit/extensions/RepeatedTest.h: corrected + countTestCases, operator = declaration. + + * include/cppunit/extensions/TestDecorator.h: removed const from + run() method. Did not match run() declaration of Test class. + + * include/cppunit/extensions/TestFactory.h: fixed a comment. + + * include/cppunit/extensions/TestSetup.h: corrected run() method + declaration. Methods setUp() and tearDown() were not declared + virtual. + + * include/cppunit/extensions/TestSuiteBuilder.h: added a method + addTestCaller() which take a pointer on a fixture. + + * include/cppunit/NotEqualException.cpp: addded, exception to be + used with assertEquals(). + + * src/cppunit/RepeatedTest.cpp: added to reduce header dependency + (TestResult.h was missing). + + * src/cppunit/TestAssert.cpp: added to put non template functions + there. + + * src/cppunit/TestCase.cpp: added std:: prefix to catch + (exception& e). Integrated a modified version of Tim Jansen patch + (#403745) for TestCase to make the unit test (TestCaseTest) + pass. If the setUp() fail then neither the runTest() nor the + tearDown() method is called. + + * examples/examples.dsw: added cppunittest projects to workspace. + + * examples/cppunittest/TestResultTest.*: renamed + TestListenerTest.* + + * examples/cppunittest/*: added unit tests for: HelperMacros, + TestAssert, TestCaller, TestCase, TestFailure, TestResult, + TestSuite, TestDecoratorTest, TestSetUp, RepeatedTestTest, + Orthodox, Exception. + +2001-06-05 Baptiste Lepilleur + + * src/cppunit/TypeInfoHelper.cpp: removed #include , + cppunit/config.h was already included. + + * src/cppunit/cppunit.dsp: removed TestAssert.cpp from project. + + * added/updated .cvsignore files for beter handling of windows + projects. + + * added include/cppunit/config.h with a default configuration for + VC++ 6.0. + + * include/cppunit/.cvsignore: removed config.h from the list of + ignored file. + + * renamed VC++ configurations without RTTI from "Debug No + CU_USE_TYPEINFO" to "Debug Crossplatform". + + * include/cppunit/TestAssert.h: added include for fabs(). + +2001-06-02 Steve M. Robbins + + * src/cppunit/Exception.cpp: Remove unnecessary namespace + declaration; it confuses Doxygen. + +2001-06-02 Steve M. Robbins + + * configure.in: Add AC_CXX_STRING_COMPARE_STRING_FIRST. + + * autogen.sh: Add "-I config" to aclocal flags, to pick up + the new .m4 files. + + * config/ac_cxx_namespaces.m4: New. Taken from + http://cryp.to/autoconf-archive. + + * config/ac_cxx_string_compare_string_first.m4: New. Detect + if std::string::compare() takes string argument first. + +2001-06-02 Steve M. Robbins + + * include/cppunit/TestAssert.h: Declare generic assertion_traits + class. Replace notEqualsMessage functions for long and double by + a generic, template function. Replace assertEquals for longs by a + generic template function. Inline all class methods. Define new + assertion macros CPPUNIT_ASSERT, CPPUNIT_ASSERT_EQUAL, and + CPPUNIT_ASSERT_DOUBLES_EQUAL; the old names are available by + editing . + + * src/cppunit/TestAssert.cpp: Removed. Move code to inline + functions. + + * config/ac_cxx_rtti.m4: New. Taken from + http://cryp.to/autoconf-archive. + + * include/cppunit/config.h.in: New. Input file for installable, + generated config.h file. + + * configure.in: Use AC_CXX_RTTI; generate include/cppunit/config.h. + + * include/cppunit/extensions/HelperMacros.h: + * include/cppunit/extensions/TestSuiteBuilder.h: + * include/cppunit/extensions/TypeInfoHelper.h: + * src/cppunit/TestCase.cpp: + * src/cppunit/TestFactoryRegistry.cpp: + * src/cppunit/TypeInfoHelper.cpp: + Use "#if CPPUNIT_USE_TYPEINFO" rather than "#ifdef". + + * src/cppunit/TypeInfoHelper.cpp: Allow for std::string::compare() + that takes the string in the first argument. + + * doc/cookbook.html: + * examples/cppunittest/TestCallerTest.cpp: + * examples/cppunittest/TestResultTest.cpp: + * examples/hierarchy/BoardGameTest.h: + * examples/hierarchy/ChessTest.h: + * examples/msvc6/HostApp/ExampleTestCase.cpp: + * include/cppunit/TestCase.h: + * include/cppunit/extensions/Orthodox.h: + Replace assert by CPPUNIT_ASSERT. + Replace assertLongsEqual by CPPUNIT_ASSERT_EQUAL. + Replace assertDoublesEqual by CPPUNIT_ASSERT_DOUBLES_EQUAL. + + * * (CU_TEST_SUITE, CU_TEST, CU_TEST_SUITE_END, + CU_TEST_SUITE_REGISTRATION): Replace prefix CU_ with CPPUNIT_. + + * examples/cppunittest/.cvsignore: Add UNIX generated files. + +2001-06-01 Bastiaan Bakker + + * examples/cppunittest/Makefile.am: added + + * configure.in: added examples/cppunittest/Makefile to AC_OUTPUT. + + * examples/cppunittest/TestCallerTest (suite), + examples/cppunittest/TestResultTest (suite): fixed 'ISO C++ + forbids taking the address of a bound member function to form + a pointer to member function' bug reported by g++. + + * examples/cppunittest/TestCallerTest (suite), + examples/cppunittest/TestResultTest (suite): removed dependency on + RTTI. + +2001-06-01 Baptiste Lepilleur + + * added project cppunittest to examples/: unit tests to test cppunit. + The main file is CppUnitTestMain.cpp. Unit tests have been implemented + for TestCaller and TestListener. + + * added project CppUnitTestApp to examples/msvc6: graphical runner + for cppunittest. + + * added TestListener to TestResult. It is a port of junit + TestListener. + + * updated some .cvsignore to ignore files generated with VC++. + +2001-05-30 Bastiaan Bakker + + * src/cppunit/TestCase.cpp (toString): put type_info in std + namespace and inside CU_USE_TYPEINFO ifdef. + +2001-05-29 Steve M. Robbins + + * examples/hierarchy/main.cpp: Remove extraneous includes. + + * src/cppunit/TextTestResult.cpp (addError, addFailure): Do not + emit a newline. + + * include/cppunit/extensions/HelperMacros.h: Rework documentation. + (CU_TEST_SUITE): Move definition of member function suite() ... + (CU_TEST_SUITE_END): ... to here. + (CU_TEST): Use '&' to take address of member function + "testMethod". + + * include/cppunit/extensions/AutoRegisterSuite.h: Declare "factory" + as a TestFactory*. + +2001-05-28 Steve M. Robbins + + * doc/other_documentation.dox: Don't include "CppUnit" in + anchor text, since Doxygen puts its own anchor around it. + + * doc/Makefile.am (html/index.html): Depend on + other_documentation.dox. + + * doc/Doxyfile.in (EXCLUDE): Move config.h and estring.h to + EXCLUDE_PATTERNS; they were not being excluded. + + * ChangeLog: Reformat all entries to start with . See + for change log + format. + + * doc/cookbook.html: Update all code examples, except for TestRunner + section. + +2001-05-23 Baptiste Lepilleur + + * Updated CU_TEST_SUITE macro documentation. It is now stated + explicitly that you do not need to specify template parameter as + macro argument. The documentation example has been updated to + reflect that. + +2001-05-23 Bastiaan Bakker + + * autogen.sh: added '--add-missing' option to automake. + * autogen.sh: added '--force' option to libtoolize and removed + '--copy'. + * config: removed generated files from CVS. + +2001-05-20 Baptiste Lepilleur + + * Fixed bug #424320 (VC++ TestRunner): access violation caused by + NULL pointer in history list. NULL pointer are not added to the + history anymore. + +2001-05-19 Baptiste Lepilleur + + * Added some items to the TODO list for VC++ TestRunner. + + * "Debug" configuration is now the default configuration in VC++ + project. + + * Modified sort order in the test browser of VC++ TestRunner so + that tests are in the same order as in the suite. Suites are still + sorted alphabetically. + + * Merged Steve M. Robbins patch to replace assertImplementation + with assert in hierarchy example. + + * Added a TextTestRunner to runner tests. It is based on Michael + Feather's version, but have been rewriten. + + * Removed traces that printed the test name in TextTestResult + while running. + + * Added the test name to error and failure report in + TextTestResult. + + * Updated hierarchy example to use TextTestRunner. + +2001-05-18 Baptiste Lepilleur + + * Symbol CU_USE_TYPEINFO must be defined instead of USE_TYPEINFO + to compile RTTI. + + * Added back default constructor to TestSuiteBuilder which use + RTTI. It is available only if CU_USE_TYPEINFO is defined. + + * Moved TypeInfoHelper.h from src/cppunit to + include/cppunit/extensions. + + * Macro CU_TEST_SUITE in HelperMacros.h now use TestSuiteBuilder + default constructor if CU_USE_TYPEINFO is defined, otherwise it + use the type name given to the CU_TEST_SUITE macro. + + * TestFactoryRegistry::registerFactory(factory) now generate a + dummy name based on a serial number instead of using RTTI. The + macro CU_TEST_SUITE_REGISTRATION and class AutoRegisterSuite can + now when CU_USE_TYPEINFO is not defined. + + * Added a new Configuration named "Debug Without CU_USE_TYPEINFO" + to msvc6 projects. The flag CU_USE_TYPEINFO is not defined in that + configuration. + +2001-05-17 Steve M. Robbins + + * Makefile.am (dist-hook): Copy files relative to $(top_srcdir). + + * doc/Makefile.am: Generated doc files depend on Doxyfile. + + * doc/Doxyfile.in: Use autoconf substitutions in file names. + + * examples/hierarchy/Makefile.am (check_PROGRAMS): Build hierarchy + with "make check", not "make all". + + * examples/hierarchy/Makefile.am (INCLUDES): + + * src/cppunit/Makefile.am (INCLUDES): Search in + $(top_srcdir)/include. + + * Added .cvsignore files. + +2001-05-16 Bastiaan Bakker + + * Merged Debian packaging support files by Christian Leutloff from + debian package version 1.5.4-2. Added make target 'debian' for + debian package creation. + +2001-05-09 Bastiaan Bakker + + * Release as 1.5.5. + + * Finished CppUnitW 1.2 merge. Removed RTTI depency from + TestSuite. Added TestCaller constructor for calling methods in + existing TestCases. + +2001-04-29 Bastiaan Bakker + + * Merged Baptiste Lepilleurs CppUnitW 1.2. Some differences: + TypeInfo stuff (in TestSuite) compiled in only if USE_TYPEINFO is + set. TestSuite.getTests now returns a const ref instead of taking + a ref as parameter. Removed auto_ptr stuff from + TestFactoryRegistry: auto_ptr cannot be used in containers. + +2001-04-28 Bastiaan Bakker + + * Merged MSVC++ specific TestRunner and example adapted from + Micheal Feathers version by Baptiste Lepilleur. + + * Moved cppunit subdir into src. + +2001-04-24 Bastiaan Bakker + + * Merged Baptiste Lepilleurs patch for TestRegistry: now TestCases + do not automatically register with the Registry anymore. + + * Added extension headers from Micheal Feathers port to + include/cppunit/extensions. + +2001-04-19 Bastiaan Bakker + + * Added MSVC++ workspace and project files, submitted by Baptiste + Lepilleur. + +2001-04-15 Bastiaan Bakker + + * Moved public headers from cppunit into new subdir + include/cppunit. This should make more clear which headers are + used internally only (like estring.h). + + * Moved autoconf auxiliary stuff into new subdir config, to make + the top dir less crowded. + + * Prefixed std:: to cerr, cout and endl. + +2001-04-14 Bastiaan Bakker + + * Release as 1.5.4 + + * Added support for RPM generation. + + * Added autoconf support for Doxygen document generation: Doxygen + and GraphViz dot are automatically detected and LaTeX and HTML can + be switch on or off. + + * cppunit/TextTestResult.cpp: changed cout to stream. Fixes bug + #232636 + + * cppunit/TextTestReulst.cpp: add '#include '. Fixes + bug #223290 + + * cppunit/*.cpp: removed bogus 'inline' specifiers. Fixes bug + #224542 and #223291. + + * doc/header.html: corrected link to CppUnit project page Fixes + bug #414073 + + * cppunit/*.cpp, examples/hierarchy/main.cpp: removed all 'using + namespace ...' occurences. + +2001-01-31 Tim Jansen + + * cppunit/TestCase.cpp, cppunit/TestCase.h, cppunit/TestSuite.h, + cppunit/TestSuite.cpp: applied patch #402271 by bwithrow. Fixes + bug #220207 + + * cppunit/TestSuite.cpp (deleteContents): clear vector after + contents have been deleted (so there are no invalid pointers in + the vector) Patch #403540 / #403542 + + * cppunit/TestCaller.h: create Fixture with empty constructor so + that only the TestCaller but not the Fixture instance is + registered in the TestRegistry Patch #403541 / #403542 + + * examples/hierarchy/BoardGameTest.h, + examples/hierarchy/ChessTest.h, examples/hierarchy/main.cpp: + initialize example TestCases with TestSuite so that the + TestCallers are registered in the TestRegistry Patch + #403542. Fixes bug #415249 + + * cppunit/TestCaller.h, cppunit/TestCase.cpp, cppunit/TestCase.h: + changed documentation; made hopefully clearer which constructor + registers the instance in the TestRegistry; corrected syntax in + code example Patch #403542. diff --git a/lib/cppunit-1.10.0/CodingGuideLines.txt b/lib/cppunit-1.10.0/CodingGuideLines.txt new file mode 100644 index 0000000000..5651ee8027 --- /dev/null +++ b/lib/cppunit-1.10.0/CodingGuideLines.txt @@ -0,0 +1,61 @@ +CppUnit's coding guidelines for portability: +-------------------------------------------- + +- don't explicitly declare CppUnit namespace, instead use macro + CPPUNIT_NS_BEGIN and CPPUNIT_NS_END. + +- don't explicitly use 'CppUnit' to refer to class in CppUnit namespace, + instead use macro CPPUNIT_NS which expands to either 'CppUnit' or + nothing depending on the configuration. + +- don't use the 'using directive', always use full qualification. For STL, + always use std::. + +- don't use C++ style cast directly, instead use CppUnit's cast macro + (CPPUNIT_CONST_CAST). + +- don't use the mutable keyword, instead do a const cast. + +- don't use the typename keyword in template declaration, instead use 'class'. + +- don't make use of RTTI (typeid) or dynamic_cast mandatory. + +- don't use STL container directly, instead use CppUnit's wrapper located + in include/cppunit/portability. This help support compilers that don't + support default template parameter and require an allocator to be + specified. + +- don't use default template parameters. If needed, use STLPort wrapper + technic (see include/cppunit/portability/). + +- don't use templatized member functions (template method declared inside a + class), instead declares them as simple template functions (even + mainstream compiler such as VC++ 6 as trouble with them). + +- don't use default parameter value in template function. Not supported + by all compiler (on OS/390 for instance). + +- don't use STL container at() method, instead use the array accessor []. + at() is not supported on some gcc versions. + +- dereferencing containers must be done by (*ref_ptr).data instead of + ref_ptr->data. + +In brief, it should be possible to compile CppUnit on a C++ compiler that do +not have the following features: +- C++ style cast +- mutable and typename keyword +- RTTI +- template default parameters +- templatized member functions (that is a template function declared within a + class). +- namespace + +As such, usage of those features should always be optional. + +Following those guidelines should allow to compile on most compilers, as long +as STL are available (in std namespace or not), with some form of strstream and +iostream, as well as exception support. + +-- +Baptiste Lepilleur diff --git a/lib/cppunit-1.10.0/INSTALL b/lib/cppunit-1.10.0/INSTALL new file mode 100644 index 0000000000..666ffd9f8a --- /dev/null +++ b/lib/cppunit-1.10.0/INSTALL @@ -0,0 +1,226 @@ +Basic Installation +================== + + These are generic installation instructions. + + 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 only 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. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. 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. + +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 variables by setting +them in the environment. You can do that on the command line like this: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Environment 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 must use a version of `make' that +supports the `VPATH' variable, such as 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 `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have 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. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' 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. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it cannot guess the host 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 host type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option 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'. In this case, you should also specify the +build platform with `--build=TYPE', because, in this case, it may not +be possible to guess the build platform (it sometimes involves +compiling and running simple test programs, and this can't be done if +the compiler is a cross compiler). + +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. + +Environment 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 + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--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. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/lib/cppunit-1.10.0/INSTALL-WIN32.txt b/lib/cppunit-1.10.0/INSTALL-WIN32.txt new file mode 100644 index 0000000000..428bff0cd1 --- /dev/null +++ b/lib/cppunit-1.10.0/INSTALL-WIN32.txt @@ -0,0 +1,198 @@ +Frequently Asked Questions: See doc/FAQ + + +At the current time, the only supported WIN32 platform is +Microsoft Visual C++. You must have VC++ 6.0 at least. + +Quick Steps to compile & run a sample using the GUI TestRunner: +- Open examples/examples.dsw in VC++ (contains all the samples) +- Make HostApp the Active project +- Compile +- in VC++, Tools/Customize.../Add-ins and macro files/Browse... +- select the file lib/TestRunnerDSPlugIn.dll and press ok to register + the add-ins (double-click on failure = open file in VC++). +- Run the project + + +Project build Target: +--------------------- + +Framework & tools: + +* cppunit (cppunit.lib) : unit testing framework library, the one you use +to write unit tests. + +* cppunit_dll(cppunit_dll.dll/lib) : same as above, but build as a DLL. + +* DllPlugInTester(DllPlugInTester.exe) : test plug-in runner executable. +Use this to test DLL in your post-build step, or debug them. + +* TestRunner (testrunner.dll) : a MFC extension DLL to run and browser unit +tests from a GUI. + +* DSPlugIn (lib/TestRunnerDSPlugIn.dll) : a VC++ add-in used by +testrunner.dll. If you double-click on a failure in the MFC TestRunner, +a running instance of VC++ will open the file and highlight the line. + +* TestPlugInRunner : (Warning: experimental) a VC++ +application to run test plug-in. A test plug-in is a DLL that publish a +specified interface. This application is still incomplete (the auto-reload +feature is missing). + +All libraries are placed in the lib/ directory. + + +Examples: +--------- + +* CppUnitTestMain : the actual test suite use to test CppUnit. Use a +TextTestRunner, and post-build testing with CompilterOutputter. Configuration +to link against cppunit static library and cppunit dll library. + +* CppUnitTestApp : contains the same test suite as CppUnitTestMain, but +run them using the MFC TestRunner. + +* hierarchy : a sample demonstrating how to sublcass test (you might rather +want to use HelperMacros.h and the CPPUNIT_TEST_SUB_SUITE macro which does +it in a 'cleaner' way. That sample has not been updated for a long time). + +* HostApp : a sample using the MFC TestRunner demonstrating different test +failure. Also demonstrates the MFC Unicode TestRunner. + +* Money : an example that come along with the Money article of the +documentation. Probably what you want to look at if you are a newbie. + + +Configuration: +-------------- + +CppUnit and TestRunner comes with 3 configurations. + +* Release (): Multihtreaded DLL, release mode +* Debug (d): Debug Multithreaded DLL, debug mode +* Unicode Release (u): Unicode Multihtreaded DLL, release mode +* Unicode Debug (ud): Unicode Debug Multithreaded DLL, debug mode + +For CppUnit, when building as dll, "dll" is appended to the 'suffix'. + +The letters enclosed in brackets indicates the suffix added to +the library name. For example, the debug configuration cppunit static library +name is cppunitd.lib. The debug configuration cppunit dll name is cppunitd_dll.lib. + + +Building: +--------- + +* Open the src/CppUnitLibraries.dsw workspace in VC++. +* In the 'Build' menu, select 'Batch Build...' +* In the batch build dialog, select all projects and press the build button. +* The resulting libraries can be found in the lib/ directory. + + +Testing: +-------- + +* Open the workspace examples/Examples.dsw. +* Make CppUnitTestApp the active project. +* Select the configuration you build the library for. +* Compile and run the project. The TestRunner GUI should appear. + + +Libraries: +---------- + +All the compiled libraries and DLL can be found in the 'lib' directory. +Most libraries can be build from src/CppUnitLibraries.dsw workspace. + +lib\: +cppunit.lib : CppUnit static library "Multithreaded DLL" +cppunitd.lib : CppUnit static library "Debug Multithreaded DLL" +cppunit_dll.dll : CppUnit dynamic library (DLL) "Multithreaded DLL" +cppunit_dll.lib : CppUnit dynamic import library "Multithreaded DLL" +cppunitd_dll.dll : CppUnit dynamic library (DLL) "Debug Multithreaded DLL" +cppunitd_dll.lib : CppUnit dynamic import library "Debug Multithreaded DLL" +qttestrunner.dll : QT TestRunner dynamic library (DLL) "Multithreaded DLL" +qttestrunner.lib : QT TestRunner import library "Multithreaded DLL" +testrunner.dll : MFC TestRunner dynamic library (DLL) "Multithreaded DLL" +testrunner.lib : MFC TestRunner import library "Multithreaded DLL" +testrunnerd.dll : MFC TestRunner dynamic library (DLL) "Debug Multithreaded DLL" +testrunnerd.lib : MFC TestRunner import library "Debug Multithreaded DLL" +testrunneru.dll : MFC Unicode TestRunner dynamic library (DLL) "Multithreaded DLL" +testrunneru.lib : MFC Unicode TestRunner import library "Multithreaded DLL" +testrunnerud.dll : MFC Unicode TestRunner dynamic library (DLL) "Debug Multithreaded DLL" +testrunnerud.lib : MFC Unicode TestRunner import library "Debug Multithreaded DLL" +TestRunnerDSPlugIn.dll : The add-in you register in VC++. + +Notes that when you are using CppUnit DLL (cppunit*_dll.dll), you must link +against the associated import library and define the pre-processor symbol +CPPUNIT_DLL in your project. + + +Tools: +------ + +CppUnit provides a generic test runner for test plug-in: DllPlugInTester. +It can be found in the lib/ directory. It requires cppunit*_dll.dll + +lib/: +DllPlugInTester_dll.exe : test plug-in runner, "Multithreaded DLL", cppunit_dll.dll +DllPlugInTesterd_dll.exe : test plug-in runner, "Debug Multithreaded DLL", cppunitd_dll.dll +DllPlugInTester.exe : test plug-in runner, "Multithreaded DLL", static link cppunit.lib +DllPlugInTesterd.exe : test plug-in runner, "Debug Multithreaded DLL", static link cppunitd.lib + +Notes that the DllPlugInTester(d).exe version of this tools does not allow +to use the automatic test registration that comes along with test plug-in. +You probably don't want to use them unless you really now what you are doing. + + +Using CppUnit: +-------------- + +* Writing unit tests: + To write unit tests, you need to link against cppunitXX.lib, where + XX is the chosen configuration suffix letters. + CppUnit include directory must be in the include search path. + You can do that by adding the include directory in + Project Settings/C++/Preprocessor/Additional include directories, + or Tools/Options/Directories/Include. + + Quick steps: + - link lib/cppunitXX.lib + - include/ must be in the include search path + +* Using the TestRunner GUI: + To use the test runner GUI you need to link against testrunnerXX.lib + and cppunitXX.lib, where XX is the chosen configuration suffix + letters. testrunner.dll must be in the path when your program is + run (the Debug/Release directory, your project dsp directory, or + in a directory specified in the PATH environment variable). + One of the easiest way to do that is to either add a post-build + command or add the testrunner.dll which is in the lib/ directory + to your project and define a custom build step that copy the + dll to your "Intermediate" directory (Debug or Release usually). + + Since the TestRunner GUI is a MFC extension DLL, it can access + the CWinApp of the using application. Settings are stored using + the application registry key. That means that "most recently used + test" settings are different for each application. + + Quick steps: + - link lib/cppunitXX.lib and lib/testrunnerXX.lib + - include/ must be in the include search path + - lib/testrunnerXX.dll must be available to run your project + +* Using the DSPlugIn: + You must register the plug-in with VC++. This is done in + Tools/Customize/Add-ins and Macro files, selecting browse and + selecting lib/TestRunnerDSPlugIn.dll (you can register the release + or the debug version, both work). + + If an instance of VC++ is running and you double-click on a failure, + VC++ will open the file and select the failure line. + +* Using the Test Plug In Runner: + Your DLL must export a function that implement the interface +defined in include/msvc6/testrunner/TestPlugInInterface.h. +See examples/msvc6/TestPlugIn/TestPlugInInterfaceImpl.* for an example. +Be warned, that runner is still experimental and have not been tested +much. diff --git a/lib/cppunit-1.10.0/INSTALL-unix b/lib/cppunit-1.10.0/INSTALL-unix new file mode 100644 index 0000000000..52b4d8b28c --- /dev/null +++ b/lib/cppunit-1.10.0/INSTALL-unix @@ -0,0 +1,121 @@ +See the file INSTALL for basic instructions. A short explanation for +each non-standard configure option follows. + + --disable-typeinfo-name + +Some output from the library will use a class name to distinguish +between tests. Normally, the Run-Time Type Information (RTTI) system +is used (specifically, the type_info::name() function) to generate the +name. Some compilers return human-readable names via this interface. +Other compilers do not. + +If your compiler does not generate a pleasing class name, specify +this option; the names will be generated by other means. The names +are used only for diagnostic purposes -- no functionality will be +lost nor gained by using this option. + + + + System Notes + ------------ + +cygwin +------ + +We have a number of reports that the shared library fails to +build properly. This may manifest itself as a failure to +build and run the test suite ("make check"). + +The workaround is to build a static library only. Configure using + + ./configure --disable-shared + +Then build normally. + + + +DEC alpha with cxx V6.1-029 and RogueWave STL +--------------------------------------------- + +A user reports that you have to issue the command + + export DEC_CXX="-D__USE_STD_IOSTREAM -D__STD_MS" + +in order to get ostream defined in namespace std. Otherwise, the +build reports the following error. + + Cannot define CppUnit::OStringStream + + + +If the compiler complains about 'exception', it may help to +re-run configure with + + CPPFLAGS='-U_OSF_SOURCE' + +on the configure line. Please let us know about your experiences +with this platform so that we can keep this information up-to-date. + + + +IRIX 6 / MIPSpro compiler +------------------------- + +The MIPSpro compiler requires the "-LANG:std" flag to enable the +standard C++ library. You must set the CC variable when you configure, +as follows + ./configure CC='CC -LANG:std' + +There is a bug in released versions of libtool prevents the -LANG flag +from being properly passed during the linking stage. To check if you +have this bug, examine the output of "grep 'no.*irix' libtool". If +you see a line like "no/*-*-irix*)" then you suffer from the bug. [A +fixed version of libtool will look like "no/*-*-irix* | /*-*-irix*)".] + +If your libtool script suffers from the bug, open it in an editor, +find the first line that contains "with_gcc", and change it to +read "with_gcc=no". + +The MIPSpro version 7.30 is able to compile cppunit proper, but will +fail to compile the example testsuite. I am assuming this is due +to known bugs in the compiler (7.30 is not the latest version). +The library appears to function OK. Please let us know if you find +it otherwise. + + +Solaris/Sun CC compiler +----------------------- + +Use the following configure line: + +./configure CXX=CC CXXFLAGS="-pta -instances=static -mt +-xtarget=generic -g -features=no%transitions +-xildoff" LD=CC LDFLAGS=-xildoff + +In Forte C++ compiler for Solaris all the linking has to go via +CC and ar, ld should not be run directly. For archive use CC -xar and +for linking and generating the .so use CC -G + +Notes: CC 5.5 don't need that much flag to compile correctly. Though, I'm not +sure what are the required one. + + +AIX +--- + +./configure --disable-shared + +The autogen tools don't seem to generate correctly script to handle dynamic linking. +If anyone know how to get it working, please contact us. + + +HP-UX +----- +Use the following options with configure to +enable the use of aCC and cc for the compilation of +CppUnit: +./configure --enable-hpuxshl CC=cc CXX=aCC CXXFLAGS="-AA" + +AA sets all the necessary flags to enable namespaces, +stl v2,.... + diff --git a/lib/cppunit-1.10.0/Makefile.am b/lib/cppunit-1.10.0/Makefile.am new file mode 100644 index 0000000000..9a88a6afac --- /dev/null +++ b/lib/cppunit-1.10.0/Makefile.am @@ -0,0 +1,75 @@ +AUTOMAKE_OPTIONS = 1.4 +ACLOCAL_AMFLAGS = -I config + +SUBDIRS = src include examples doc + +bin_SCRIPTS = cppunit-config +man_MANS = cppunit-config.1 + + +EXTRA_DIST = BUGS INSTALL-unix INSTALL-WIN32.txt CodingGuideLines.txt \ + cppunit-config.1 \ + cppunit.m4 cppunit.spec.in cppunit.spec \ + $(m4sources) \ + contrib/msvc/CppUnit.WWTpl \ + contrib/msvc/readme.txt \ + contrib/msvc/AddingUnitTestMethod.dsm \ + contrib/bc5/bcc-makefile.zip \ + contrib/xml-xsl/tests.xml \ + contrib/xml-xsl/report.xsl \ + src/CppUnitLibraries.dsw + +m4sources = \ + config/ac_create_prefix_config_h.m4 \ + config/ac_cxx_have_sstream.m4 \ + config/ac_cxx_have_strstream.m4 \ + config/ax_cxx_gcc_abi_demangle.m4 \ + config/ac_cxx_namespaces.m4 \ + config/ac_cxx_rtti.m4 \ + config/ac_cxx_string_compare_string_first.m4 \ + config/bb_enable_doxygen.m4 \ + config/ac_dll.m4 + +m4datadir = $(datadir)/aclocal +m4data_DATA = cppunit.m4 + +# Not sure what is creating the timestamp file. +# The so_locations file only happens on IRIX. +DISTCLEANFILES = config/stamp-h1 so_locations + +dist-hook: + cp -dpR $(top_srcdir)/src/msvc6 $(distdir)/src + cp -dpR $(top_srcdir)/src/qttestrunner $(distdir)/src + cp -dpR $(top_srcdir)/include/msvc6 $(distdir)/include + cp -dpR $(top_srcdir)/examples/msvc6 $(distdir)/examples + cp -dpR $(top_srcdir)/examples/qt $(distdir)/examples + mkdir $(distdir)/lib + find $(distdir) -name CVS | xargs rm -rf + perl -pi -e 's/\n/\r\n/g' `find $(distdir) -name '*.ds?'` \ + $(distdir)/contrib/msvc/* \ + $(distdir)/INSTALL-WIN32.txt + +.PHONY: release snapshot rpm docs doc-dist + +release: + rm -rf .deps */.deps + $(MAKE) distcheck + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-`date +%Y-%m-%d` + +rpm: dist + rpm -ta $(PACKAGE)-$(VERSION).tar.gz + mv -f /usr/src/redhat/SRPMS/$(PACKAGE)-$(VERSION)-*.rpm . + mv -f /usr/src/redhat/RPMS/*/$(PACKAGE)-$(VERSION)-*.rpm . + mv -f /usr/src/redhat/RPMS/*/$(PACKAGE)-doc-$(VERSION)-*.rpm . + +debian: + chmod a+x debian/rules + dpkg-buildpackage -rfakeroot -sa -us -uc -tc + +doc-dist: + $(MAKE) -C doc doc-dist + mv -f doc/$(PACKAGE)-docs-$(VERSION).tar.gz . + + diff --git a/lib/cppunit-1.10.0/Makefile.in b/lib/cppunit-1.10.0/Makefile.in new file mode 100644 index 0000000000..2e2b0add01 --- /dev/null +++ b/lib/cppunit-1.10.0/Makefile.in @@ -0,0 +1,743 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.4 +ACLOCAL_AMFLAGS = -I config + +SUBDIRS = src include examples doc + +bin_SCRIPTS = cppunit-config +man_MANS = cppunit-config.1 + +EXTRA_DIST = BUGS INSTALL-unix INSTALL-WIN32.txt CodingGuideLines.txt \ + cppunit-config.1 \ + cppunit.m4 cppunit.spec.in cppunit.spec \ + $(m4sources) \ + contrib/msvc/CppUnit.WWTpl \ + contrib/msvc/readme.txt \ + contrib/msvc/AddingUnitTestMethod.dsm \ + contrib/bc5/bcc-makefile.zip \ + contrib/xml-xsl/tests.xml \ + contrib/xml-xsl/report.xsl \ + src/CppUnitLibraries.dsw + + +m4sources = \ + config/ac_create_prefix_config_h.m4 \ + config/ac_cxx_have_sstream.m4 \ + config/ac_cxx_have_strstream.m4 \ + config/ax_cxx_gcc_abi_demangle.m4 \ + config/ac_cxx_namespaces.m4 \ + config/ac_cxx_rtti.m4 \ + config/ac_cxx_string_compare_string_first.m4 \ + config/bb_enable_doxygen.m4 \ + config/ac_dll.m4 + + +m4datadir = $(datadir)/aclocal +m4data_DATA = cppunit.m4 + +# Not sure what is creating the timestamp file. +# The so_locations file only happens on IRIX. +DISTCLEANFILES = config/stamp-h1 so_locations +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = cppunit.spec cppunit-config +SCRIPTS = $(bin_SCRIPTS) + +DIST_SOURCES = + +NROFF = nroff +MANS = $(man_MANS) +DATA = $(m4data_DATA) + + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = README ./config/config.h.in AUTHORS COPYING ChangeLog \ + INSTALL Makefile.am Makefile.in NEWS THANKS TODO aclocal.m4 \ + config/config.guess config/config.sub config/depcomp \ + config/install-sh config/ltmain.sh config/missing \ + config/mkinstalldirs configure configure.in cppunit-config.in \ + cppunit.spec.in +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: + +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): configure.in config/ac_create_prefix_config_h.m4 config/ac_cxx_have_sstream.m4 config/ac_cxx_have_strstream.m4 config/ac_cxx_namespaces.m4 config/ac_cxx_rtti.m4 config/ac_cxx_string_compare_string_first.m4 config/ac_dll.m4 config/ax_cxx_gcc_abi_demangle.m4 config/bb_enable_doxygen.m4 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config/config.h: config/stamp-h1 + @if test ! -f $@; then \ + rm -f config/stamp-h1; \ + $(MAKE) config/stamp-h1; \ + else :; fi + +config/stamp-h1: $(srcdir)/./config/config.h.in $(top_builddir)/config.status + @rm -f config/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config/config.h + +$(srcdir)/./config/config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) + touch $(srcdir)/./config/config.h.in + +distclean-hdr: + -rm -f config/config.h config/stamp-h1 +cppunit.spec: $(top_builddir)/config.status cppunit.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +cppunit-config: $(top_builddir)/config.status cppunit-config.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \ + $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \ + else :; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +man1dir = $(mandir)/man1 +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +m4dataDATA_INSTALL = $(INSTALL_DATA) +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(m4datadir) + @list='$(m4data_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(m4dataDATA_INSTALL) $$d$$p $(DESTDIR)$(m4datadir)/$$f"; \ + $(m4dataDATA_INSTALL) $$d$$p $(DESTDIR)$(m4datadir)/$$f; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(m4datadir)/$$f"; \ + rm -f $(DESTDIR)$(m4datadir)/$$f; \ + done + +# 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): + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +distdir = $(PACKAGE)-$(VERSION) + +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/. $(distdir)/./config $(distdir)/config $(distdir)/contrib/bc5 $(distdir)/contrib/msvc $(distdir)/contrib/xml-xsl $(distdir)/doc $(distdir)/src + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -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 $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | 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 + $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && 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 ../.. && $(mkinstalldirs) "$$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-gzip \ + && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' +distuninstallcheck: + @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 $(SCRIPTS) $(MANS) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) $(DESTDIR)$(m4datadir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +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) +distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: install-m4dataDATA install-man + +install-exec-am: install-binSCRIPTS + +install-info: install-info-recursive + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache +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: uninstall-binSCRIPTS uninstall-info-am \ + uninstall-m4dataDATA uninstall-man + +uninstall-info: uninstall-info-recursive + +uninstall-man: uninstall-man1 + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive dist dist-all dist-gzip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-recursive distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-binSCRIPTS \ + install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive \ + install-m4dataDATA install-man install-man1 install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-binSCRIPTS \ + uninstall-info-am uninstall-info-recursive uninstall-m4dataDATA \ + uninstall-man uninstall-man1 uninstall-recursive + + +dist-hook: + cp -dpR $(top_srcdir)/src/msvc6 $(distdir)/src + cp -dpR $(top_srcdir)/src/qttestrunner $(distdir)/src + cp -dpR $(top_srcdir)/include/msvc6 $(distdir)/include + cp -dpR $(top_srcdir)/examples/msvc6 $(distdir)/examples + cp -dpR $(top_srcdir)/examples/qt $(distdir)/examples + mkdir $(distdir)/lib + find $(distdir) -name CVS | xargs rm -rf + perl -pi -e 's/\n/\r\n/g' `find $(distdir) -name '*.ds?'` \ + $(distdir)/contrib/msvc/* \ + $(distdir)/INSTALL-WIN32.txt + +.PHONY: release snapshot rpm docs doc-dist + +release: + rm -rf .deps */.deps + $(MAKE) distcheck + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-`date +%Y-%m-%d` + +rpm: dist + rpm -ta $(PACKAGE)-$(VERSION).tar.gz + mv -f /usr/src/redhat/SRPMS/$(PACKAGE)-$(VERSION)-*.rpm . + mv -f /usr/src/redhat/RPMS/*/$(PACKAGE)-$(VERSION)-*.rpm . + mv -f /usr/src/redhat/RPMS/*/$(PACKAGE)-doc-$(VERSION)-*.rpm . + +debian: + chmod a+x debian/rules + dpkg-buildpackage -rfakeroot -sa -us -uc -tc + +doc-dist: + $(MAKE) -C doc doc-dist + mv -f doc/$(PACKAGE)-docs-$(VERSION).tar.gz . +# 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: diff --git a/lib/cppunit-1.10.0/NEWS b/lib/cppunit-1.10.0/NEWS new file mode 100644 index 0000000000..c4702179c0 --- /dev/null +++ b/lib/cppunit-1.10.0/NEWS @@ -0,0 +1,971 @@ + New in CppUnit 1.10.0 (same as 1.9.14): + -------------------------------------- + +* Assertions + + - Ported exception assertion macros from cppunit 2 to the 1.9.x series: + CPPUNIT_ASSERT_THROW, CPPUNIT_ASSERT_NO_THROW, + CPPUNIT_ASSERT_ASSERTION_FAIL, CPPUNIT_ASSERT_ASSERTION_PASS. + +* Deprecated: + + - The helper macros: CPPUNIT_TEST_FAIL & CPPUNIT_TEST_EXCEPTION have + been deprecated. Use the new exception assertion macros instead. + +* Bug Fix: + + - cppunit-config: bug #903363, missing -ldl from the output of + cppunit-config --libs. Fixed thanks Eric Blossom patch. + + - test plug-in(unix): Adding RTLD_GLOBAL allows test plug-ins + to provide symbols to shared objects they load themselves. + Thanks goes to Gareth Sylvester for this patch (#816563). + + + New in CppUnit 1.9.12: + --------------------- + +* Test Plug-in + + - added support contributed support for UNIX systems that + have libdld and not libdl (e.g. hp-ux). Contributed by + Abdessattar Sassi. + +* RTTI + + - TypeInfoHelper now used gcc c++ abi to demangle typeinfo name thanks to + Neil Ferguson contribution. + +* Bug Fix: + + - MFC TestRunner: integrated bug fix from Tim Threlkeld for bug + #610191 and #610162. Fixed assertion when minizing dialog + (bug #643612). + + - XMLOutputter: Fixed bug #676505: no space inserted between attributes + of XmlElement. + + - CppUnit portability: fixed many mistakes relating to compilation + without type info or namespace reported by Philip Craig. + + - Missing destructor with no throw specification for + DynamicLibraryManagerException. Bug #619059. + + - Fixed missing export for operator <<(TextTestResult). Bug #610119. + + - Missing include for typeinfo in TestNamer.h. Bug #662666. + +* Compilation + + - Fixed compilation issues for Borland C++ 6 and STLPort. Bug #694971, + #699794 and #662666. + + - Fixed compilation issues for AIX. + + - Fixed compilation issues for Visual C++ .NET 2002. + + - Fixed doxygen usage in mingw environment (space not allowed in + doxygen path). Bug #700730. + + - Fixed compilation issue for mingw (bug #711583). + + + New in CppUnit 1.9.10: + --------------------- + + - Major portability improvement + - Protector + - HelperMacros + - MFC TestRunner bug fixes + - Failure diagnostic + - Asserter + +* Major portability improvement: + + - Much work has been done to reduce C++ feature requirement to compile + CppUnit. It should now be possible to compile CppUnit on most + compilers, as long as STL are available (in std namespace or not), + with some form of strstream and iostream, as well as exception support. + See CodingGuideLines.txt for details. + +* Protector + + - Protector can be passed to the TestResult to 'protect' call to + setUp(), runTest() and tearDown() method. With this, it is easy to + capture exceptions which do not have std::exception as a base class, + such as CException or RWXMsg for example. TestResult and Protector + class documentation. Look at src/cppunit/DefaultProtector.cpp for + an example of implementation. + +* Helper macros + + - Mostly rewritten. It no longer use TestSuiteBuilder. A new object + TestSuiteBuilderContext was introduced. It is used to name test case, + create test fixture instance and add test to the fixture suite. It + is now much more easier to add custom test cases using + CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS. Should also prevent most + compability break concerning that macro. + + - Useful typedef are now public: TestFixtureType, ParentTestFixtureType. + + - New typedef for custom test method parameter: + typedef TestSuiteBuilderContext + TestSuiteBuilderContextType; + + - added support for abstract test fixture with + CPPUNIT_TEST_SUITE_END_ABSTRACT(). See documentation for further + detail. + +* Failure diagnostic + + - setUp() and tearDown() now provides a detailed diagnostic of the + failure (assertion, exception...) + + - If RTTI is allowed to extract type info, CppUnit will report the + actual exception type in the diagnostic. + +* Asserter: + + - A new AdditionalMessage class has been introduced. It is used for + assertion that takes an additional 'message' argument + (CPPUNIT_ASSERT_MESSAGE...). Since this macro has an implicit + constructor that take a string, which creates a Message with the + specified string as detail. That way, additional message can be a + single string or a complex Message object. See documentation for + example of use. + +* Bug Fix: + + - MFC TestRunner: bug #530426 (conflict between TestRunner and host + application's resources). A huge thanks to Steven Mitter for that one. + + - MFC TestRunner: Browse button is now disabled while running test. + +* Deprecated + + - CppUnit::TextUi::TestRunner moved to CppUnit::TextTestRunner. + - CppUnit::MfcUi::TestRunner moved to CppUnit::MfcTestRunner. + - CppUnit::QtUi::TestRunner moved to CppUnit::QtTestRunner. + +* Compatiblity break: + + - CppUnitTextUi::TestRunner, removed runTestByName() and runTest(). + - TestSuiteBuilder: removed templatized method + addTestCallerForException(). See implementation of + CPPUNIT_TEST_EXCEPTION implementation for an alternative. + - TestAssert: removed deprecated functions (those not using SourceLine) + assertImplementation(), assertNotEqualImplementation(), + assertEquals(). Moved non deprecated functions assertEquals() and + assertEquals() into CppUnit namespace. + - Plug-ins 'Parameters' typedef has been replaced by class + PlugInParameters. The method commandLine() returns what used to be in + Parameters[0]. This should avoid future compatibility break when the + parameters passing API will be defined. + - TestPlugIn::initialize() now takes a PlugInParameters in argument + instead of a Parameters. + - template void assertEquals() no longer has a default message + value (no impact, unless you used this function directly instead of + assertion macros). + - HelperMacros: renamed CPPUNIT_TEST_ADD to + CPPUNIT_TEST_SUITE_ADD_TEST. + - HelperMacros: removed CPPUNIT_TEST_CUSTOM. Instead use + CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS and call context.addTest() + passing the test that was returned. + - HelperMacros: renamed CPPUNIT_TEST_CUSTOMS to + CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS. Changed method signature to + static void aMethodName( TestSuiteBuilderContextType &context ). + You can replace the 3 previous parameters by context. (See + documentation for further detail). + + + + New in CppUnit 1.9.8: + --------------------- + + - New custom test macros for fixture suite + - Exception message are now structured + - Added detail field to MFC TestRunner + - New XmlDocument class to easily create new XML output format + - XmlOutputter customization + - Test plug-in XMLOutputter hook + - ClockerPlugIn example includes test time in XML output + - DllPlugInTester allows test plug-in to hook the XmlOutputter + - Configurable CompilerOutputter wrapping + +* New custom test macros + + - 3 new macros have been added for use when declaring test fixture suite: + - CPPUNIT_TEST_CUSTOM : to specify a method that returns an instance of + Test to add to the suite + - CPPUNIT_TEST_CUSTOM : to specify a method that add some tests to the + suite + - CPPUNIT_TEST_ADD : to add a test to the suite. Used this to create custom + CPPUNIT_TEST_xxx macros. + + See macros documentation for examples and details. + +* Exception message + + - Exception message are now stored in a Message object instead of a string. + A message is composed of two items: + - a short description (~20/30 characters) + - a list of detail strings + + The short description is used to indicate how the detail strings should be + interpreted. It usually indicates the failure types, such as + "assertion failed", "forced failure", "unexpected exception caught", + "equality assertion failed"... It should not contains new line characters + (\n). + + Detail strings are used to provide more information about the failure. It + can contains the asserted expression, the expected and actual values in an + equality assertion, some addional messages... Detail strings can contains + new line characters (\n). + + This change allow ouputters to deal with all failure the same way (there is + no special case for the equality assertion any more). + +* New XmlDocument class to easily create new XML output format + + - Classes XmlDocument and XmlElement where extracted from XmlOutputter. This + help writing outputters that use a completly different XML format. + + - XmlDocument represents a XML file, and XmlElement represents a XML element. + +* XmlOutputter customization + + - Xml output can be customized using XmlOutputterHook. To do so, subclass + XmlOutputterHook and register it to the XmlOutputter with addHook() before + call XmlOutputter::write(). + + Hook can be used to add some datas to the XmlDocument or the XmlElement of + a specific hook. Methods have been added to XmlElement to help navigating + and modifying the XmlDocument. + + See ClockerPlugIn example. + +* MFC TestRunner + + - The name of the test is displayed just before being run. + - Browse Test Hierarchy dialog is resizable. + - Better (and cleaner) handling of windows resizing + - Failure list now only show the short description of the failure. + - Edit field added to display the details of the selected failure. + +* MFC test plug-in runner (TestPlugInRunner): + + - command line: a dll name can be specified on the command after -testsuite: + example: TestPlugInRunnerd.exe -testsuite Simpled.dll + + - Layout configuration is stored/restored. + +* Test plug-in XML output Hook + + - TestPlugIn interface provides a mean for plug-in to register hook for + XML output. Practically, this allow plug-in to add specific data to the + output. See ClockerPlugIn example, which add timing datas to the xml + output. + +* DllPlugInTester: + + - added option -w / --wait to wait for the user to press a key before exiting. + + - plug-in can now provides XmlOutputterHook to add specific datas to the + XML ouput. See ClockerPlugIn example. + +* CompilerOutputter wrapping is parametrized + + - Wrap column can be set with setWrapColumn(). Default is now 79 instead of 80. + + - Wrapping can be disabled with setNoWrap(). + +* Examples: + + - ClockerPlugIn: the example now use the new XmlOutputterHook. Test time are + now included in the XML output. See examples/ClockerPlugIn/ReadMe.txt for + details. + +* Bug Fix: + + - CompilerOutputter: fixed wrapping issues (UT magic!) + + - DllPlugInTester: use ISO-LATIN1 encoding if none is given. Flag --xsl was + ignored. + + - MfcUi plug-in runner (TesTPlugInRunner): better handling of history when + loading and reloading a dll. + + - Qt Test Runner: minor bug fixes. Should compile on Unix. + + - XmlOutputter: use the default encoding if an empty string is given as + encoding + +* Compatibility Break: + + - CompilerOutputter: removed printNotEqualMessage() and printDefaultMessage(). + No longer needed since Exception message are processed in a generic way. + Removed wrap(). Extracted to StringTools. + + - Exception constructor takes a Message instead of a string. Notes that the + first argument in Message constructor is a short description, not the message. + Therefore, the change will usualy have the following form: + Exception( Message( "assertion failed", oldMessage ) ); + You may want to use Asserter functions instead of constructing and throwing + the exception manually. + + - TestPlugInAdapter: renamed TestPlugInDefaultImpl. + + - TestSuiteBuilder: removed default constructor. All remaining constructors + take an additional argument of type TestNamer used to specify the fixture + named and generate test case name. Remove template method + addTestCallerForException(). Use addTest() instead (see + CPPUNIT_TEST_EXCEPTION implementation). + + - TextTestResult: most printing method were removed. This task is now delegated + to TextOuputter. + + - XmlElement: renamed addNode() to addElement(). + + - XmlOutputter: removed methods writeProlog() and writeTestResult() which + are replaced by XmlDocument. Renamed makeRootNode() to setRootNode(). It + no longer returns the root node, but set the root node of the XML document. + + - XmlOuputter::Node: class has been extracted and renamed XmlElement. + +* Deprecated: + + - Asserter: all functions that use a string for the failure message. Construct + a Message instead (see Exception constructor compatiblity break and + Exception message feature). + + + New in CppUnit 1.9.6: + --------------------- + + - DllPlugInTester can be parametrized from command line + - Two test listener plug-in examples + - An 'hello world' example & getting started document : Money + - Contribution: generic makefile for Borland 5.5 free compiler. + - Bug fixes + +* DllPlugInTester: + + - Advanced command line to support miscellaneous listener outputer. + Parameters can now be passed to test plug-in: + + -c --compiler + Use CompilerOutputter + -x --xml [filename] + Use XmlOutputter (if filename is omitted, then output to cout or + cerr. + -s --xsl stylesheet + XML style sheet for XML Outputter + -e --encoding encoding + XML file encoding (UTF8, shift_jis, ISO-8859-1...) + -b --brief-progress + Use BriefTestProgressListener (default is TextTestProgressListener) + -n --no-progress + Show no test progress (disable default TextTestProgressListener) + -t --text + Use TextOutputter + -o --cout + Ouputters output to cout instead of the default cerr. + filename[="options"] + Many filenames can be specified. They are the name of the + test plug-ins to load. Optional plug-ins parameters can be + specified after the filename by adding '='. + [:testpath] + Optional. Only one test path can be specified. It must + be prefixed with ':'. See TestPath constructor for syntax. + + 'parameters' (test plug-in or XML filename, test path...) may contains + spaces if double quoted. Quote may be escaped with \". + + Some examples of command lines: +DllPlugInTesterd_dll.exe -b -x tests.xml -c simple_plugind.dll CppUnitTestPlugInd.dll + Will load 2 tests plug-ins (available in lib/), use the brief test + progress, output the result in XML in file tests.xml and also + output the result using the compiler outputter. + +DllPlugInTesterd_dll.exe ClockerPlugInd.dll="flat" -n CppUnitTestPlugInd.dll + Will load the 2 test plug-ins, and pass the parameter string "flat" + to the Clocker plug-in, disable test progress. Clocker being a test + listener plug-ins (it doesn't implements any tests, it just register + a TestListener), this is equivalent to say 'run all the test + of CppUnitTestPlugIn and use ClockerPlugIn as a TestLisener'. + +DllPlugInTesterd_dll.exe CppUnitTestPlugInd.dll :Core + Will run the test named "Core" (a suite in the present case ) of the + test plug-in. + +* Documentation + + - New getting started documentation. Not completed yet, but probably + a good complement to the current cookbook. Explore the creation + of the Money example. + +* Examples + + - Money (examples/Money): the 'hello world' example. Unit tests for + a simple Money class. + + - DllPlugInTesterTest (src/DllPlugInTester/DllPlugInTester.dsp): + unit tests for CommandLineParser. Not really an example, but only + slightly more complex than Money. + + - ClockerPlugIn (examples/ClockerPlugIn): a test listener plug-in + that track tests and test suites running time. Parameter: "flat" + for a reporting with a flattened tree. + + - DumperPlugIn (examples/DumperPlugIn): a test listener plug-in that + dump the test tree as it run. Paramater: "flat" for a reporting + with a flattened tree. + + - CppUnitTestPlugIn (examples/cppunitest/CppUnitTestPlugIn.dsp): + CppUnit's test suite as a test plug-in. + +* Contribution + + - Contributed by project cuppa team (http://sourceforge.jp/projects/cuppa/): + + - Makefile for CppUnit with Borland C++ 5.5 free compiler: does not + depend on a specific CppUnit version. + +* Compatiblity breaks + + - DllPlugInTester: (1.9.4 only), should add -c to DllPlugInTester + command line. + +* Bug Fix: + + - DynamicLibaryManager did not report the library name when loading a + a library. + + - BeosDynamicLibraryManager: fixed thanks to Shibu Yoshiki + ('cuppa' project team). + + - Broken build on Unix should be fixed for most (thanks to + Jeffrey Morgan). + + + New in CppUnit 1.9.4: + ---------------------- + + - More versatile, easier to make test plug-in. + - A PlugInManager to manage multiple test plug-ins. + - Crossplatform test plug-in runner. + - Crossplatform test plug-in example. + - A brief progress listener + - Easier test hierarchy creation + - Improved documentation. + - Tracking of test run start/end. + - Contribution: XML style sheet & borland 5.5 makefile. + - Help needed on the Unix side! + +* Buildling on Unix: + + - I did not get any feed back on the previous build issue on Unix. Using + a simple autobook example was useless to try to solve the problem. Here + is the issue: + + CppUnit library build fine, it is the example I'm having trouble with. + + Since the test plug-in have been added, CppUnit use the function + dlopen(), dlsym() and dlclose() on unix to load/unload the plug-in. + + Those functions apparently requires to link another library when + building an exectuable. Here is was should be done: + - linking against the said library for each example. + - generates the shared library for the examples/simple/simple_plugin + example (source files are ExampleTestCase.cpp, ExampleTestCase.cpp + and SimplePlugIn.cpp). + - if possible, makes the above optionnal if --disable-test-plug-in + is defined: + - don't link the dlXXX library + - don't compile the plug-in example + - add #define CPPUNIT_NO_TESTPLUGIN 1 to the config file + + Contact me on the mailing-list for more details. + +* TestPlugIn: + + - A simple fact I realised while testing: if you link your test plug-in + against the DLL version of cppunit (or shared library on Unix), then + test registered to the TestFactoryRegistry (it is what's hide behind + CPPUNIT_TEST_SUITE_REGISTRATION) are automatically shared. Changes + have been made to support that usage (CppUnit was crashing badly). + Using the TestFactoryRegistry provides much more flexiblity that + providing a single suite for the plug-in. As such: + + - CppUnit plug-in should be linked against the dll version of CppUnit library. + + - Plug-in should register their tests using the CPPUNIT_TEST_SUITE_xxx macros. + + - 'homemade' suite can still be registred to the TestFactoryRegistry that is + passed as parameter on plug-in initialization. Notes that you must + unregister those suites during plug-in uninitialization, otherwise on + destruction, the TestFactoryRegistry will attempt to destroy them... Your + plug-in would have been already unloaded... + + - Plug-in can accept parameters on initialization (notes that the Parameters + object is far from being stabilized, but whatever form it takes, it will be + a list of string). + + - Plug-in can register their one listener for a test run. This means that you + can extends 'DllPlugInTester' by creating test plug-in... This also means + than you can listen to startTestRun()/endTestRun() to do some global + setUp/tearDown (to initialize globales resources, such as COM...) + + - Why all this fuss around test plug-in ? Test plug-in are the incarnation of + an old concept: testable components... + +* PlugInManager: + + - The PlugInManager is used to load/unload plug-ins. It takes care of all + the 'plug-in' protocol and makes it easy to use multiple plug-ins at the + same time. It dispatches the addListener()/removeListener() message to + each plug-in. + +* Crossplatform test plug-in runner (src/DllPlugInRunner): + + - This application can be used to run your test plug-ins. It can load + multiple test plug-ins and run all or a specific test in the test + hierarchy returned by TestFactoryRegistry::getRegistry().makeTest(). + + - Plug-in loaded by the plug-in may also be custom TestListener. + + - It can be use for post-build check and to debug the plug-in. + + - Why use it? It keep you away from CppUnit API changes! + +* Easier test hierarchy creation (TestFactoryRegistry/HelperMacros): + + - added method addRegistry(name) to add a named registry to the registry. + see TestFactoryRegistry for an example of use. + + - added macros CPPUNIT_REGISTRY_ADD( which, to ) and + CPPUNIT_REGISTRY_ADD_TO_DEFAULT( which ) to create test hierarchy at static + initialization (in the spirit of CPPUNIT_TEST_SUITE_xxx() macros). + +* VerboseTestProgressListener: + + - A new TestListener that prints the test name before running it. Most useful when + a test crashing, mean a application crash. + +* Documentation: + + - More details about the test plug-in, how to use it, how does it works... + See module/Writing Test Plug-in. + +* Examples: + + - examAdded crossplatform simple example. Equivalent to VC++ HostApp example. + - examples/simple: a very simple example, demonstrating the use of CppUnit + with a single TestFixture. Demonstrate both how to build an application + using TestRunner, and how to build a test plug-in to use with the + test plug-in runner. + +* Contribution + + - Contributed by project cuppa team (http://sourceforge.jp/projects/cuppa/): + + - XML style sheet: transform CppUnit XML output into HTML. + - Makefile for CppUnit with Borland C++ 5.5 free compiler. + +* Behavior changes: + + - Test runner should call TestResult::runTest() to run the 'top level' test. This + will inform the TestListener of the test run start/end. + +* Compatiblity break: + + - TestFactoryRegistry don't own register test anymore. AutoRegisterSuite has + been updated to preverse its apparent behavior. It should be of concern + if you created and registered custom TestFactory. + + - Removed TextTestProgressListener::done(). No longer needed, it listens + for endTestRun(). + +* Compatiblity Break for 1.9.2 users: + + - TestPlugIn.h: CppUnitTestPlugIn as been completly rewritten. + + - TestPlugIn.h: macro CPPUNIT_PLUGIN_IMPLEMENT() don't take any arguments. + + - TestSuitePlugIn: removed. A similar functionnality is provided by + PlugInManager. + + - TestPlugInDefaultImpl: renamed TestPlugInAdapter. It does not implements + any default behavior anymore. + + - DllPlugInRunner: no longer support multiple specific tests. The test path must + be prefixed with ':'. Release and Debug configuration links against cppunit_dll. + +* Bug Fix: + + - Crash when linking CppUnit DLL within another DLL that registered test. Caused + by the destruction of tests registered to TestFactoryRegistry. Fixed by + providing a register/unregister interface and removing the ownership of + TestFactory to TestFactoryRegistry. + + + + New in CppUnit 1.9.2: + ---------------------- + + In short: + - Cleaner XML output + - Crossplatform Test plug-in + - TestPlugInSuite to wrap test plug-in + - More TestPlugIn documentation. + +* TestPlugIn: + - The test plug-in functionnality has been rewritten from scrash. + TestPlugIn related macro are now crossplatform (exporting the plug-in + function from the dynamic library...). + + - Class DynamicLibraryManager provides a generic way to access dynamic + library. Platform specific implementation provided for WIN32, unix, BeOs. + Can be very easily ported to new platform. + + - A More flexible and hopefully extensible interface has been introduced + (CppUnitPlugIn). + + - A default implementation using the test factory registry is provided + (TestPlugInDefaultImpl). Can be easily customized. + + - The one line test plug-in declaration was renamed CPPUNIT_PLUGIN_IMPLEMENT. + + See modules/Writing Test Plug-in documentation and examples/EasyTestPlugIn. + +* XmlOutputter: + + - XML output is now indented. Nodes that don't have children are one line + tag. The output can now easily be read. + +* Compatibility break: + + - class TestSucessListener was renamed to TestSuccessListener. + + - XmlOutput: renamed tag to + + - Global fix of the 'success' typo (was misspelled 'sucess'). Main impacts are listed + above, but check your own code in case you override some protected/private methods. + + - TestPlugInInterface (include/msvc6/TestPlugInInterface.h): this header and class + are now obsolete. You should use include/cppunit/plugin/TestPlugIn.h instead. + Macro CPPUNIT_TESTPLUGIN_IMPL have been replaced by CPPUNIT_PLUGIN_IMPLEMENT. + + - TestDecorator inherits Test instead of TestLeaf. + + - DllPlugInTester only run DLL implementing the new new TestPlugIn interface. + + + New in CppUnit 1.9.0: + ---------------------- + + In short: + - Exploration of the test hierarchy without RTTI support + - Utility methods to find a test in the hierarchy + - TestPath to store/load the path to a specific test in the hierarchy + - Generic TestRunner + - Style sheet support added to XML ouput. + - CompilerOutputter supports run-time parametrization of error location format. + - Tracking of test suite run. + - Debugging and post-build testing of DLL using DllPlugInTester. + - Easy creation a test plug-in and test plug-in new example + +* Test: + + - Exploration of the test hierarchy without RTTI support: + Added Test::getChildTestCount() and Test::getChildTestAt() to walk the test hierarchy + without RTTI. + + - Utility methods to find a test in the hierarchy: + Added Test::findTest(), Test::findTestPath() and Test::resolveTestPath(). + +* TestPath: + + - A new class that store the path to a specific test (list of pointer). Can be + converted into a string and constructed from a string. Typically used with + TestRunner. + +* TestListener: + + - Added startSuite() and endSuite() callback that are called before and after a + test suite runs its child tests. See TestListener for detail and new example. + +* CompilerOutputter: + + - Support run-time parametrization of compiler error format. Support for gcc error + format added. See CompilerOutputter::setLocationFormat(). + +* XmlOutputter: + + - Added style sheet support. + + - XML structure change (see Compatibility break) + +* DllPlugInTester: (src/msvc6/DllPlugInTester, in src/CppUnitLibraries.dsw) + + - An application to load a DLL test plug-in and run the specified test. Test + result are reported using a CompilerOutputter. It can be used for post-build + testing, but to debug DLL too! See examples/msvc6/TestPlugIn/TestPlugIn.dsp + which demonstrate both. + +* TestPlugInInterface (include/msvc6/TestPlugInInterface.h): + + - Easy creation a test plug-in with the new macro CPPUNIT_TESTPLUGIN_IMPL + that implements and exports everything for you. + See examples/msvc6/EasyTestPlugIn for an example. + + +* Compatibility break: + + - Test::toString() has been removed. Applies to all subclass of Test. + It was not used by the framework and was source of confusion with getName(). + + - TestCase::run(void) and TestCase::defaultResult() have been removed. Using the + run() method with a TestResult instead. + + - XmlOutput: added a message element to the XML structure. The message associated + to a failure is now in the content of element instead of in the content + of the element. + Changed from: + + test6 + Error + error2 + + To: + + test6 + Error + error2 + + + +* Deprecated: + + - CompilerOutputter::defaultOutputter(): use default constructor instead. + + +* Bug fix: + + - XmlOutputter: did not escape content (bug #540944). + + - Included qt/examples in distribution + + - Removed dependency of MfcTestRunner on DSPlugIn. It should now compile with + VC++ 7. + + + New in CppUnit 1.8.0: + ---------------------- + + In short: + - new assertions + - new facilities to write custom assertions + - new macros to define test case in your fixture + - registration of test fixture in named suite + - xml & compiler format test result output + - a new graphic test runner for the QT library + - MFC test runner window is resizable + - cppunit as a DLL + - Unicode support for MFC test runner. + - architecture clean-up: TestResultCollector extracted from TestResult. + - architecture clean-up: TestFixture extracted from TestCase. + - cookbook and documentation updated. + +* New assertion (TestAssert.h): + + CPPUNIT_FAIL(message) : equivalent to CPPUNIT_ASSERT_MESSAGE( message, false ) + + CPPUNIT_ASSERT_EQUAL_MESSAGE( expectedValue, actualValue, additionalMessage ): + behave like CPPUNIT_ASSERT_EQUAL but allow to add some contextual information. + +* New macros to write test case (HelperMacros.h): + + CPPUNIT_TEST_EXCEPTION that expect an exception of a specified type to + be thrown. + + CPPUNIT_TEST_FAIL that expect a test to fail. + + CPPUNIT_TEST_SUITE_NAMED_REGISTRATION to register a suite in a named suite. See + cppunittest example for a demo. + +* TextTestRunner (TextTestRunner.h): + -run() returns a boolean indicating is the run was successful. + -the constructor and setOutputter() allow you do define a specific outputter + to print the test result (CompilerOutputter, TextOutputter, XmlOutputter...) + -result() provide access to the result of the test run. + -eventManager() give access to the TestResult, allowing you to register others + TestListener. + +* TestResult (TestResult.h): + - That class has been splitted in two: TestResult and TestResultCollector. + + - TestResult manages the TestListener (registration and event dispatch), as + well as the stop flag indicating if the current test run should be interrupted. + All other responsabilites have been moved to TestResultCollector. + + - TestResult no longer hold the result of the test run (this is done by + TestResultCollector which is a TestListener). + +* TestListener (TestListener.h): + - all failures and errors are reported using a single method: + virtual void addFailure( const TestFailure &failure ) + => the failure object life time is limited to that of the method call. + Use TestFailure::isError() to distinguish error from failure. + Use TestFailure::clone() to obtain a duplicate of the failure. + +* New helpers to construct your own assertion (Asserter.h): + + It is now very easy to create your own assertion macro with failure + location. + + Asserter namespace contains functions used to construct and throw exception + to report failure. See Asserter documentation for an example of usage, and + examples/cppunittest/XmlUniformiser.h for a real life example. + + CPPUNIT_SOURCELINE() macro have been added (SourceLine.h). It captures the + failure location in a SourceLine object. Use it to write your own macros. + + Asserter namespace contains functions used to construct and throw exception + to report failure. See Asserter documentation for an example of usage, and + examples/cppunittest/XmlUniformiser.h for a real life example. + +* TestListener (TestListener.h): + + - TestSucesssListener : a simple listener that checks if a test has failed. + + - TestResultCollector : store all the test result. This class has been + extracted from the hold TestResult class. + + - TextTestProgressListener : print dot on cout to each time a test ends. + Letter 'F' and 'E' are printed when a failure or an error occurs. + +* Output (Outputter.h): + + - XML output: You can dump the TestResult as an XML document using + XmlOutputter. See examples/cppunittest/XmlOutputterTest.cpp for document + structure and usage. + + - Compiler compatible output : CompilerOutputter print the result in a + compiler compatible format. You can use your IDE to jump to the first + failure. See examples/cppunittest/CppUniTestMain.cpp for an example of usage. + + - Text output : replace the deprecated TextTestResult. Print the result in + a human readable format. + +* NotEqualException constructor take an additional message (usually used to +point out where the difference occured between the expected and actual value) +that can be retreived with additionalMessage(). See Asserter documentation for +an example of usage. + +* CppUnit + + - CppUnit can be compiled as a DLL (WIN32 platform). + DLL can be generated by the cppunit_dll.dsp project. You must define the + pre-processor symbol CPPUNIT_DLL when linking against CppUnit DLL. + See cppunittests examples for an example. + +* TestRunner + + - Qt TestRunner : a test runner for the Qt library (http://www.trolltech.com). + See examples/qt for an example of use. + + - MFC TestRunner : the dialog can now be resized. List view column sizes, + as well as the dialog size, are saved. Unicode configurations have been added. + +* Deprecated + + - TextTestResult : use the test listener TextTestProgressListener and the + ouputter TextOuputter instead. + + - Methods having fileName, lineNumber as parameter. Usually replaced by + a similar method that take a SourceLine parameter. Exception and + TestAssert are impacted. + + - TestRegistryFactory::registerFactory( const std::string &name, + TestFactory *factory ). + + You must define the symbol CPPUNIT_ENABLE_SOURCELINE_DEPRECATED to enable + old Exception constructor, UNKNOWNFILENAME and UNKNOWNLINENUMBER, as well + as function defined in the TestAssert namespace. The exception construction + and throwing as been moved to Asserter namespace. + +* Compatibility break: + + TestResult has been splitted in two class. TestResultCollector compatibility + breaks refer to the methods that were previously in TestResult. + + - TestListener::addError() was removed. addFailure() is used to report +any kind of failure. + - TestResultCollector::errors() was removed. Use failures() instead. + - TestResultCollector::failures() now reports all kind of failures. + - TestResultCollector::failures() returns a const reference. + - void TestListener::addFailure( TestFailure *failure ) was removed. + - void TestListener::addError( TestFailure *failure ) signature changed. + + - CPPUNIT_ASSERT_EQUAL_MESSAGE: changed arguments order. 'message' is now + the first argument instead of the last (like CPPUNIT_ASSERT_MESSAGE). + Notes that CPPUNIT_ASSERT_EQUAL was introduced in release 1.7.3. + + - directory for TestRunners as moved from cppunitui/ to cppunit/ui/ (concern + only users of release 1.7.10) + +* Bug fix: + - test ExceptionTest.testAssignment() don't fail anymore on VC++. See FAQ + for detail. + + + New in CppUnit 1.6.1 + -------------------- + +* This is a bug-fixing release. + + + New in CppUnit 1.6.0 + -------------------- + +* All CppUnit macros now begin with "CPPUNIT_". + + Macros CU_TEST_SUITE, CU_TEST, CU_TEST_SUITE_END, CU_TEST_SUB_SUITE, + and CU_TEST_SUITE_REGISTRATION are renamed but are otherwise unchanged; + they take the same arguments, and have the same effect. The old-style + macros can be used if your sources #define CPPUNIT_ENABLE_CU_TEST_MACROS + to 1 before including any CppUnit headers. + + Macros assert, assertEqual, and assertDoublesEqual, have been replaced + by CPPUNIT_ASSERT, CPPUNIT_ASSERT_EQUAL, and CPPUNIT_ASSERT_DOUBLES_EQUAL, + respectively. Macro assertLongsEqual is replaced by CPPUNIT_ASSERT_EQUAL. + The old assert macros can be used if your sources #define + CPPUNIT_ENABLE_NAKED_ASSERT to 1 before including any CppUnit headers. + + The old macro names are deprecated and will vanish in a future version + of CppUnit. + + +* Equality assertion CPPUNIT_ASSERT_EQUAL(expected,actual) can test + any type of expression. The types of "expected" and "actual" must + be the same; use a cast if necessary. + + +* Equality tested using CPPUNIT_ASSERT_EQUAL may be re-defined using + a traits class. Ditto for the string representation used in the + diagnostic messages. + + +* New assertion with arbitrary message: CPPUNIT_ASSERT_MESSAGE. + + +* A test case obtained using class TestCaller may check that + a particular exception is thrown. + + +* CppUnit has a test suite for itself! + + +* VC++ integration for MFC TestRunner. + diff --git a/lib/cppunit-1.10.0/README b/lib/cppunit-1.10.0/README new file mode 100644 index 0000000000..a27c5452f7 --- /dev/null +++ b/lib/cppunit-1.10.0/README @@ -0,0 +1,19 @@ + CppUnit --- The C++ Unit Test Library + ------------------------------------- + http://cppunit.sourceforge.net + + +CppUnit is the C++ port of the famous JUnit framework for unit +testing. + +For MSWindows installation notes, see INSTALL-WIN32.txt. +For other systems -- including cygwin -- see INSTALL and INSTALL-unix. + + +Bug reports are welcome. Please use the SourceForge bug tracking +system at http://sourceforge.net/projects/cppunit/. Bugs that already +appear in the file BUGS do not need to be reported. + +Email to the current maintainers may be sent to +. + diff --git a/lib/cppunit-1.10.0/THANKS b/lib/cppunit-1.10.0/THANKS new file mode 100644 index 0000000000..7a445878de --- /dev/null +++ b/lib/cppunit-1.10.0/THANKS @@ -0,0 +1,21 @@ +Tim Jansen +Christian Leutloff +Steve M. Robbins +Patrick Berny +Patrick Hartling +Peer Sommerlund +Duane Murphy +Gigi Sayfan +Armin "bored" Michel +Jeffrey Morgan +'cuppa' project team (http://sourceforge.jp/projects/cuppa/) +Phil Verghese +Lavoie Philippe +Pavel Zabelin +Marco Welti +Thomas Neidhart +Hans Bühler (Dynamic Window library used by MFC UI) +John Sisson +Steven Mitter +Stephan Stapel +Abdessattar Sassi (hp-ux plug-in support) \ No newline at end of file diff --git a/lib/cppunit-1.10.0/TODO b/lib/cppunit-1.10.0/TODO new file mode 100644 index 0000000000..87763345fe --- /dev/null +++ b/lib/cppunit-1.10.0/TODO @@ -0,0 +1,44 @@ +* Bugs: +Asserter::makeNotEqualMessage() strip the shortDescription of the additional message. + +* CppUnit: + - Extends CompilerOutputter to a generic text outputter that can use a format string + to display both the location of the failure and the message. + - STL concept checker. + - Memory leak tracking: setUp/tearDown should be leak safe if no failure occured. + +* UnitTest + - add tests for XmlOutputter::setStyleSheet (current assertion macro strip when + testing ) + - add tests for TestRunner, TextUi::TestRunner, CompilerOutputter. + - add tests for test plug-in + +* VC++ TestRunner: + - Modify MfcUi::TestRunner to expose TestResult (which allow specific TestListener + for global initialization). + - Update MfcTestRunner to use TestPath to store test in the registry + - [DONE] Add "details" field to show detail of the selected failed test: + - suite and test name, + - failure message. If possible separate "was" and "expected" in the + forthcoming assertEquals() to make comparison easier, + - source file location. + +* Documentation: + CookBook: + - how to create simple test cases (with CppUnit namespace) + - test case using only CPPUINT_ASSERT + - test case using CPPUNIT_ASSERT_EQUAL + - advanced assertions with the CPPUNIT_ASSERT_MESSAGE + - Helper Macros for convenience + - Creating a suite + - Composing a suite from more suites (i.e. compose tests for n modules to + form a big test for the whole program) + - customizing output using an user defined TestListener + - how to write the TestListener (subclass of TestListener) + - how to hook it in + - how to use the GUI + - MSVC++ special stuff + - other custmization stuff I haven't understood yet + + CppUnit: architecture overview. + diff --git a/lib/cppunit-1.10.0/aclocal.m4 b/lib/cppunit-1.10.0/aclocal.m4 new file mode 100644 index 0000000000..fcf87b4f22 --- /dev/null +++ b/lib/cppunit-1.10.0/aclocal.m4 @@ -0,0 +1,7073 @@ +# generated automatically by aclocal 1.7.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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. + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright 1996, 1997, 2000, 2001 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_PREREQ([2.52]) + +# serial 6 + +# 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 -*- + +# 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. + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 10 + +AC_PREREQ([2.54]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# 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_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +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 + 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) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# 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([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 +]) +]) + + +# 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_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright 2002 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + +# 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. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.7.6])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _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], +[AC_FOREACH([_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. +# + +# Copyright 1996, 1997, 2000, 2001 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# 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 +# 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)]) + +# -*- Autoconf -*- + + +# Copyright 1997, 1999, 2000, 2001 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# 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 +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# 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 +]) + +# AM_AUX_DIR_EXPAND + +# Copyright 2001 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# 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. + +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright 2001 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# 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="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# -*- Autoconf -*- +# Copyright (C) 2003 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 1 + +# 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])]) + +# serial 5 -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + + +# 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], 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 + 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 + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + 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 + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} 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 + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' 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 builds + --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]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright 1999, 2000, 2001, 2002 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; 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. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # 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 -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //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"]) +]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# 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 done +.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 +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 5 + +AC_PREREQ(2.52) + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +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])]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 47 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 s/^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 M$VC, +# 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 "$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_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# 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 + +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"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _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_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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 && + 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-*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-*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*) + case $host in + 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 + ;; +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_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$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}? :&$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 + if test ! -s conftest.err; 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_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler 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 + else + $2=yes + fi + fi + $rm 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 + testring="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; + ;; + + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \ + = "XX$testring") >/dev/null 2>&1 && + new_result=`expr "X$testring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + testring=$testring$testring + done + testring= + # 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` + ;; + 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); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|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="-dld"], + [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="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + 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" + 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 + LDFLAGS="$LDFLAGS $link_static_flag" + 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_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 + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + # According to Tom Tromey, Ian Lance Taylor reported there are C compilers + # that will create temporary files in the current directory regardless of + # the output directory. Thus, making CWD read-only will cause this test + # to fail, enabling locking or at least warning the user not to do parallel + # builds. + chmod -w . + + 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}? :&$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 + if test ! -s out/conftest.err; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . + $rm conftest* 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" + 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_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext=".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 + 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 ';' >/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. + 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 +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' + ;; + +aix4* | aix5*) + 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 + ;; + +bsdi4*) + 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=".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' + 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="/lib /lib/w32api /usr/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 + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + 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='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + fi + 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*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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='.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='.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='.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' + ;; + +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*) + 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 + + case $LD in # libtool.m4 will add one of these switches to LD + *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64" + ;; + esac + + # 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}${release}${shared_ext} ${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 + need_lib_prefix=no + need_version=no + 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=".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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[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 + + # 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"; 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 dll's +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 recognise 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 recognise 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 path 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 path 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 GNU ld's 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; 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)/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 + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + case $host_cpu in + alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh* | x86_64) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +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*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | 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 path 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_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}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" + 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 LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. 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 LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. 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 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. +# 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([AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,CXX" | sed 's/^,//'`]) +])# _LT_AC_LANG_CXX + + +# 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=`echo "$tagnames,F77" | sed 's/^,//'`]) +])# _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=`echo "$tagnames,GCJ" | sed 's/^,//'`]) +])# _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=`echo "$tagnames,RC" | sed 's/^,//'`]) +])# 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;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$]_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +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_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_DLOPEN_SELF($1) + +# Report which librarie types wil 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 + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + darwin* | rhapsody*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + 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_AC_TAGVAR(module_cmds, $1)='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~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 -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _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)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + 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([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_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)= + +# Source file extension for C++ test sources. +ac_ext=cc + +# 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;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# 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 + 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 + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# 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 $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 + ;; + aix4* | aix5*) + 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]].*|aix5*) + 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 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + 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' + 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + darwin* | rhapsody*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + ;; + esac + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' + + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _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)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + 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*) + # 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) | egrep "\-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 + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _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' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _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*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _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 + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _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 + ;; + 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 ${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}${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*) + 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 + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _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' + _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' + ;; + 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' + ;; + 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::"' + ;; + 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 ${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}${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 ${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 $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}${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 + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC) + # 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 + ;; + 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(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -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} -nolib ${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 C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + # 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 -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # 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' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + 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_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_DLOPEN_SELF($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],[ +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 <> "$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 +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# 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 + +# 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 + +# 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=$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=$lt_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='$shrext' + +# 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 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_AC_TAGVAR(fix_srcfile_path, $1)" + +# 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. + test -f Makefile && make "$ltmain" +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([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 the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# 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'" + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDT]]' + ;; +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='[[ABCDGISTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # 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 -f 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* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | 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). + _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)= + ;; + 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 + aix4* | aix5*) + # 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 + ;; + 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*) + # 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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + 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*) + 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) + # 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' + ;; + 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' + ;; + *) + ;; + 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*) + ;; + sco*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + 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 + ;; + unixware*) + ;; + 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* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | 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_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' + ;; + + 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 + ;; + + mingw* | 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_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*) + case $CC 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' + ;; + 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' + ;; + 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' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + solaris*) + _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' + ;; + + 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* | sysv5*) + _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 + ;; + + 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_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 +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[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 + aix4* | aix5*) + # 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 '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[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 +],[ + 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_" + # 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. + extract_expsyms_cmds= + + 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 + ;; + 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}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # 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 '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=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* | sysv5*) + 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 + ;; + + 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)" = yes; then + 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 + 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 "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + 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]].*|aix5*) + 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 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + 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' + 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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 + ;; + + bsdi4*) + _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=".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' + fix_srcfile_path='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _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)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + 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*) + _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* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # 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(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 + ;; + 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*) + _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(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 + ;; + + 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 ${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)=: + ;; + + sco3.2v5*) + _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)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + _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 + _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]].*) ;; + *) # 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 + ;; + + 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.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _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' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + 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 + +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 + +# +# 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* + printf "$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) + 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) +]) + +# 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 +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 && break + 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_MSG_RESULT([$SED]) +]) + + +# AC_LTDL_DLLIB +# ------------- +AC_DEFUN([AC_LTDL_DLLIB], +[LIBADD_DL= +AC_SUBST(LIBADD_DL) + +AC_CHECK_FUNC([shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.])], + [AC_CHECK_LIB([dld], [shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LIBADD_DL="$LIBADD_DL -ldld"], + [AC_CHECK_LIB([dl], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-ldl"], + [AC_TRY_LINK([#if HAVE_DLFCN_H +# include +#endif + ], + [dlopen(0, 0);], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.])], + [AC_CHECK_LIB([svld], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [AC_DEFINE([HAVE_DLD], [1], + [Define if you have the GNU dld library.]) + LIBADD_DL="$LIBADD_DL -ldld" + ]) + ]) + ]) + ]) + ]) +]) + +if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then + LIBS_SAVE="$LIBS" + LIBS="$LIBS $LIBADD_DL" + AC_CHECK_FUNCS(dlerror) + LIBS="$LIBS_SAVE" +fi +])# AC_LTDL_DLLIB + +AC_DEFUN(BB_ENABLE_DOXYGEN, +[ +AC_ARG_ENABLE(doxygen, [ --enable-doxygen enable documentation generation with doxygen (auto)]) +AC_ARG_ENABLE(dot, [ --enable-dot use 'dot' to generate graphs in doxygen (auto)]) +AC_ARG_ENABLE(html-docs, [ --enable-html-docs enable HTML generation with doxygen (yes)], [], [ enable_html_docs=yes]) +AC_ARG_ENABLE(latex-docs, [ --enable-latex-docs enable LaTeX documentation generation with doxygen (no)], [], [ enable_latex_docs=no]) +if test "x$enable_doxygen" = xno; then + enable_doc=no +else + AC_PATH_PROG(DOXYGEN, doxygen, , $PATH) + if test "x$DOXYGEN" = x; then + if test "x$enable_doxygen" = xyes; then + AC_MSG_ERROR([could not find doxygen]) + fi + enable_doc=no + else + enable_doc=yes + AC_PATH_PROG(DOT, dot, , $PATH) + fi +fi +AM_CONDITIONAL(DOC, test x$enable_doc = xyes) + +if test x$DOT = x; then + if test "x$enable_dot" = xyes; then + AC_MSG_ERROR([could not find dot]) + fi + enable_dot=no +else + enable_dot=yes +fi +AC_SUBST(enable_dot) +AC_SUBST(enable_html_docs) +AC_SUBST(enable_latex_docs) +]) + +dnl @synopsis AC_CXX_RTTI +dnl +dnl If the compiler supports Run-Time Type Identification (typeinfo +dnl header and typeid keyword), define HAVE_RTTI. +dnl +dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $ +dnl @author Luc Maisonobe +dnl +AC_DEFUN([AC_CXX_RTTI], +[AC_CACHE_CHECK(whether the compiler supports Run-Time Type Identification, +ac_cv_cxx_rtti, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +class Base { public : + Base () {} + virtual int f () { return 0; } + }; +class Derived : public Base { public : + Derived () {} + virtual int f () { return 1; } + }; +],[Derived d; +Base *ptr = &d; +return typeid (*ptr) == typeid (Derived); +], + ac_cv_cxx_rtti=yes, ac_cv_cxx_rtti=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_rtti" = yes; then + AC_DEFINE(HAVE_RTTI,1, + [define if the compiler supports Run-Time Type Identification]) +fi +]) + +dnl @synopsis AX_CXX_GCC_ABI_DEMANGLE +dnl +dnl If the compiler supports GCC C++ ABI name demangling (has header cxxabi.h +dnl and abi::__cxa_demangle() function), define HAVE_GCC_ABI_DEMANGLE +dnl +dnl Adapted from AC_CXX_RTTI by Luc Maisonobe +dnl +dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $ +dnl @author Neil Ferguson +dnl +AC_DEFUN([AX_CXX_GCC_ABI_DEMANGLE], +[AC_CACHE_CHECK(whether the compiler supports GCC C++ ABI name demangling, +ac_cv_cxx_gcc_abi_demangle, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +#include +#include + +template +class A {}; +],[A instance; +int status = 0; +char* c_name = 0; + +c_name = abi::__cxa_demangle(typeid(instance).name(), 0, 0, &status); + +std::string name(c_name); +free(c_name); + +return name == "A"; +], + ac_cv_cxx_gcc_abi_demangle=yes, ac_cv_cxx_gcc_abi_demangle=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_gcc_abi_demangle" = yes; then + AC_DEFINE(HAVE_GCC_ABI_DEMANGLE,1, + [define if the compiler supports GCC C++ ABI name demangling]) +fi +]) + +dnl @synopsis AC_CXX_STRING_COMPARE_STRING_FIRST +dnl +dnl If the standard library string::compare() function takes the +dnl string as its first argument, define FUNC_STRING_COMPARE_STRING_FIRST to 1. +dnl +dnl @author Steven Robbins +dnl +AC_DEFUN([AC_CXX_STRING_COMPARE_STRING_FIRST], +[AC_CACHE_CHECK(whether std::string::compare takes a string in argument 1, +ac_cv_cxx_string_compare_string_first, +[AC_REQUIRE([AC_CXX_NAMESPACES]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +#ifdef HAVE_NAMESPACES +using namespace std; +#endif],[string x("hi"); string y("h"); +return x.compare(y,0,1) == 0;], + ac_cv_cxx_string_compare_string_first=yes, + ac_cv_cxx_string_compare_string_first=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_string_compare_string_first" = yes; then + AC_DEFINE(FUNC_STRING_COMPARE_STRING_FIRST,1, + [define if library uses std::string::compare(string,pos,n)]) +fi +]) + +dnl @synopsis AC_CXX_NAMESPACES +dnl +dnl If the compiler can prevent names clashes using namespaces, define +dnl HAVE_NAMESPACES. +dnl +dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $ +dnl @author Luc Maisonobe +dnl +AC_DEFUN([AC_CXX_NAMESPACES], +[AC_CACHE_CHECK(whether the compiler implements namespaces, +ac_cv_cxx_namespaces, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([namespace Outer { namespace Inner { int i = 0; }}], + [using namespace Outer::Inner; return i;], + ac_cv_cxx_namespaces=yes, ac_cv_cxx_namespaces=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_namespaces" = yes; then + AC_DEFINE(HAVE_NAMESPACES,1,[define to 1 if the compiler implements namespaces]) +fi +]) + +dnl @synopsis AC_CXX_HAVE_SSTREAM +dnl +dnl If the C++ library has a working stringstream, define HAVE_SSTREAM. +dnl +dnl @author Ben Stanley +dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $ +dnl +AC_DEFUN([AC_CXX_HAVE_SSTREAM], +[AC_CACHE_CHECK(whether the compiler has stringstream, +ac_cv_cxx_have_sstream, +[AC_REQUIRE([AC_CXX_NAMESPACES]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +#ifdef HAVE_NAMESPACES +using namespace std; +#endif],[stringstream message; message << "Hello"; return 0;], + ac_cv_cxx_have_sstream=yes, ac_cv_cxx_have_sstream=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_have_sstream" = yes; then + AC_DEFINE(HAVE_SSTREAM,1,[define if the compiler has stringstream]) +fi +]) + +dnl @synopsis AC_CXX_HAVE_STRSTREAM +dnl +dnl If the C++ library has a working strstream, define HAVE_CLASS_STRSTREAM. +dnl +dnl Adapted from ac_cxx_have_sstream.m4 by Steve Robbins +dnl +AC_DEFUN([AC_CXX_HAVE_STRSTREAM], +[AC_CACHE_CHECK(whether the library defines class strstream, +ac_cv_cxx_have_class_strstream, +[AC_REQUIRE([AC_CXX_NAMESPACES]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_CHECK_HEADERS(strstream) + AC_TRY_COMPILE([ +#if HAVE_STRSTREAM +# include +#else +# include +#endif +#ifdef HAVE_NAMESPACES +using namespace std; +#endif],[ostrstream message; message << "Hello"; return 0;], + ac_cv_cxx_have_class_strstream=yes, ac_cv_cxx_have_class_strstream=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_have_class_strstream" = yes; then + AC_DEFINE(HAVE_CLASS_STRSTREAM,1,[define if the library defines strstream]) +fi +]) + +dnl @synopsis AC_CREATE_PREFIX_CONFIG_H [(OUTPUT-HEADER [,PREFIX [,ORIG-HEADER]])] +dnl +dnl this is a new variant from ac_prefix_config_ +dnl this one will use a lowercase-prefix if +dnl the config-define was starting with a lowercase-char, e.g. +dnl #define const or #define restrict or #define off_t +dnl (and this one can live in another directory, e.g. testpkg/config.h +dnl therefore I decided to move the output-header to be the first arg) +dnl +dnl takes the usual config.h generated header file; looks for each of +dnl the generated "#define SOMEDEF" lines, and prefixes the defined name +dnl (ie. makes it "#define PREFIX_SOMEDEF". The result is written to +dnl the output config.header file. The PREFIX is converted to uppercase +dnl for the conversions. +dnl +dnl default OUTPUT-HEADER = $PACKAGE-config.h +dnl default PREFIX = $PACKAGE +dnl default ORIG-HEADER, derived from OUTPUT-HEADER +dnl if OUTPUT-HEADER has a "/", use the basename +dnl if OUTPUT-HEADER has a "-", use the section after it. +dnl otherwise, just config.h +dnl +dnl In most cases, the configure.in will contain a line saying +dnl AC_CONFIG_HEADER(config.h) +dnl somewhere *before* AC_OUTPUT and a simple line saying +dnl AC_PREFIX_CONFIG_HEADER +dnl somewhere *after* AC_OUTPUT. +dnl +dnl example: +dnl AC_INIT(config.h.in) # config.h.in as created by "autoheader" +dnl AM_INIT_AUTOMAKE(testpkg, 0.1.1) # "#undef VERSION" and "PACKAGE" +dnl AM_CONFIG_HEADER(config.h) # in config.h.in +dnl AC_MEMORY_H # "#undef NEED_MEMORY_H" +dnl AC_C_CONST_H # "#undef const" +dnl AC_OUTPUT(Makefile) # creates the "config.h" now +dnl AC_CREATE_PREFIX_CONFIG_H # creates "testpkg-config.h" +dnl and the resulting "testpkg-config.h" contains lines like +dnl #ifndef TESTPKG_VERSION +dnl #define TESTPKG_VERSION "0.1.1" +dnl #endif +dnl #ifndef TESTPKG_NEED_MEMORY_H +dnl #define TESTPKG_NEED_MEMORY_H 1 +dnl #endif +dnl #ifndef _testpkg_const +dnl #define _testpkg_const const +dnl #endif +dnl +dnl and this "testpkg-config.h" can be installed along with other +dnl header-files, which is most convenient when creating a shared +dnl library (that has some headers) where some functionality is +dnl dependent on the OS-features detected at compile-time. No +dnl need to invent some "testpkg-confdefs.h.in" manually. :-) +dnl +dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $ +dnl @author Guido Draheim + +AC_DEFUN([AC_CREATE_PREFIX_CONFIG_H], +[changequote({, })dnl +ac_prefix_conf_OUT=`echo ifelse($1, , $PACKAGE-config.h, $1)` +ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e 'y:abcdefghijklmnopqrstuvwxyz./,-:ABCDEFGHIJKLMNOPQRSTUVWXYZ____:'` +ac_prefix_conf_PKG=`echo ifelse($2, , $PACKAGE, $2)` +ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'` +ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:' -e '/^[0-9]/s/^/_/'` +ac_prefix_conf_INP=`echo ifelse($3, , _, $3)` +if test "$ac_prefix_conf_INP" = "_"; then + case $ac_prefix_conf_OUT in + */*) ac_prefix_conf_INP=`basename $ac_prefix_conf_OUT` + ;; + *-*) ac_prefix_conf_INP=`echo $ac_prefix_conf_OUT | sed -e 's/[a-zA-Z0-9_]*-//'` + ;; + *) ac_prefix_conf_INP=config.h + ;; + esac +fi +changequote([, ])dnl +if test -z "$ac_prefix_conf_PKG" ; then + AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H]) +else + AC_MSG_RESULT(creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines) + if test -f $ac_prefix_conf_INP ; then + AS_DIRNAME([/* automatically generated */], $ac_prefix_conf_OUT) +changequote({, })dnl + echo '#ifndef '$ac_prefix_conf_DEF >$ac_prefix_conf_OUT + echo '#define '$ac_prefix_conf_DEF' 1' >>$ac_prefix_conf_OUT + echo ' ' >>$ac_prefix_conf_OUT + echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$ac_prefix_conf_OUT + + echo 's/#undef *\([A-Z_]\)/#undef '$ac_prefix_conf_UPP'_\1/' >conftest.sed + echo 's/#undef *\([a-z]\)/#undef '$ac_prefix_conf_LOW'_\1/' >>conftest.sed + echo 's/#define *\([A-Z_][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_UPP"_\\1 \\" >>conftest.sed + echo '#define '$ac_prefix_conf_UPP"_\\1 \\2 \\" >>conftest.sed + echo '#endif/' >>conftest.sed + echo 's/#define *\([a-z][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_LOW"_\\1 \\" >>conftest.sed + echo '#define '$ac_prefix_conf_LOW"_\\1 \\2 \\" >>conftest.sed + echo '#endif/' >>conftest.sed + sed -f conftest.sed $ac_prefix_conf_INP >>$ac_prefix_conf_OUT + echo ' ' >>$ac_prefix_conf_OUT + echo '/*' $ac_prefix_conf_DEF '*/' >>$ac_prefix_conf_OUT + echo '#endif' >>$ac_prefix_conf_OUT +changequote([, ])dnl + else + AC_MSG_ERROR([input file $ac_prefix_conf_IN does not exist, dnl + skip generating $ac_prefix_conf_OUT]) + fi + rm -f conftest.* +fi]) + + diff --git a/lib/cppunit-1.10.0/config/ac_create_prefix_config_h.m4 b/lib/cppunit-1.10.0/config/ac_create_prefix_config_h.m4 new file mode 100644 index 0000000000..cfc70b1141 --- /dev/null +++ b/lib/cppunit-1.10.0/config/ac_create_prefix_config_h.m4 @@ -0,0 +1,107 @@ +dnl @synopsis AC_CREATE_PREFIX_CONFIG_H [(OUTPUT-HEADER [,PREFIX [,ORIG-HEADER]])] +dnl +dnl this is a new variant from ac_prefix_config_ +dnl this one will use a lowercase-prefix if +dnl the config-define was starting with a lowercase-char, e.g. +dnl #define const or #define restrict or #define off_t +dnl (and this one can live in another directory, e.g. testpkg/config.h +dnl therefore I decided to move the output-header to be the first arg) +dnl +dnl takes the usual config.h generated header file; looks for each of +dnl the generated "#define SOMEDEF" lines, and prefixes the defined name +dnl (ie. makes it "#define PREFIX_SOMEDEF". The result is written to +dnl the output config.header file. The PREFIX is converted to uppercase +dnl for the conversions. +dnl +dnl default OUTPUT-HEADER = $PACKAGE-config.h +dnl default PREFIX = $PACKAGE +dnl default ORIG-HEADER, derived from OUTPUT-HEADER +dnl if OUTPUT-HEADER has a "/", use the basename +dnl if OUTPUT-HEADER has a "-", use the section after it. +dnl otherwise, just config.h +dnl +dnl In most cases, the configure.in will contain a line saying +dnl AC_CONFIG_HEADER(config.h) +dnl somewhere *before* AC_OUTPUT and a simple line saying +dnl AC_PREFIX_CONFIG_HEADER +dnl somewhere *after* AC_OUTPUT. +dnl +dnl example: +dnl AC_INIT(config.h.in) # config.h.in as created by "autoheader" +dnl AM_INIT_AUTOMAKE(testpkg, 0.1.1) # "#undef VERSION" and "PACKAGE" +dnl AM_CONFIG_HEADER(config.h) # in config.h.in +dnl AC_MEMORY_H # "#undef NEED_MEMORY_H" +dnl AC_C_CONST_H # "#undef const" +dnl AC_OUTPUT(Makefile) # creates the "config.h" now +dnl AC_CREATE_PREFIX_CONFIG_H # creates "testpkg-config.h" +dnl and the resulting "testpkg-config.h" contains lines like +dnl #ifndef TESTPKG_VERSION +dnl #define TESTPKG_VERSION "0.1.1" +dnl #endif +dnl #ifndef TESTPKG_NEED_MEMORY_H +dnl #define TESTPKG_NEED_MEMORY_H 1 +dnl #endif +dnl #ifndef _testpkg_const +dnl #define _testpkg_const const +dnl #endif +dnl +dnl and this "testpkg-config.h" can be installed along with other +dnl header-files, which is most convenient when creating a shared +dnl library (that has some headers) where some functionality is +dnl dependent on the OS-features detected at compile-time. No +dnl need to invent some "testpkg-confdefs.h.in" manually. :-) +dnl +dnl @version $Id: ac_create_prefix_config_h.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $ +dnl @author Guido Draheim + +AC_DEFUN([AC_CREATE_PREFIX_CONFIG_H], +[changequote({, })dnl +ac_prefix_conf_OUT=`echo ifelse($1, , $PACKAGE-config.h, $1)` +ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e 'y:abcdefghijklmnopqrstuvwxyz./,-:ABCDEFGHIJKLMNOPQRSTUVWXYZ____:'` +ac_prefix_conf_PKG=`echo ifelse($2, , $PACKAGE, $2)` +ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'` +ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:' -e '/^[0-9]/s/^/_/'` +ac_prefix_conf_INP=`echo ifelse($3, , _, $3)` +if test "$ac_prefix_conf_INP" = "_"; then + case $ac_prefix_conf_OUT in + */*) ac_prefix_conf_INP=`basename $ac_prefix_conf_OUT` + ;; + *-*) ac_prefix_conf_INP=`echo $ac_prefix_conf_OUT | sed -e 's/[a-zA-Z0-9_]*-//'` + ;; + *) ac_prefix_conf_INP=config.h + ;; + esac +fi +changequote([, ])dnl +if test -z "$ac_prefix_conf_PKG" ; then + AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H]) +else + AC_MSG_RESULT(creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines) + if test -f $ac_prefix_conf_INP ; then + AS_DIRNAME([/* automatically generated */], $ac_prefix_conf_OUT) +changequote({, })dnl + echo '#ifndef '$ac_prefix_conf_DEF >$ac_prefix_conf_OUT + echo '#define '$ac_prefix_conf_DEF' 1' >>$ac_prefix_conf_OUT + echo ' ' >>$ac_prefix_conf_OUT + echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$ac_prefix_conf_OUT + + echo 's/#undef *\([A-Z_]\)/#undef '$ac_prefix_conf_UPP'_\1/' >conftest.sed + echo 's/#undef *\([a-z]\)/#undef '$ac_prefix_conf_LOW'_\1/' >>conftest.sed + echo 's/#define *\([A-Z_][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_UPP"_\\1 \\" >>conftest.sed + echo '#define '$ac_prefix_conf_UPP"_\\1 \\2 \\" >>conftest.sed + echo '#endif/' >>conftest.sed + echo 's/#define *\([a-z][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_LOW"_\\1 \\" >>conftest.sed + echo '#define '$ac_prefix_conf_LOW"_\\1 \\2 \\" >>conftest.sed + echo '#endif/' >>conftest.sed + sed -f conftest.sed $ac_prefix_conf_INP >>$ac_prefix_conf_OUT + echo ' ' >>$ac_prefix_conf_OUT + echo '/*' $ac_prefix_conf_DEF '*/' >>$ac_prefix_conf_OUT + echo '#endif' >>$ac_prefix_conf_OUT +changequote([, ])dnl + else + AC_MSG_ERROR([input file $ac_prefix_conf_IN does not exist, dnl + skip generating $ac_prefix_conf_OUT]) + fi + rm -f conftest.* +fi]) + diff --git a/lib/cppunit-1.10.0/config/ac_cxx_have_sstream.m4 b/lib/cppunit-1.10.0/config/ac_cxx_have_sstream.m4 new file mode 100644 index 0000000000..3d09263d54 --- /dev/null +++ b/lib/cppunit-1.10.0/config/ac_cxx_have_sstream.m4 @@ -0,0 +1,24 @@ +dnl @synopsis AC_CXX_HAVE_SSTREAM +dnl +dnl If the C++ library has a working stringstream, define HAVE_SSTREAM. +dnl +dnl @author Ben Stanley +dnl @version $Id: ac_cxx_have_sstream.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $ +dnl +AC_DEFUN([AC_CXX_HAVE_SSTREAM], +[AC_CACHE_CHECK(whether the compiler has stringstream, +ac_cv_cxx_have_sstream, +[AC_REQUIRE([AC_CXX_NAMESPACES]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +#ifdef HAVE_NAMESPACES +using namespace std; +#endif],[stringstream message; message << "Hello"; return 0;], + ac_cv_cxx_have_sstream=yes, ac_cv_cxx_have_sstream=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_have_sstream" = yes; then + AC_DEFINE(HAVE_SSTREAM,1,[define if the compiler has stringstream]) +fi +]) diff --git a/lib/cppunit-1.10.0/config/ac_cxx_have_strstream.m4 b/lib/cppunit-1.10.0/config/ac_cxx_have_strstream.m4 new file mode 100644 index 0000000000..232a3d6f8e --- /dev/null +++ b/lib/cppunit-1.10.0/config/ac_cxx_have_strstream.m4 @@ -0,0 +1,29 @@ +dnl @synopsis AC_CXX_HAVE_STRSTREAM +dnl +dnl If the C++ library has a working strstream, define HAVE_CLASS_STRSTREAM. +dnl +dnl Adapted from ac_cxx_have_sstream.m4 by Steve Robbins +dnl +AC_DEFUN([AC_CXX_HAVE_STRSTREAM], +[AC_CACHE_CHECK(whether the library defines class strstream, +ac_cv_cxx_have_class_strstream, +[AC_REQUIRE([AC_CXX_NAMESPACES]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_CHECK_HEADERS(strstream) + AC_TRY_COMPILE([ +#if HAVE_STRSTREAM +# include +#else +# include +#endif +#ifdef HAVE_NAMESPACES +using namespace std; +#endif],[ostrstream message; message << "Hello"; return 0;], + ac_cv_cxx_have_class_strstream=yes, ac_cv_cxx_have_class_strstream=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_have_class_strstream" = yes; then + AC_DEFINE(HAVE_CLASS_STRSTREAM,1,[define if the library defines strstream]) +fi +]) diff --git a/lib/cppunit-1.10.0/config/ac_cxx_namespaces.m4 b/lib/cppunit-1.10.0/config/ac_cxx_namespaces.m4 new file mode 100644 index 0000000000..eb675e4ab8 --- /dev/null +++ b/lib/cppunit-1.10.0/config/ac_cxx_namespaces.m4 @@ -0,0 +1,22 @@ +dnl @synopsis AC_CXX_NAMESPACES +dnl +dnl If the compiler can prevent names clashes using namespaces, define +dnl HAVE_NAMESPACES. +dnl +dnl @version $Id: ac_cxx_namespaces.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $ +dnl @author Luc Maisonobe +dnl +AC_DEFUN([AC_CXX_NAMESPACES], +[AC_CACHE_CHECK(whether the compiler implements namespaces, +ac_cv_cxx_namespaces, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([namespace Outer { namespace Inner { int i = 0; }}], + [using namespace Outer::Inner; return i;], + ac_cv_cxx_namespaces=yes, ac_cv_cxx_namespaces=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_namespaces" = yes; then + AC_DEFINE(HAVE_NAMESPACES,1,[define to 1 if the compiler implements namespaces]) +fi +]) diff --git a/lib/cppunit-1.10.0/config/ac_cxx_rtti.m4 b/lib/cppunit-1.10.0/config/ac_cxx_rtti.m4 new file mode 100644 index 0000000000..996e01969c --- /dev/null +++ b/lib/cppunit-1.10.0/config/ac_cxx_rtti.m4 @@ -0,0 +1,34 @@ +dnl @synopsis AC_CXX_RTTI +dnl +dnl If the compiler supports Run-Time Type Identification (typeinfo +dnl header and typeid keyword), define HAVE_RTTI. +dnl +dnl @version $Id: ac_cxx_rtti.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $ +dnl @author Luc Maisonobe +dnl +AC_DEFUN([AC_CXX_RTTI], +[AC_CACHE_CHECK(whether the compiler supports Run-Time Type Identification, +ac_cv_cxx_rtti, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +class Base { public : + Base () {} + virtual int f () { return 0; } + }; +class Derived : public Base { public : + Derived () {} + virtual int f () { return 1; } + }; +],[Derived d; +Base *ptr = &d; +return typeid (*ptr) == typeid (Derived); +], + ac_cv_cxx_rtti=yes, ac_cv_cxx_rtti=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_rtti" = yes; then + AC_DEFINE(HAVE_RTTI,1, + [define if the compiler supports Run-Time Type Identification]) +fi +]) diff --git a/lib/cppunit-1.10.0/config/ac_cxx_string_compare_string_first.m4 b/lib/cppunit-1.10.0/config/ac_cxx_string_compare_string_first.m4 new file mode 100644 index 0000000000..a1cb7a289c --- /dev/null +++ b/lib/cppunit-1.10.0/config/ac_cxx_string_compare_string_first.m4 @@ -0,0 +1,27 @@ +dnl @synopsis AC_CXX_STRING_COMPARE_STRING_FIRST +dnl +dnl If the standard library string::compare() function takes the +dnl string as its first argument, define FUNC_STRING_COMPARE_STRING_FIRST to 1. +dnl +dnl @author Steven Robbins +dnl +AC_DEFUN([AC_CXX_STRING_COMPARE_STRING_FIRST], +[AC_CACHE_CHECK(whether std::string::compare takes a string in argument 1, +ac_cv_cxx_string_compare_string_first, +[AC_REQUIRE([AC_CXX_NAMESPACES]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +#ifdef HAVE_NAMESPACES +using namespace std; +#endif],[string x("hi"); string y("h"); +return x.compare(y,0,1) == 0;], + ac_cv_cxx_string_compare_string_first=yes, + ac_cv_cxx_string_compare_string_first=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_string_compare_string_first" = yes; then + AC_DEFINE(FUNC_STRING_COMPARE_STRING_FIRST,1, + [define if library uses std::string::compare(string,pos,n)]) +fi +]) diff --git a/lib/cppunit-1.10.0/config/ac_dll.m4 b/lib/cppunit-1.10.0/config/ac_dll.m4 new file mode 100644 index 0000000000..ad7438a135 --- /dev/null +++ b/lib/cppunit-1.10.0/config/ac_dll.m4 @@ -0,0 +1,47 @@ + +# AC_LTDL_DLLIB +# ------------- +AC_DEFUN([AC_LTDL_DLLIB], +[LIBADD_DL= +AC_SUBST(LIBADD_DL) + +AC_CHECK_FUNC([shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.])], + [AC_CHECK_LIB([dld], [shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LIBADD_DL="$LIBADD_DL -ldld"], + [AC_CHECK_LIB([dl], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-ldl"], + [AC_TRY_LINK([#if HAVE_DLFCN_H +# include +#endif + ], + [dlopen(0, 0);], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.])], + [AC_CHECK_LIB([svld], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [AC_DEFINE([HAVE_DLD], [1], + [Define if you have the GNU dld library.]) + LIBADD_DL="$LIBADD_DL -ldld" + ]) + ]) + ]) + ]) + ]) +]) + +if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then + LIBS_SAVE="$LIBS" + LIBS="$LIBS $LIBADD_DL" + AC_CHECK_FUNCS(dlerror) + LIBS="$LIBS_SAVE" +fi +])# AC_LTDL_DLLIB diff --git a/lib/cppunit-1.10.0/config/ax_cxx_gcc_abi_demangle.m4 b/lib/cppunit-1.10.0/config/ax_cxx_gcc_abi_demangle.m4 new file mode 100644 index 0000000000..c924f998d3 --- /dev/null +++ b/lib/cppunit-1.10.0/config/ax_cxx_gcc_abi_demangle.m4 @@ -0,0 +1,40 @@ +dnl @synopsis AX_CXX_GCC_ABI_DEMANGLE +dnl +dnl If the compiler supports GCC C++ ABI name demangling (has header cxxabi.h +dnl and abi::__cxa_demangle() function), define HAVE_GCC_ABI_DEMANGLE +dnl +dnl Adapted from AC_CXX_RTTI by Luc Maisonobe +dnl +dnl @version $Id: ax_cxx_gcc_abi_demangle.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $ +dnl @author Neil Ferguson +dnl +AC_DEFUN([AX_CXX_GCC_ABI_DEMANGLE], +[AC_CACHE_CHECK(whether the compiler supports GCC C++ ABI name demangling, +ac_cv_cxx_gcc_abi_demangle, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include +#include +#include + +template +class A {}; +],[A instance; +int status = 0; +char* c_name = 0; + +c_name = abi::__cxa_demangle(typeid(instance).name(), 0, 0, &status); + +std::string name(c_name); +free(c_name); + +return name == "A"; +], + ac_cv_cxx_gcc_abi_demangle=yes, ac_cv_cxx_gcc_abi_demangle=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_gcc_abi_demangle" = yes; then + AC_DEFINE(HAVE_GCC_ABI_DEMANGLE,1, + [define if the compiler supports GCC C++ ABI name demangling]) +fi +]) diff --git a/lib/cppunit-1.10.0/config/bb_enable_doxygen.m4 b/lib/cppunit-1.10.0/config/bb_enable_doxygen.m4 new file mode 100644 index 0000000000..7ab38f04be --- /dev/null +++ b/lib/cppunit-1.10.0/config/bb_enable_doxygen.m4 @@ -0,0 +1,34 @@ +AC_DEFUN(BB_ENABLE_DOXYGEN, +[ +AC_ARG_ENABLE(doxygen, [ --enable-doxygen enable documentation generation with doxygen (auto)]) +AC_ARG_ENABLE(dot, [ --enable-dot use 'dot' to generate graphs in doxygen (auto)]) +AC_ARG_ENABLE(html-docs, [ --enable-html-docs enable HTML generation with doxygen (yes)], [], [ enable_html_docs=yes]) +AC_ARG_ENABLE(latex-docs, [ --enable-latex-docs enable LaTeX documentation generation with doxygen (no)], [], [ enable_latex_docs=no]) +if test "x$enable_doxygen" = xno; then + enable_doc=no +else + AC_PATH_PROG(DOXYGEN, doxygen, , $PATH) + if test "x$DOXYGEN" = x; then + if test "x$enable_doxygen" = xyes; then + AC_MSG_ERROR([could not find doxygen]) + fi + enable_doc=no + else + enable_doc=yes + AC_PATH_PROG(DOT, dot, , $PATH) + fi +fi +AM_CONDITIONAL(DOC, test x$enable_doc = xyes) + +if test x$DOT = x; then + if test "x$enable_dot" = xyes; then + AC_MSG_ERROR([could not find dot]) + fi + enable_dot=no +else + enable_dot=yes +fi +AC_SUBST(enable_dot) +AC_SUBST(enable_html_docs) +AC_SUBST(enable_latex_docs) +]) diff --git a/lib/cppunit-1.10.0/config/config.guess b/lib/cppunit-1.10.0/config/config.guess new file mode 100755 index 0000000000..c8fc68357d --- /dev/null +++ b/lib/cppunit-1.10.0/config/config.guess @@ -0,0 +1,1417 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-07-02' + +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 -q "$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 ;' + +# 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 + +case "${UNAME_MACHINE}" in + i?86) + test -z "$VENDOR" && VENDOR=pc + ;; + *) + test -z "$VENDOR" && VENDOR=unknown + ;; +esac +test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse + +# 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 ;; + *) 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 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # 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 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/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + 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 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + 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 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + 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 0 ;; + 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 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + 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 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # 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 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + 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 \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + 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 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????: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 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + 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 0 ;; + *: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 + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + 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 0 ;; + *:AIX:*:[45]) + 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 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 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 + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 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 && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + 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 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + 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 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + # GNU/FreeBSD systems have a "k" prefix to indicate we are using + # FreeBSD's kernel, but not the complete OS. + case ${LIBC} in gnu) kernel_only='k' ;; esac + echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + 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 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + 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 | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0 + ;; + 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 | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-${VENDOR}-linux + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-${VENDOR}-linux + exit 0 ;; + 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}-${VENDOR}-linux${LIBC} + exit 0 ;; + 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-${VENDOR}-linux ;; + PA8*) echo hppa2.0-${VENDOR}-linux ;; + *) echo hppa-${VENDOR}-linux ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-${VENDOR}-linux + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-${VENDOR}-linux + exit 0 ;; + 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}-${VENDOR}-linux" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-${VENDOR}-linuxaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-${VENDOR}-linuxcoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linuxoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-${VENDOR}-linuxoldld" + exit 0 ;; + 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 + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}" | sed 's/linux-gnu/linux/' && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + 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 0 ;; + 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 0 ;; + 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 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + 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 0 ;; + i*86:*:5:[78]*) + 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 0 ;; + 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 0 ;; + 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 i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + 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 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*: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) + 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 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *: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 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + 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 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *: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 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *: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 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; +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"); 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 && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# 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 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + 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: diff --git a/lib/cppunit-1.10.0/config/config.h.in b/lib/cppunit-1.10.0/config/config.h.in new file mode 100644 index 0000000000..0a921df4a5 --- /dev/null +++ b/lib/cppunit-1.10.0/config/config.h.in @@ -0,0 +1,94 @@ +/* config/config.h.in. Generated from configure.in by autoheader. */ + +/* define if library uses std::string::compare(string,pos,n) */ +#undef FUNC_STRING_COMPARE_STRING_FIRST + +/* define if the library defines strstream */ +#undef HAVE_CLASS_STRSTREAM + +/* Define to 1 if you have the header file. */ +#undef HAVE_CMATH + +/* Define if you have the GNU dld library. */ +#undef HAVE_DLD + +/* Define to 1 if you have the `dlerror' function. */ +#undef HAVE_DLERROR + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* define if the compiler supports GCC C++ ABI name demangling */ +#undef HAVE_GCC_ABI_DEMANGLE + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have the libdl library or equivalent. */ +#undef HAVE_LIBDL + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* define to 1 if the compiler implements namespaces */ +#undef HAVE_NAMESPACES + +/* define if the compiler supports Run-Time Type Identification */ +#undef HAVE_RTTI + +/* Define if you have the shl_load function. */ +#undef HAVE_SHL_LOAD + +/* define if the compiler has stringstream */ +#undef HAVE_SSTREAM + +/* 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_STRSTREAM + +/* 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 + +/* 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 + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 to use type_info::name() for class names */ +#undef USE_TYPEINFO_NAME + +/* Version number of package */ +#undef VERSION diff --git a/lib/cppunit-1.10.0/config/config.sub b/lib/cppunit-1.10.0/config/config.sub new file mode 100755 index 0000000000..9952c14c71 --- /dev/null +++ b/lib/cppunit-1.10.0/config/config.sub @@ -0,0 +1,1501 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-07-04' + +# 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., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, 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 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 0;; + + * ) + 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* | kfreebsd*-gnu* | netbsd*-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) + 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 + ;; + -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/'` + ;; + -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] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + 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) + ;; + + # 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-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # 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 + ;; + 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 + ;; + 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 + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + 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 + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + 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 + ;; + 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 + ;; + 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 + ;; + 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 + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + 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 + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + 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 + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + 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 + ;; + 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 + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + 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 + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + 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 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-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 + ;; + 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 + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + 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* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux* | -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*) + # 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* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -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 + ;; + -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 + ;; + -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 + *-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 + ;; + 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 + ;; + *-ibm) + os=-aix + ;; + *-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 + ;; + -ptx*) + vendor=sequent + ;; + -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 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lib/cppunit-1.10.0/config/depcomp b/lib/cppunit-1.10.0/config/depcomp new file mode 100755 index 0000000000..aea3d00785 --- /dev/null +++ b/lib/cppunit-1.10.0/config/depcomp @@ -0,0 +1,472 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, 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 Alexandre Oliva . + +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 +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +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 + +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. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + 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. 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. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + 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,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$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" + ;; + +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 + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab 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 proprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--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 $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + 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. + -*|$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 proprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--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 '/^# [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 proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/lib/cppunit-1.10.0/config/install-sh b/lib/cppunit-1.10.0/config/install-sh new file mode 100755 index 0000000000..6ce63b9f76 --- /dev/null +++ b/lib/cppunit-1.10.0/config/install-sh @@ -0,0 +1,294 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# +# 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. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "$0: no input file specified" >&2 + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d "$dst" ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "$0: $src does not exist" >&2 + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "$0: no destination specified" >&2 + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d "$dst" ] + then + dst=$dst/`basename "$src"` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-$defaultIFS}" + +oIFS=$IFS +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS=$oIFS + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp=$pathcomp$1 + shift + + if [ ! -d "$pathcomp" ] ; + then + $mkdirprog "$pathcomp" + else + : + fi + + pathcomp=$pathcomp/ +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd "$dst" && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename "$dst"` + else + : + fi + +# Make a couple of temp file names in the proper directory. + + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + +# Trap to clean up temp files at exit. + + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + +# Move or copy the file name to the temp name + + $doit $instcmd "$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 $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && + +# 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. + +{ + if [ -f "$dstdir/$dstfile" ] + then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || + $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || + { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi +} && + +# Now rename the file to the real destination. + + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + +fi && + +# The final little trick to "correctly" pass the exit status to the exit trap. + +{ + (exit 0); exit +} diff --git a/lib/cppunit-1.10.0/config/ltmain.sh b/lib/cppunit-1.10.0/config/ltmain.sh new file mode 100644 index 0000000000..8bf1b20bc8 --- /dev/null +++ b/lib/cppunit-1.10.0/config/ltmain.sh @@ -0,0 +1,6291 @@ +# 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 +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. + +# 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 "$0" --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 1 +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# 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. +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 | \ + grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` + if test "X$win32_nmres" = "Ximport" ; then + win32_libid_type="x86 archive import" + else + win32_libid_type="x86 archive static" + fi + 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 +} + +# End of Shell function definitions +##################################### + +# 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" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit 1 + ;; + 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$" < "$0" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" + 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" + $echo + $echo "Copyright (C) 2003 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit 0 + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 + # 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" < "$0" + done + exit 0 + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + ;; + + --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 0 + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + ;; + + --tag) prevopt="--tag" prev=tag ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 +fi + +# 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 1 + 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_output= + arg_mode=normal + libobj= + + 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 1 + fi + arg_mode=target + continue + ;; + + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=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, so we specify it 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 1 + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit 1 + ;; + *) + # 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 ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + 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 1 + ;; + esac + + # 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. + if test -n "$available_tags" && test -z "$tagname"; then + case $base_compile 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` "*) ;; + # 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$" < "$0" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" + case "$base_compile " in + "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) + # 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 1 +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi + + 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 1 + 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 1" 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 1" 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 "$0" "$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 1 + fi + $echo $srcfile > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + + $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 1 + 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 1 + 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 + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_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" + base_compile="$base_compile $arg" + 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 1 + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$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 1 + 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 + 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 1 + 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 1 + 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 1 + ;; + 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 + ;; + *) + 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 1 + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + 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 + exit 1 + 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*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd*) + # 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 + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # gcc -m* arguments should be passed to the linker via $compiler_flags + # in order to pass architecture information to the linker + # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo + # but this is not reliable with gcc because gcc may use -mfoo to + # select a different linker, different libraries, etc, while + # -Wl,-mfoo simply passes -mfoo to the linker. + -m*) + # 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" + if test "$with_gcc" = "yes" ; then + compiler_flags="$compiler_flags $arg" + fi + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # 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 ;; + + -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 1 + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # 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 1 + 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 + 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 1 + 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 1 + fi + + # 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 link + # command doesn't match the default compiler. + if test -n "$available_tags" && test -z "$tagname"; then + case $base_compile 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` "*) ;; + # 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$" < "$0" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" + case $base_compile in + "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) + # The compiler in $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 1 +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + 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 + status=$? + if test "$status" -ne 0 && test ! -d "$output_objdir"; then + 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 1 + ;; + *.$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 duplcations 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 + notinst_path= # paths that contain 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 1 + ;; + 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 + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + # Search the libtool library + lib="$searchdir/lib${name}.la" + if test -f "$lib"; then + found=yes + break + fi + 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" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + ;; + *) + $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) + if test "$deplibs_check_method" != pass_all; 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'" 1>&2 + exit 1 + 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 1 + 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 + + # 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 1 + 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 1 + 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 1 + 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 1 + 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 + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + 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 1 + 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 -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + 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 + if test -n "$library_names" && + { test "$prefer_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='~' + eval cmds=\"$extract_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $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='~' + eval cmds=\"$old_archive_from_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $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* ) 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 | grep "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="-L$inst_prefix_dir$libdir $add_dir" + ;; + 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 1 + 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="-L$inst_prefix_dir$libdir $add_dir" + ;; + 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 + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + 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 1 + 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` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + newlib_search_path="$newlib_search_path $path" + path="" + fi + ;; + *) + 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 + *" $depdepl "*) ;; + *) deplibs="$deplibs $depdepl" ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$deplibs $path" ;; + 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) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + 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\" + 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 1 + 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\" + 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 1 + 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 1 + 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) + 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 - 1` + age="$number_minor" + revision="$number_minor" + ;; + 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]) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case $revision in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case $age in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + 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 1 + 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` + 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) + major=`expr $current - $age + 1` + + 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 1 + ;; + 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}.*) + 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*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *) + # 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 + + # 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 + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + 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\" + 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" + 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 + eval cmds=\"$export_symbols_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + 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=: + 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" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "$mkdir $xdir" + $run $mkdir "$xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$xdir"; then + exit $status + fi + # We will extract separately just the conflicting names and we will no + # longer touch any unique names. It is faster to leave these extract + # automatically by $AR in one run. + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 + $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 + $AR t "$xabs" | sort | uniq -cd | while read -r count name + do + i=1 + while test "$i" -le "$count" + do + # Put our $i before any first dot (extension) + # Never overwrite any file + name_to="$name" + while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" + do + name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` + done + $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" + $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? + i=`expr $i + 1` + done + done + fi + + libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + 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 cmds=\"$module_expsym_cmds\" + else + eval cmds=\"$module_cmds\" + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval cmds=\"$archive_expsym_cmds\" + else + eval cmds=\"$archive_cmds\" + fi + fi + + if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` && + 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 + + # 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/$save_output-${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" : ".*"` && + 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/$save_output-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$save_output-${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 reloadale object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$save_output-${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 -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval cmds=\"$archive_expsym_cmds\" + else + eval cmds=\"$archive_cmds\" + 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" + $show "$cmd" + $run eval "$cmd" || 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 $? + exit 0 + 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) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + 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 1 + 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 + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "$mkdir $xdir" + $run $mkdir "$xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$xdir"; then + exit $status + fi + # We will extract separately just the conflicting names and we will no + # longer touch any unique names. It is faster to leave these extract + # automatically by $AR in one run. + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 + $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 + $AR t "$xabs" | sort | uniq -cd | while read -r count name + do + i=1 + while test "$i" -le "$count" + do + # Put our $i before any first dot (extension) + # Never overwrite any file + name_to="$name" + while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" + do + name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` + done + $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" + $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? + i=`expr $i + 1` + done + done + fi + + reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + 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" + eval cmds=\"$reload_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $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 0 + 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 0 + 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" + eval cmds=\"$reload_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $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 0 + ;; + + 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 + + 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*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + 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/$output.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' + $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + 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. */ +const struct { + 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 -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC -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. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit 1 + ;; + 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" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + 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 $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 0 + 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" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + 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" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $0 --fallback-echo"; then + case $0 in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; + *) qecho="$SHELL `pwd`/$0 --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* ) + cwrappersource=`$echo ${objdir}/lt-${output}.c` + cwrapper=`$echo ${output}.exe` + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#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 '/' +#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 +#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 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +char * basename (const char *name); +char * fnqualify(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 ((char *) basename (argv[0])); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = fnqualify(argv[0]); + /* 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; +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" +} + +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 +; +} + +char * +basename (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha (name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return (char *) base; +} + +char * +fnqualify(const char *path) +{ + size_t size; + char *p; + char tmp[LT_PATHMAX + 1]; + + assert(path != NULL); + + /* Is it qualified already? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha (path[0]) && path[1] == ':') + return xstrdup (path); +#endif + if (IS_DIR_SEPARATOR (path[0])) + return xstrdup (path); + + /* prepend the current directory */ + /* doesn't handle '~' */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ + p = XMALLOC(char, size); + sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); + return p; +} + +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 -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit 1" 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' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi + +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 1 + 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 \${1+\"\$@\"}\" + exit 1 + 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 1 + fi +fi\ +" + chmod +x $output + fi + exit 0 + ;; + 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" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "$mkdir $xdir" + $run $mkdir "$xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$xdir"; then + exit $status + fi + # We will extract separately just the conflicting names and we will no + # longer touch any unique names. It is faster to leave these extract + # automatically by $AR in one run. + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 + $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 + $AR t "$xabs" | sort | uniq -cd | while read -r count name + do + i=1 + while test "$i" -le "$count" + do + # Put our $i before any first dot (extension) + # Never overwrite any file + name_to="$name" + while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" + do + name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` + done + $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" + $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? + i=`expr $i + 1` + done + done + fi + + oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` + done + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + eval cmds=\"$old_archive_from_new_cmds\" + else + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + 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 in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + # GNU ar 2.10+ was changed to match POSIX; thus no paths are + # encoded into archives. This makes 'ar r' malfunction in + # this piecewise linking case whenever conflicting object + # names appear in distinct ar calls; check, warn and compensate. + if (for obj in $save_oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 + $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 + AR_FLAGS=cq + fi + # 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" : ".*"` && + 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 + 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 $0 --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + + # 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 1 + 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 1 + 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 1 + fi + newdlprefiles="$newdlprefiles $libdir/$name" + 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 0 + ;; + + # 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" | $Xsed | 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) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -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 1 + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + 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 1 + 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 1 + 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 1 + ;; + 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 1 + 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 1 + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + 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 1 + 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. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + eval cmds=\"$postinstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || 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 1 + ;; + 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 0 + ;; + + *) + # 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= + + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + 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 1 + 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= + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null` || + tmpdir="$tmpdir/libtool-$$" + if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : + else + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $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 anyways + 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 "$striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + eval cmds=\"$old_postinstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $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 $0 --finish$current_libdirs' + else + exit 0 + 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. + eval cmds=\"$finish_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $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 0 + + $echo "----------------------------------------------------------------------" + $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 "----------------------------------------------------------------------" + exit 0 + ;; + + # 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 1 + 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 1 + 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 1 + 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 + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit 1 + 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 + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # 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 + eval \$echo \"\$cmd\"$args + exit 0 + 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 1 + 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" + test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test "$mode" = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $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. + eval cmds=\"$old_postuninstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $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. + fi + 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 1 + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit 1 +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 0 + ;; + +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 + -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 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 1 + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit 0 + +# 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 +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/lib/cppunit-1.10.0/config/missing b/lib/cppunit-1.10.0/config/missing new file mode 100755 index 0000000000..6a37006e8f --- /dev/null +++ b/lib/cppunit-1.10.0/config/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, 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. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# 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 + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -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' + 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]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + 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' is missing on your system. 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 [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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 [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # 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 you do not seem to have it handy on your + system. 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 prerequirements 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 diff --git a/lib/cppunit-1.10.0/config/mkinstalldirs b/lib/cppunit-1.10.0/config/mkinstalldirs new file mode 100755 index 0000000000..d2d5f21b61 --- /dev/null +++ b/lib/cppunit-1.10.0/config/mkinstalldirs @@ -0,0 +1,111 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" 1>&2 + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +case $dirmode in + '') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi + ;; + *) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# End: +# mkinstalldirs ends here diff --git a/lib/cppunit-1.10.0/configure b/lib/cppunit-1.10.0/configure new file mode 100755 index 0000000000..2e28ba6146 --- /dev/null +++ b/lib/cppunit-1.10.0/configure @@ -0,0 +1,21179 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.57. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# 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 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+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + + +# 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 && + 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=`echo "$tagnames,CXX" | sed 's/^,//'` + +tagnames=`echo "$tagnames,F77" | sed 's/^,//'` + +# 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` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="Makefile.am" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CPPUNIT_MAJOR_VERSION CPPUNIT_MINOR_VERSION CPPUNIT_MICRO_VERSION CPPUNIT_INTERFACE_AGE CPPUNIT_BINARY_AGE CPPUNIT_VERSION LT_RELEASE LT_CURRENT LT_REVISION LT_AGE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBADD_DL DOXYGEN DOT DOC_TRUE DOC_FALSE enable_dot enable_html_docs enable_latex_docs LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# 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. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +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 + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -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 | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$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 ;; + + -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 ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + 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 ;; + + -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=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 ;; + + -*) { 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 && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +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 + 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 + + +# 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 its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + 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 + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP +ac_env_F77_set=${F77+set} +ac_env_F77_value=$F77 +ac_cv_env_F77_set=${F77+set} +ac_cv_env_F77_value=$F77 +ac_env_FFLAGS_set=${FFLAGS+set} +ac_env_FFLAGS_value=$FFLAGS +ac_cv_env_FFLAGS_set=${FFLAGS+set} +ac_cv_env_FFLAGS_value=$FFLAGS + +# +# 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 \`..'] + +_ACEOF + + cat <<_ACEOF +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] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_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] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --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 builds + --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-doxygen enable documentation generation with doxygen (auto) + --enable-dot use 'dot' to generate graphs in doxygen (auto) + --enable-html-docs enable HTML generation with doxygen (yes) + --enable-latex-docs enable LaTeX documentation generation with doxygen (no) + --disable-typeinfo-name disable use of RTTI for class names + +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] + +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 + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CPP C preprocessor + 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 +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style 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 + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +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 0 +fi +exec 5>config.log +cat >&5 <<_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.57. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +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` +hostinfo = `(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=. + echo "PATH: $as_dir" +done + +} >&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_sep= +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=`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_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +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, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf 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 -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >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 explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +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 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +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 `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`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 + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +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 + + + + + + + + + + + + + + + + + + + + +# autoconf 2.50 or higher to rebuild aclocal.m4, because the +# AC_CREATE_PREFIX_CONFIG_H macro needs the AS_DIRNAME macro. + + +# Making releases: +# CPPUNIT_MICRO_VERSION += 1; +# CPPUNIT_INTERFACE_AGE += 1; +# CPPUNIT_BINARY_AGE += 1; +# if any functions have been added, set CPPUNIT_INTERFACE_AGE to 0. +# if backwards compatibility has been broken, +# set CPPUNIT_BINARY_AGE and CPPUNIT_INTERFACE_AGE to 0. +# +CPPUNIT_MAJOR_VERSION=1 +CPPUNIT_MINOR_VERSION=10 +CPPUNIT_MICRO_VERSION=0 +CPPUNIT_INTERFACE_AGE=0 +CPPUNIT_BINARY_AGE=0 +CPPUNIT_VERSION=$CPPUNIT_MAJOR_VERSION.$CPPUNIT_MINOR_VERSION.$CPPUNIT_MICRO_VERSION + + + + + + + +# libtool versioning +LT_RELEASE=$CPPUNIT_MAJOR_VERSION.$CPPUNIT_MINOR_VERSION +LT_CURRENT=`expr $CPPUNIT_MICRO_VERSION - $CPPUNIT_INTERFACE_AGE` +LT_REVISION=$CPPUNIT_INTERFACE_AGE +LT_AGE=`expr $CPPUNIT_BINARY_AGE - $CPPUNIT_INTERFACE_AGE` + + + + + +ac_aux_dir= +for ac_dir in config $srcdir/config; 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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + + ac_config_headers="$ac_config_headers config/config.h" + +am__api_version="1.7" +# 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" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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/* | \ + /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 $as_executable_p "$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 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +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. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$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' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# 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". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +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 + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}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 $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 + + # test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +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=cppunit + VERSION=$CPPUNIT_VERSION + + +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"} + + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. + + + + +# General "with" options +# ---------------------------------------------------------------------------- + + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +# 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" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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/* | \ + /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 $as_executable_p "$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 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +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. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$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' + + +# The libtool macro AC_PROG_LIBTOOL checks for the C preprocessor. +# Configure gets confused if we try to check for a C preprocessor +# without first checking for the C compiler +# (see http://sources.redhat.com/ml/autoconf/2001-07/msg00036.html), +# so we invoke AC_PROG_CC explicitly. +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +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 + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +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. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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.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. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +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 +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + 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 + { { 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 +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 +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + 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 | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +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 +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +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 +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$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 +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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; +} +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 +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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 +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-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= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + 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 + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + 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 + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} 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 + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' 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 +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$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 + + +ac_ext=cc +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 -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$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 +for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +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 + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + 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 + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + 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 + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} 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 + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' 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 +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$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 + + +ac_ext=cc +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 + + +# Check whether --enable-shared or --disable-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 or --disable-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 or --disable-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; + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $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 +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 && break + 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 + +fi + +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + 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 +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + + +# Check whether --with-gnu-ld or --without-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. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&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 path 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 + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 GNU ld's 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 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$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' + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}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" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6 +NM="$lt_cv_path_NM" + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + 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* | mingw* | pw32*) + # 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='win32_libid' + ;; + +darwin* | rhapsody*) + # this will be overwritten by pass_all, but leave it in just in case + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[012]) + lt_cv_file_magic_test_file=`/System/Library/Frameworks/System.framework/System` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd*) + 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)/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 + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + case $host_cpu in + alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh* | x86_64) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +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*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$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"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check whether --enable-libtool-lock or --disable-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=$? + 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 4112 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + 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-*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=$? + 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-*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*) + case $host in + 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" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.$ac_objext 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 +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$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 + ;; + +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&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 + echo $ECHO_N "(cached) $ECHO_C" >&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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + 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 non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + 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 non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +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 + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f 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 +#line $LINENO "configure" +/* 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 +#line $LINENO "configure" +/* 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 +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#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)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cc +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 +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + 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 non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + 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 non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + 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 + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +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 + + +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 f77 xlf frt pgf77 fl32 af77 fort77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 lf95 g95 + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 f77 xlf frt pgf77 fl32 af77 fort77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 lf95 g95 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_F77" && break +done + + F77=$ac_ct_F77 +fi + + +# Provide some information about the compiler. +echo "$as_me:5187:" \ + "checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +ac_ext=$ac_save_ext +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_f77_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$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 "$G77" = yes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "$G77" = yes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi +ac_ext=cc +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 + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + testring="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; + ;; + + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \ + = "XX$testring") >/dev/null 2>&1 && + new_result=`expr "X$testring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + testring=$testring$testring + done + testring= + # 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` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +else + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# 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'" + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris* | sysv5*) + symcode='[BDT]' + ;; +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='[ABCDGISTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # 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=$? + 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=$? + 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=$? + 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 -f 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 + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$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 s/^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 M$VC, +# 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +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 "$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_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# 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 + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-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 or --without-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;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# +# Check for any special shared library compilation flags. +# +lt_prog_cc_shlib= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + lt_prog_cc_shlib='-belf' + ;; + esac +fi +if test -n "$lt_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_prog_compiler_static" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler 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 + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6192: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6196: \$? = $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 + if test ! -s conftest.err; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$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= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&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* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | 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' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + 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 + ;; + + mingw* | 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*) + case $CC in + icc|ecc) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + ccc) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic='-Kpic' + lt_prog_compiler_static='-dn' + ;; + + solaris*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6424: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6428: \$? = $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 + if test ! -s conftest.err; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 + +if test x"$lt_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 + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + # According to Tom Tromey, Ian Lance Taylor reported there are C compilers + # that will create temporary files in the current directory regardless of + # the output directory. Thus, making CWD read-only will cause this test + # to fail, enabling locking or at least warning the user not to do parallel + # builds. + chmod -w . + + 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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6491: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:6495: \$? = $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 + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . + $rm conftest* out/* + rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +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 + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&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_" + # 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. + extract_expsyms_cmds= + + 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 + ;; + 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}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # 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 '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + 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* | sysv5*) + 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 + ;; + + 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" = yes; then + 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 + 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 "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + 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].*|aix5*) + 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 + hardcode_direct=yes + 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' + 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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec=' ' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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 + ;; + + bsdi4*) + 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=".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*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + archive_cmds_need_lc=no + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds='$CC -r ${wl}-bind_at_load -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' + fi + module_cmds='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='-all_load $convenience' + link_all_deplibs=yes + 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*) + 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* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) + archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + 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 + ;; + 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*) + 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' + 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 + ;; + + 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 ${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=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + 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 + 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].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + 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.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + 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 + +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +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 + +# +# 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. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + 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 + 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=$? + 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* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$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= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}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" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext=".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 + 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 ';' >/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. + 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 +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' + ;; + +aix4* | aix5*) + 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 + ;; + +bsdi4*) + 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=".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' + 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="/lib /lib/w32api /usr/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 + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + 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='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + fi + 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*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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='.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='.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='.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' + ;; + +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*) + 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 + + case $LD in # libtool.m4 will add one of these switches to LD + *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64" + ;; + esac + + # 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}${release}${shared_ext} ${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 + need_lib_prefix=no + need_version=no + 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=".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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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 +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +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 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = 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 + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* 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 +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* 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 +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +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" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$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 librarie types wil actually be built +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&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 + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + darwin* | rhapsody*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + archive_cmds_need_lc=no + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~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 -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='-all_load $convenience' + link_all_deplibs=yes + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$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 AS EGREP RANLIB LN_S LTCC NM SED SHELL \ + 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 \ + 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 \ + 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" + { echo "$as_me:$LINENO: creating $ofile" >&5 +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 +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# 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 + +# 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 + +# 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=$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=$lt_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='$shrext' + +# 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 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="$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. + test -f Makefile && make "$ltmain" +fi + + +ac_ext=cc +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 + +CC="$lt_save_CC" + + +# Check whether --with-tags or --without-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 + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +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 + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + 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 + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +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 + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +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"; then + ac_ext=cc +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_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= + +# Source file extension for C++ test sources. +ac_ext=cc + +# 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;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# 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 + 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 + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# 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 or --without-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. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&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 path 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 + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 GNU ld's 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 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$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 $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 +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + 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].*|aix5*) + 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 + hardcode_direct_CXX=yes + 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' + 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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_CXX=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX=' ' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_CXX=no + fi + ;; + + darwin* | rhapsody*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + archive_cmds_need_lc_CXX=no + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_CXX='-flat_namespace -undefined suppress' + ;; + esac + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r ${wl}-bind_at_load -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' + fi + module_cmds_CXX='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' + + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='-all_load $convenience' + link_all_deplibs_CXX=yes + 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 + ;; + freebsd12*) + # 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*) + # 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) | egrep "\-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 + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + hardcode_libdir_separator_CXX=: + ;; + ia64*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + *) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + 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*|ia64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + 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 + ia64*|hppa*64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + 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 + ;; + 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 ${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}${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*) + 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 + archive_cmds_need_lc_CXX=no + 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' + 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' + ;; + 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' + ;; + 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::"' + ;; + 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 ${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}${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 ${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 $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}${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 + ;; + sco*) + archive_cmds_need_lc_CXX=no + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + 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++ + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -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} -nolib ${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 C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + # 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 -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # 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' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + archive_cmds_need_lc_CXX=no + ;; + 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 +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$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=$? + 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 + +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= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&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* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | 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). + 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= + ;; + 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 + aix4* | aix5*) + # 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 + ;; + 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*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + 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*) + case $cc_basename in + KCC) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + 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' + ;; + *) + ;; + 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*) + ;; + sco*) + case $cc_basename in + CC) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + *) + ;; + esac + ;; + 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 + ;; + unixware*) + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:10740: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:10744: \$? = $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 + if test ! -s conftest.err; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 + +if test x"$lt_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 + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + # According to Tom Tromey, Ian Lance Taylor reported there are C compilers + # that will create temporary files in the current directory regardless of + # the output directory. Thus, making CWD read-only will cause this test + # to fail, enabling locking or at least warning the user not to do parallel + # builds. + chmod -w . + + 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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:10807: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:10811: \$? = $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 + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . + $rm conftest* out/* + rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +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 + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # 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 '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +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 + +# +# 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. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + 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 + 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=$? + 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* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$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 + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}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" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext=".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 + 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 ';' >/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. + 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 +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' + ;; + +aix4* | aix5*) + 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 + ;; + +bsdi4*) + 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=".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' + 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="/lib /lib/w32api /usr/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 + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + 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='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + fi + 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*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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='.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='.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='.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' + ;; + +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*) + 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 + + case $LD in # libtool.m4 will add one of these switches to LD + *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64" + ;; + esac + + # 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}${release}${shared_ext} ${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 + need_lib_prefix=no + need_version=no + 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=".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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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 +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +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 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = 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 + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* 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 +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* 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 +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +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" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$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 + + +# 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 AS EGREP RANLIB LN_S LTCC NM SED SHELL \ + 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 \ + 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 \ + 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 + +# 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 + +# 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=$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=$lt_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='$shrext' + +# 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 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="$fix_srcfile_path_CXX" + +# 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. + test -f Makefile && make "$ltmain" +fi + + +ac_ext=cc +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 + +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\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&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 + ;; +aix4*) + test "$enable_shared" = yes && enable_static=no + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +test "$ld_shlibs_F77" = no && can_build_shared=no + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&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* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | 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' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + 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 + ;; + + mingw* | 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*) + case $CC in + icc|ecc) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + ccc) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_F77='-Kpic' + lt_prog_compiler_static_F77='-dn' + ;; + + solaris*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + 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* | sysv5*) + 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 + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:12977: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:12981: \$? = $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 + if test ! -s conftest.err; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 + +if test x"$lt_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 + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + # According to Tom Tromey, Ian Lance Taylor reported there are C compilers + # that will create temporary files in the current directory regardless of + # the output directory. Thus, making CWD read-only will cause this test + # to fail, enabling locking or at least warning the user not to do parallel + # builds. + chmod -w . + + 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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13044: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13048: \$? = $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 + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . + $rm conftest* out/* + rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +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 + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&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_" + # 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. + extract_expsyms_cmds= + + 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 + ;; + 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}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # 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 '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=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* | sysv5*) + 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 + ;; + + 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" = yes; then + 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 + 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 "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + 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].*|aix5*) + 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 + hardcode_direct_F77=yes + 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' + 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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_F77=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77=' ' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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 + ;; + + bsdi4*) + 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=".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='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + archive_cmds_need_lc_F77=no + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_F77='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_F77='$CC -r ${wl}-bind_at_load -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' + fi + module_cmds_F77='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='-all_load $convenience' + link_all_deplibs_F77=yes + 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*) + 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* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) + archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + ia64*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + *) + 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 + ;; + 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*) + 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' + 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 + ;; + + 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 ${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=: + ;; + + sco3.2v5*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + 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 + 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].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + 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.2uw2*) + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_F77='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv5*) + no_undefined_flag_F77=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec_F77= + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + ;; + + 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 + +echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6 +test "$ld_shlibs_F77" = no && can_build_shared=no + +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 + +# +# 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. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + 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 + 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=$? + 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* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$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 + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}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" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext=".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 + 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 ';' >/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. + 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 +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' + ;; + +aix4* | aix5*) + 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 + ;; + +bsdi4*) + 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=".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' + 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="/lib /lib/w32api /usr/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 + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + 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='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + fi + 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*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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='.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='.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='.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' + ;; + +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*) + 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 + + case $LD in # libtool.m4 will add one of these switches to LD + *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64" + ;; + esac + + # 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}${release}${shared_ext} ${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 + need_lib_prefix=no + need_version=no + 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=".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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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 +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + + +# 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 AS EGREP RANLIB LN_S LTCC NM SED SHELL \ + 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 \ + 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 \ + 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 + +# 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 + +# 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=$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=$lt_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='$shrext' + +# 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 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="$fix_srcfile_path_F77" + +# 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. + test -f Makefile && make "$ltmain" +fi + + +ac_ext=cc +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 + +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 {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14991: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:14995: \$? = $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 + if test ! -s conftest.err; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$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= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&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* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | 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_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + 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 + ;; + + mingw* | 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_GCJ='-DDLL_EXPORT' + ;; + + 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*) + case $CC in + icc|ecc) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + ccc) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_GCJ='-Kpic' + lt_prog_compiler_static_GCJ='-dn' + ;; + + solaris*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + 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* | sysv5*) + 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 + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15223: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15227: \$? = $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 + if test ! -s conftest.err; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 + +if test x"$lt_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 + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + # According to Tom Tromey, Ian Lance Taylor reported there are C compilers + # that will create temporary files in the current directory regardless of + # the output directory. Thus, making CWD read-only will cause this test + # to fail, enabling locking or at least warning the user not to do parallel + # builds. + chmod -w . + + 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}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15290: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:15294: \$? = $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 + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . + $rm conftest* out/* + rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$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 + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +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 + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&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_" + # 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. + extract_expsyms_cmds= + + 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 + ;; + 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}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # 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 '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=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* | sysv5*) + 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 + ;; + + 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" = yes; then + 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 + 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 "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + 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].*|aix5*) + 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 + hardcode_direct_GCJ=yes + 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' + 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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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 +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext 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' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_GCJ=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ=' ' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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 + ;; + + bsdi4*) + 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=".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='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + archive_cmds_need_lc_GCJ=no + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='-undefined suppress' + ;; + *) # Darwin 1.3 on + test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -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' + fi + module_cmds_GCJ='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='-all_load $convenience' + link_all_deplibs_GCJ=yes + 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*) + 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* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) + archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + ia64*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + *) + 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 + ;; + 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*) + 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' + 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 + ;; + + 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 ${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=: + ;; + + sco3.2v5*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + 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 + 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].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + 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.2uw2*) + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv5*) + no_undefined_flag_GCJ=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec_GCJ= + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + ;; + + 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 + +echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +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 + +# +# 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. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + 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 + 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=$? + 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* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$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 + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}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" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext=".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 + 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 ';' >/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. + 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 +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' + ;; + +aix4* | aix5*) + 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 + ;; + +bsdi4*) + 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=".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' + 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="/lib /lib/w32api /usr/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 + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + 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='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + fi + 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*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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='.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='.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='.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' + ;; + +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*) + 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 + + case $LD in # libtool.m4 will add one of these switches to LD + *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64" + ;; + esac + + # 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}${release}${shared_ext} ${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 + need_lib_prefix=no + need_version=no + 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=".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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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 +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +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 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = 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 + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* 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 +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* 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 +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +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" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$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 + + +# 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 AS EGREP RANLIB LN_S LTCC NM SED SHELL \ + 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 \ + 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 \ + 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 + +# 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 + +# 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=$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=$lt_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='$shrext' + +# 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 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="$fix_srcfile_path_GCJ" + +# 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. + test -f Makefile && make "$ltmain" +fi + + +ac_ext=cc +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 + +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 }\n' + +# 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"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +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 AS EGREP RANLIB LN_S LTCC NM SED SHELL \ + 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 \ + 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 \ + 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 + +# 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 + +# 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=$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=$lt_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='$shrext' + +# 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 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="$fix_srcfile_path_RC" + +# 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. + test -f Makefile && make "$ltmain" +fi + + +ac_ext=cc +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 + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +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" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +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 + + + + + + + + + + + + + + + + + + + + + +# check for dlopen,dlsym... or shl_load, shl_findsym... +LIBADD_DL= + + +echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* 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 +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +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 +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SHL_LOAD 1 +_ACEOF + +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SHL_LOAD 1 +_ACEOF + + LIBADD_DL="$LIBADD_DL -ldld" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBDL 1 +_ACEOF + + LIBADD_DL="-ldl" +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if HAVE_DLFCN_H +# include +#endif + +int +main () +{ +dlopen(0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBDL 1 +_ACEOF + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBDL 1 +_ACEOF + + LIBADD_DL="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DLD 1 +_ACEOF + + LIBADD_DL="$LIBADD_DL -ldld" + +fi + + +fi + + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi + + +fi + + +fi + + +if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then + LIBS_SAVE="$LIBS" + LIBS="$LIBS $LIBADD_DL" + +for ac_func in dlerror +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* 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_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + LIBS="$LIBS_SAVE" +fi + + +# check for doxygen + +# Check whether --enable-doxygen or --disable-doxygen was given. +if test "${enable_doxygen+set}" = set; then + enableval="$enable_doxygen" + +fi; +# Check whether --enable-dot or --disable-dot was given. +if test "${enable_dot+set}" = set; then + enableval="$enable_dot" + +fi; +# Check whether --enable-html-docs or --disable-html-docs was given. +if test "${enable_html_docs+set}" = set; then + enableval="$enable_html_docs" + +else + enable_html_docs=yes +fi; +# Check whether --enable-latex-docs or --disable-latex-docs was given. +if test "${enable_latex_docs+set}" = set; then + enableval="$enable_latex_docs" + +else + enable_latex_docs=no +fi; +if test "x$enable_doxygen" = xno; then + enable_doc=no +else + # Extract the first word of "doxygen", so it can be a program name with args. +set dummy doxygen; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_DOXYGEN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $DOXYGEN in + [\\/]* | ?:[\\/]*) + ac_cv_path_DOXYGEN="$DOXYGEN" # 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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +DOXYGEN=$ac_cv_path_DOXYGEN + +if test -n "$DOXYGEN"; then + echo "$as_me:$LINENO: result: $DOXYGEN" >&5 +echo "${ECHO_T}$DOXYGEN" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + if test "x$DOXYGEN" = x; then + if test "x$enable_doxygen" = xyes; then + { { echo "$as_me:$LINENO: error: could not find doxygen" >&5 +echo "$as_me: error: could not find doxygen" >&2;} + { (exit 1); exit 1; }; } + fi + enable_doc=no + else + enable_doc=yes + # Extract the first word of "dot", so it can be a program name with args. +set dummy dot; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_DOT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $DOT in + [\\/]* | ?:[\\/]*) + ac_cv_path_DOT="$DOT" # 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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DOT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +DOT=$ac_cv_path_DOT + +if test -n "$DOT"; then + echo "$as_me:$LINENO: result: $DOT" >&5 +echo "${ECHO_T}$DOT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + fi +fi + + +if test x$enable_doc = xyes; then + DOC_TRUE= + DOC_FALSE='#' +else + DOC_TRUE='#' + DOC_FALSE= +fi + + +if test x$DOT = x; then + if test "x$enable_dot" = xyes; then + { { echo "$as_me:$LINENO: error: could not find dot" >&5 +echo "$as_me: error: could not find dot" >&2;} + { (exit 1); exit 1; }; } + fi + enable_dot=no +else + enable_dot=yes +fi + + + + + + +# Check for headers +# Note that the fourth argument to AC_CHECK_HEADERS is non-empty to force +# the configure probe to try compiling "#include
". See autoconf docs. +# ---------------------------------------------------------------------------- + + +for ac_header in cmath +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/**/ + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Check for compiler characteristics +# ---------------------------------------------------------------------------- + +echo "$as_me:$LINENO: checking whether the compiler supports Run-Time Type Identification" >&5 +echo $ECHO_N "checking whether the compiler supports Run-Time Type Identification... $ECHO_C" >&6 +if test "${ac_cv_cxx_rtti+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + ac_ext=cc +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 + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +class Base { public : + Base () {} + virtual int f () { return 0; } + }; +class Derived : public Base { public : + Derived () {} + virtual int f () { return 1; } + }; + +int +main () +{ +Derived d; +Base *ptr = &d; +return typeid (*ptr) == typeid (Derived); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_cxx_rtti=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_cxx_rtti=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_ext=cc +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 +echo "$as_me:$LINENO: result: $ac_cv_cxx_rtti" >&5 +echo "${ECHO_T}$ac_cv_cxx_rtti" >&6 +if test "$ac_cv_cxx_rtti" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_RTTI 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether the compiler supports GCC C++ ABI name demangling" >&5 +echo $ECHO_N "checking whether the compiler supports GCC C++ ABI name demangling... $ECHO_C" >&6 +if test "${ac_cv_cxx_gcc_abi_demangle+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + ac_ext=cc +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 + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include + +template +class A {}; + +int +main () +{ +A instance; +int status = 0; +char* c_name = 0; + +c_name = abi::__cxa_demangle(typeid(instance).name(), 0, 0, &status); + +std::string name(c_name); +free(c_name); + +return name == "A"; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_cxx_gcc_abi_demangle=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_cxx_gcc_abi_demangle=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_ext=cc +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 +echo "$as_me:$LINENO: result: $ac_cv_cxx_gcc_abi_demangle" >&5 +echo "${ECHO_T}$ac_cv_cxx_gcc_abi_demangle" >&6 +if test "$ac_cv_cxx_gcc_abi_demangle" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GCC_ABI_DEMANGLE 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether the compiler implements namespaces" >&5 +echo $ECHO_N "checking whether the compiler implements namespaces... $ECHO_C" >&6 +if test "${ac_cv_cxx_namespaces+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + ac_ext=cc +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 + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +namespace Outer { namespace Inner { int i = 0; }} +int +main () +{ +using namespace Outer::Inner; return i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_cxx_namespaces=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_cxx_namespaces=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_ext=cc +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 +echo "$as_me:$LINENO: result: $ac_cv_cxx_namespaces" >&5 +echo "${ECHO_T}$ac_cv_cxx_namespaces" >&6 +if test "$ac_cv_cxx_namespaces" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_NAMESPACES 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether std::string::compare takes a string in argument 1" >&5 +echo $ECHO_N "checking whether std::string::compare takes a string in argument 1... $ECHO_C" >&6 +if test "${ac_cv_cxx_string_compare_string_first+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + + ac_ext=cc +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 + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef HAVE_NAMESPACES +using namespace std; +#endif +int +main () +{ +string x("hi"); string y("h"); +return x.compare(y,0,1) == 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_cxx_string_compare_string_first=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_cxx_string_compare_string_first=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_ext=cc +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 +echo "$as_me:$LINENO: result: $ac_cv_cxx_string_compare_string_first" >&5 +echo "${ECHO_T}$ac_cv_cxx_string_compare_string_first" >&6 +if test "$ac_cv_cxx_string_compare_string_first" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define FUNC_STRING_COMPARE_STRING_FIRST 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether the compiler has stringstream" >&5 +echo $ECHO_N "checking whether the compiler has stringstream... $ECHO_C" >&6 +if test "${ac_cv_cxx_have_sstream+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + + ac_ext=cc +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 + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef HAVE_NAMESPACES +using namespace std; +#endif +int +main () +{ +stringstream message; message << "Hello"; return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_cxx_have_sstream=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_cxx_have_sstream=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_ext=cc +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 +echo "$as_me:$LINENO: result: $ac_cv_cxx_have_sstream" >&5 +echo "${ECHO_T}$ac_cv_cxx_have_sstream" >&6 +if test "$ac_cv_cxx_have_sstream" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SSTREAM 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking whether the library defines class strstream" >&5 +echo $ECHO_N "checking whether the library defines class strstream... $ECHO_C" >&6 +if test "${ac_cv_cxx_have_class_strstream+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + + ac_ext=cc +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 + + +for ac_header in strstream +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* 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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + 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 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#if HAVE_STRSTREAM +# include +#else +# include +#endif +#ifdef HAVE_NAMESPACES +using namespace std; +#endif +int +main () +{ +ostrstream message; message << "Hello"; return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_cxx_have_class_strstream=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_cxx_have_class_strstream=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_ext=cc +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 +echo "$as_me:$LINENO: result: $ac_cv_cxx_have_class_strstream" >&5 +echo "${ECHO_T}$ac_cv_cxx_have_class_strstream" >&6 +if test "$ac_cv_cxx_have_class_strstream" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CLASS_STRSTREAM 1 +_ACEOF + +fi + + +cppunit_val='CPPUNIT_HAVE_RTTI' +# Check whether --enable-typeinfo-name or --disable-typeinfo-name was given. +if test "${enable_typeinfo_name+set}" = set; then + enableval="$enable_typeinfo_name" + + test x$enableval = 'xno' && cppunit_val='0' + +fi; + + +cat >>confdefs.h <<_ACEOF +#define USE_TYPEINFO_NAME $cppunit_val +_ACEOF + + + +# Doesn't work. It's supposed to add "#define CPPUNIT_NO_TESTPLUGIN" if +# --disable-test-plugin was used on the command line. +# +# +# +#AC_ARG_ENABLE(test-plugin, +#[ --disable-test-plugin disable support for test plug-ins], +#[ +# if test -n "$enable_test_plugin"; then +# enable_test_plugin=${enable_test_plugin_default-yes} +# fi +# if test "$enable_test_plugin" = no; then +#echo "test-plug in disabled" +# fi +#]) +# +#testplugin_val=1 +#AC_DEFINE_UNQUOTED(NO_TESTPLUGIN,$testplugin_val, +#[defined to disable TestPlugIn]) + + + ac_config_files="$ac_config_files Makefile cppunit.spec cppunit-config src/Makefile src/DllPlugInTester/Makefile src/cppunit/Makefile include/Makefile include/cppunit/Makefile include/cppunit/config/Makefile include/cppunit/extensions/Makefile include/cppunit/plugin/Makefile include/cppunit/portability/Makefile include/cppunit/tools/Makefile include/cppunit/ui/Makefile include/cppunit/ui/mfc/Makefile include/cppunit/ui/qt/Makefile include/cppunit/ui/text/Makefile doc/Makefile doc/Doxyfile examples/Makefile examples/simple/Makefile examples/hierarchy/Makefile examples/cppunittest/Makefile examples/ClockerPlugIn/Makefile examples/DumperPlugIn/Makefile examples/money/Makefile" + ac_config_commands="$ac_config_commands default" +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, don't put newlines in cache variables' values. +# 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. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *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 \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!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" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + 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}' + +# 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 + +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_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +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 + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +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 + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +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 +if test -z "${DOC_TRUE}" && test -z "${DOC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"DOC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"DOC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $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 +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be 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+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + 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=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # 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 before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, 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 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet 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_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.57, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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 + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +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" ;; + + 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 +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "cppunit.spec" ) CONFIG_FILES="$CONFIG_FILES cppunit.spec" ;; + "cppunit-config" ) CONFIG_FILES="$CONFIG_FILES cppunit-config" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/DllPlugInTester/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/DllPlugInTester/Makefile" ;; + "src/cppunit/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/cppunit/Makefile" ;; + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "include/cppunit/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/Makefile" ;; + "include/cppunit/config/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/config/Makefile" ;; + "include/cppunit/extensions/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/extensions/Makefile" ;; + "include/cppunit/plugin/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/plugin/Makefile" ;; + "include/cppunit/portability/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/portability/Makefile" ;; + "include/cppunit/tools/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/tools/Makefile" ;; + "include/cppunit/ui/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/ui/Makefile" ;; + "include/cppunit/ui/mfc/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/ui/mfc/Makefile" ;; + "include/cppunit/ui/qt/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/ui/qt/Makefile" ;; + "include/cppunit/ui/text/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/ui/text/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "doc/Doxyfile" ) CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; + "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; + "examples/simple/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/simple/Makefile" ;; + "examples/hierarchy/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/hierarchy/Makefile" ;; + "examples/cppunittest/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/cppunittest/Makefile" ;; + "examples/ClockerPlugIn/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/ClockerPlugIn/Makefile" ;; + "examples/DumperPlugIn/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/DumperPlugIn/Makefile" ;; + "examples/money/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/money/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config/config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +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 to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $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 -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@CPPUNIT_MAJOR_VERSION@,$CPPUNIT_MAJOR_VERSION,;t t +s,@CPPUNIT_MINOR_VERSION@,$CPPUNIT_MINOR_VERSION,;t t +s,@CPPUNIT_MICRO_VERSION@,$CPPUNIT_MICRO_VERSION,;t t +s,@CPPUNIT_INTERFACE_AGE@,$CPPUNIT_INTERFACE_AGE,;t t +s,@CPPUNIT_BINARY_AGE@,$CPPUNIT_BINARY_AGE,;t t +s,@CPPUNIT_VERSION@,$CPPUNIT_VERSION,;t t +s,@LT_RELEASE@,$LT_RELEASE,;t t +s,@LT_CURRENT@,$LT_CURRENT,;t t +s,@LT_REVISION@,$LT_REVISION,;t t +s,@LT_AGE@,$LT_AGE,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@AMTAR@,$AMTAR,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@EGREP@,$EGREP,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@F77@,$F77,;t t +s,@FFLAGS@,$FFLAGS,;t t +s,@ac_ct_F77@,$ac_ct_F77,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@LIBADD_DL@,$LIBADD_DL,;t t +s,@DOXYGEN@,$DOXYGEN,;t t +s,@DOT@,$DOT,;t t +s,@DOC_TRUE@,$DOC_TRUE,;t t +s,@DOC_FALSE@,$DOC_FALSE,;t t +s,@enable_dot@,$enable_dot,;t t +s,@enable_html_docs@,$enable_html_docs,;t t +s,@enable_latex_docs@,$enable_latex_docs,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # 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. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #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. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # 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. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +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 + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # 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 -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //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=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + default ) chmod a+x cppunit-config ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# 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 + + +ac_prefix_conf_OUT=`echo include/cppunit/config-auto.h` +ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e 'y:abcdefghijklmnopqrstuvwxyz./,-:ABCDEFGHIJKLMNOPQRSTUVWXYZ____:'` +ac_prefix_conf_PKG=`echo $PACKAGE` +ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'` +ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:' -e '/^[0-9]/s/^/_/'` +ac_prefix_conf_INP=`echo config/config.h` +if test "$ac_prefix_conf_INP" = "_"; then + case $ac_prefix_conf_OUT in + */*) ac_prefix_conf_INP=`basename $ac_prefix_conf_OUT` + ;; + *-*) ac_prefix_conf_INP=`echo $ac_prefix_conf_OUT | sed -e 's/[a-zA-Z0-9_]*-//'` + ;; + *) ac_prefix_conf_INP=config.h + ;; + esac +fi +if test -z "$ac_prefix_conf_PKG" ; then + { { echo "$as_me:$LINENO: error: no prefix for _PREFIX_PKG_CONFIG_H" >&5 +echo "$as_me: error: no prefix for _PREFIX_PKG_CONFIG_H" >&2;} + { (exit 1); exit 1; }; } +else + echo "$as_me:$LINENO: result: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&5 +echo "${ECHO_T}creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&6 + if test -f $ac_prefix_conf_INP ; then + (dirname /* automatically generated */) 2>/dev/null || +$as_expr X/* automatically generated */ : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X/* automatically generated */ : 'X\(//\)[^/]' \| \ + X/* automatically generated */ : 'X\(//\)$' \| \ + X/* automatically generated */ : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X/* automatically generated */ | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q' + echo '#ifndef '$ac_prefix_conf_DEF >$ac_prefix_conf_OUT + echo '#define '$ac_prefix_conf_DEF' 1' >>$ac_prefix_conf_OUT + echo ' ' >>$ac_prefix_conf_OUT + echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$ac_prefix_conf_OUT + + echo 's/#undef *\([A-Z_]\)/#undef '$ac_prefix_conf_UPP'_\1/' >conftest.sed + echo 's/#undef *\([a-z]\)/#undef '$ac_prefix_conf_LOW'_\1/' >>conftest.sed + echo 's/#define *\([A-Z_][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_UPP"_\\1 \\" >>conftest.sed + echo '#define '$ac_prefix_conf_UPP"_\\1 \\2 \\" >>conftest.sed + echo '#endif/' >>conftest.sed + echo 's/#define *\([a-z][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_LOW"_\\1 \\" >>conftest.sed + echo '#define '$ac_prefix_conf_LOW"_\\1 \\2 \\" >>conftest.sed + echo '#endif/' >>conftest.sed + sed -f conftest.sed $ac_prefix_conf_INP >>$ac_prefix_conf_OUT + echo ' ' >>$ac_prefix_conf_OUT + echo '/*' $ac_prefix_conf_DEF '*/' >>$ac_prefix_conf_OUT + echo '#endif' >>$ac_prefix_conf_OUT + else + { { echo "$as_me:$LINENO: error: input file $ac_prefix_conf_IN does not exist, skip generating $ac_prefix_conf_OUT" >&5 +echo "$as_me: error: input file $ac_prefix_conf_IN does not exist, skip generating $ac_prefix_conf_OUT" >&2;} + { (exit 1); exit 1; }; } + fi + rm -f conftest.* +fi diff --git a/lib/cppunit-1.10.0/configure.in b/lib/cppunit-1.10.0/configure.in new file mode 100644 index 0000000000..94755b7965 --- /dev/null +++ b/lib/cppunit-1.10.0/configure.in @@ -0,0 +1,147 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT(Makefile.am) + +# autoconf 2.50 or higher to rebuild aclocal.m4, because the +# AC_CREATE_PREFIX_CONFIG_H macro needs the AS_DIRNAME macro. +AC_PREREQ(2.50) + +# Making releases: +# CPPUNIT_MICRO_VERSION += 1; +# CPPUNIT_INTERFACE_AGE += 1; +# CPPUNIT_BINARY_AGE += 1; +# if any functions have been added, set CPPUNIT_INTERFACE_AGE to 0. +# if backwards compatibility has been broken, +# set CPPUNIT_BINARY_AGE and CPPUNIT_INTERFACE_AGE to 0. +# +CPPUNIT_MAJOR_VERSION=1 +CPPUNIT_MINOR_VERSION=10 +CPPUNIT_MICRO_VERSION=0 +CPPUNIT_INTERFACE_AGE=0 +CPPUNIT_BINARY_AGE=0 +CPPUNIT_VERSION=$CPPUNIT_MAJOR_VERSION.$CPPUNIT_MINOR_VERSION.$CPPUNIT_MICRO_VERSION +AC_SUBST(CPPUNIT_MAJOR_VERSION) +AC_SUBST(CPPUNIT_MINOR_VERSION) +AC_SUBST(CPPUNIT_MICRO_VERSION) +AC_SUBST(CPPUNIT_INTERFACE_AGE) +AC_SUBST(CPPUNIT_BINARY_AGE) +AC_SUBST(CPPUNIT_VERSION) + +# libtool versioning +LT_RELEASE=$CPPUNIT_MAJOR_VERSION.$CPPUNIT_MINOR_VERSION +LT_CURRENT=`expr $CPPUNIT_MICRO_VERSION - $CPPUNIT_INTERFACE_AGE` +LT_REVISION=$CPPUNIT_INTERFACE_AGE +LT_AGE=`expr $CPPUNIT_BINARY_AGE - $CPPUNIT_INTERFACE_AGE` +AC_SUBST(LT_RELEASE) +AC_SUBST(LT_CURRENT) +AC_SUBST(LT_REVISION) +AC_SUBST(LT_AGE) + +AC_CONFIG_AUX_DIR(config) +AM_CONFIG_HEADER(config/config.h) +AM_INIT_AUTOMAKE(cppunit, $CPPUNIT_VERSION) + +# General "with" options +# ---------------------------------------------------------------------------- + +dnl Checks for programs. + +AC_PROG_MAKE_SET +AC_PROG_INSTALL + +# The libtool macro AC_PROG_LIBTOOL checks for the C preprocessor. +# Configure gets confused if we try to check for a C preprocessor +# without first checking for the C compiler +# (see http://sources.redhat.com/ml/autoconf/2001-07/msg00036.html), +# so we invoke AC_PROG_CC explicitly. +AC_PROG_CC +AC_PROG_CXX +AC_LANG(C++) + +AC_PROG_LIBTOOL + +# check for dlopen,dlsym... or shl_load, shl_findsym... +AC_LTDL_DLLIB + +# check for doxygen +BB_ENABLE_DOXYGEN + + +# Check for headers +# Note that the fourth argument to AC_CHECK_HEADERS is non-empty to force +# the configure probe to try compiling "#include
". See autoconf docs. +# ---------------------------------------------------------------------------- + +AC_CHECK_HEADERS(cmath,[],[],[/**/]) + +# Check for compiler characteristics +# ---------------------------------------------------------------------------- + +AC_CXX_RTTI +AX_CXX_GCC_ABI_DEMANGLE +AC_CXX_STRING_COMPARE_STRING_FIRST +AC_CXX_HAVE_SSTREAM +AC_CXX_HAVE_STRSTREAM + +cppunit_val='CPPUNIT_HAVE_RTTI' +AC_ARG_ENABLE(typeinfo-name, +[ --disable-typeinfo-name disable use of RTTI for class names], +[ + test x$enableval = 'xno' && cppunit_val='0' +]) + +AC_DEFINE_UNQUOTED(USE_TYPEINFO_NAME,$cppunit_val, +[Define to 1 to use type_info::name() for class names]) + + +# Doesn't work. It's supposed to add "#define CPPUNIT_NO_TESTPLUGIN" if +# --disable-test-plugin was used on the command line. +# +# +# +#AC_ARG_ENABLE(test-plugin, +#[ --disable-test-plugin disable support for test plug-ins], +#[ +# if test -n "$enable_test_plugin"; then +# enable_test_plugin=${enable_test_plugin_default-yes} +# fi +# if test "$enable_test_plugin" = no; then +#echo "test-plug in disabled" +# fi +#]) +# +#testplugin_val=1 +#AC_DEFINE_UNQUOTED(NO_TESTPLUGIN,$testplugin_val, +#[defined to disable TestPlugIn]) + + +AC_OUTPUT([ + Makefile + cppunit.spec + cppunit-config + src/Makefile + src/DllPlugInTester/Makefile + src/cppunit/Makefile + include/Makefile + include/cppunit/Makefile + include/cppunit/config/Makefile + include/cppunit/extensions/Makefile + include/cppunit/plugin/Makefile + include/cppunit/portability/Makefile + include/cppunit/tools/Makefile + include/cppunit/ui/Makefile + include/cppunit/ui/mfc/Makefile + include/cppunit/ui/qt/Makefile + include/cppunit/ui/text/Makefile + doc/Makefile + doc/Doxyfile + examples/Makefile + examples/simple/Makefile + examples/hierarchy/Makefile + examples/cppunittest/Makefile + examples/ClockerPlugIn/Makefile + examples/DumperPlugIn/Makefile + examples/money/Makefile +],[chmod a+x cppunit-config]) + +AC_CREATE_PREFIX_CONFIG_H([include/cppunit/config-auto.h], + $PACKAGE, [config/config.h]) diff --git a/lib/cppunit-1.10.0/contrib/bc5/bcc-makefile.zip b/lib/cppunit-1.10.0/contrib/bc5/bcc-makefile.zip new file mode 100644 index 0000000000..8be8d7bb27 Binary files /dev/null and b/lib/cppunit-1.10.0/contrib/bc5/bcc-makefile.zip differ diff --git a/lib/cppunit-1.10.0/contrib/msvc/AddingUnitTestMethod.dsm b/lib/cppunit-1.10.0/contrib/msvc/AddingUnitTestMethod.dsm new file mode 100644 index 0000000000..51f0dcba36 --- /dev/null +++ b/lib/cppunit-1.10.0/contrib/msvc/AddingUnitTestMethod.dsm @@ -0,0 +1,170 @@ +'Made by bloodchen +'bloodchen@hotmail.com +Sub NewTestClass +On Error Resume Next +dim proj_path,ext,pos,proj_dir,MyCppFile,MyCppName,MyHFile,MyHName,ClassName,HText,CPPText +proj_path = ActiveProject.fullname +ext = "" +pos = len (proj_path) +Do While ext <> "\" +ext = Mid(proj_path, pos, 1) +pos = pos -1 +Loop +proj_dir = left(proj_path, pos+1) +ClassName=InputBox("Enter the class name:", "Class Name") +if ActiveProject.Type <> "Build" then +MsgBox "This project is not valid. Ending macro." +Exit Sub +end if +if (len(ClassName) <= 0) then +MsgBox "Invalid class name. Ending macro." +Exit Sub +end if + +' ClassName="CTest" +MyCppName=proj_dir+ClassName+".cpp" +MyHName=proj_dir+ClassName+".h" +ActiveProject.AddFile MyCppName +ActiveProject.AddFile MyHName +Documents.Add "Text" +ActiveDocument.Selection.StartOfDocument + +HText= "#ifndef "+ClassName+"DEF"+VbCrLf& _ +"#define "+ClassName+"DEF"+VbCrLf& _ +""+VbCrLf& _ +"#include "+VbCrLf& _ +"#include "+VbCrLf& _ +"class "+ClassName+":public CppUnit::TestCase"+VbCrLf& _ +"{"+VbCrLf& _ +" CPPUNIT_TEST_SUITE( "+ClassName+" );"+VbCrLf& _ +" CPPUNIT_TEST_SUITE_END();"+VbCrLf& _ +"public:"+VbCrLf& _ +" "+ClassName+"();"+VbCrLf& _ +" virtual ~"+ClassName+"();"+VbCrLf& _ +"};"+VbCrLf& _ +"#endif"+VbCrLf +ActiveDocument.Selection = HText +ActiveDocument.Save MyHName +' WriteFile MyHName,HText +Documents.Add "Text" +ActiveDocument.Selection.StartOfDocument +CPPText = "#include "+chr(34)+"stdafx.h"+chr(34)+VbCrLf& _ +"#include "+chr(34)+ClassName+".h"+chr(34)+VbCrLf& _ +""+VbCrLf& _ +""+VbCrLf& _ +"CPPUNIT_TEST_SUITE_REGISTRATION( "+ClassName+ " );"+VbCrLf& _ +""+VbCrLf& _ +""+VbCrLf& _ +ClassName+"::"+ClassName+"()"+VbCrLf& _ +"{"+VbCrLf& _ +"}"+VbCrLf& _ +""+VbCrLf& _ +""+VbCrLf& _ +ClassName+"::~"+ClassName+"()"+VbCrLf& _ +"{"+VbCrLf& _ +"}" +' WriteFile MyCppName,CPPText +ActiveDocument.Selection = CPPText +ActiveDocument.Save MyCppName + +End Sub + + +Sub ToggleHandCPP() +'DESCRIPTION: Opens the .cpp or .h file for the current document. +'Toggles between the .cpp & .h file +ext = ActiveDocument.FullName +If ext = "" Then +msgbox ("Error, not a .cpp or .h file") +exit sub +End If +DocName = UCase(ext) + +If Right(DocName,4) = ".CPP" Then +fn = left(DocName, Len(DocName)-3) & "h" +ElseIf Right(DocName,2) = ".H" Then +fn = Left(DocName, Len(DocName)-1) & "cpp" +Else +msgbox ("Error, not a .cpp or a .h file") +exit sub +End If +'msgbox (fn) +on error resume next +Documents.Open (fn) +End Sub + +Sub ADDTestMethod() +strHpt = ActiveDocument.FullName +if right(strHpt,3) = "CPP" Or right (strHpt,3) = "cpp" Then +ActiveDocument.Selection.SelectLine +strText = ActiveDocument.Selection.Text +if (Instr(strText, "::" ) = 0) Then +MsgBox("Line not valid !!") +Exit Sub +End If +else exit sub +end if + +pos = Instr(strText, "::") +strName = Right(strText, (Len(strText) - (pos+1))) +pos = Instr(strName,"(") +strName = Left(strName,pos-1) +strClass = Left(strText,pos - 1) +while (instr(strClass, " ") > 0) +pos = instr(strClass, " ") +strTyp = strTyp & Left(strClass, pos) +strClass = Right(strClass, Len(strClass) - (pos) ) +wend +ToggleHandCPP + +ActiveDocument.Selection.SelectAll +strHead = ActiveDocument.Selection.Text + +if (instr(strHead,strClass) = 0) Then +MsgBox(" Can't find class " & strClass & " !!") +ToggleHandCPP +Exit Sub +End If +ActiveDocument.Selection.EndOfDocument +lineBottom = ActiveDocument.Selection.CurrentLine + +ActiveDocument.Selection.StartOfDocument +ActiveDocument.Selection.StartOfLine +ActiveDocument.Selection.SelectLine +strLine = ActiveDocument.Selection.Text +while (instr(strLine, strName) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom) +ActiveDocument.Selection.StartOfLine +ActiveDocument.Selection.LineDown dsMove +ActiveDocument.Selection.SelectLine +strLine = ActiveDocument.Selection.Text +Wend +if (ActiveDocument.Selection.CurrentLine < lineBottom) Then +if( instr(strLine, "CPPUNIT_TEST" ) <> 0 )Then +ToggleHandCPP +Exit Sub +end if +End If + +ActiveDocument.Selection.StartOfDocument +ActiveDocument.Selection.StartOfLine +ActiveDocument.Selection.SelectLine +strLine = ActiveDocument.Selection.Text +while (instr(strLine, " CPPUNIT_TEST_SUITE_END();" ) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom) +ActiveDocument.Selection.StartOfLine +ActiveDocument.Selection.LineDown dsMove +ActiveDocument.Selection.SelectLine +strLine = ActiveDocument.Selection.Text +Wend +if (ActiveDocument.Selection.CurrentLine < lineBottom) Then +ActiveDocument.Selection.EndOfLine +ActiveDocument.Selection.LineUp +ActiveDocument.Selection.EndOfLine +ActiveDocument.Selection.NewLine +ActiveDocument.Selection = "CPPUNIT_TEST( "&strName&" );" +else +MsgBox("CPPUNIT_TEST_SUITE_END not found") +end if +ToggleHandCPP + +End Sub + \ No newline at end of file diff --git a/lib/cppunit-1.10.0/contrib/msvc/CppUnit.WWTpl b/lib/cppunit-1.10.0/contrib/msvc/CppUnit.WWTpl new file mode 100644 index 0000000000..174a64b5a2 --- /dev/null +++ b/lib/cppunit-1.10.0/contrib/msvc/CppUnit.WWTpl @@ -0,0 +1,486 @@ +Baptiste Lepilleur's template file. +(@)Copyright 2001, Baptiste Lepilleur . + + + +[-ExtractPath] +!!Memo +Extract the path from a full filename. +path is the filename we need to extract the path from. +returns: extracted path. +Algo: we iterates the filename from the end until we found a character '\'. +!!End + +!!Params +path @@(ProjectPath)@@ +!!End + +!!Code +Input path: "@@path@@" +!!Set index @@(Strlen @@path@@)@@ +!!// +!!Set finalpath +!!Label LoopExtractPath +!!Sub index 1 +!!If @@index@@ < 0 +!!Goto EndExtractPath +!!Endif +!!// +!!Set lastchar @@(StrSub @@path@@ @@index@@ 1)@@ +!!If @@lastchar@@ != "\" +!!Goto LoopExtractPath +!!Endif +!!// +!!Add index 1 +!!Set finalpath @@(StrSub @@path@@ 0 @@index@@)@@ +!!// +!!Label EndExtractPath +!!Return @@finalpath@@ +!!End + + + +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +[+01 Create Class in file] +!!Memo +Creates a new class in new files (.h/.cpp) and adds them to the project. +!!End + +!!Params +classname Ttr +parentclassname = +classdesc This class represents +objectkind Reference Object +hasserialize 0 +isrefobj 0 +inlinectordtor 0 +createfile 1 +isunittest 0 +!!End + +!!Dialog + +Class name:
+Brief description:
+Object Kind: +
+ +Parent class name:
+ + + Create a new file ? (otherwise Insert in current file).
+
+ + Has: virtual void Serialize( CArchive &ar )
+ + Is a reference counted object (inherit ERefObj)
+ + Inline ctor/dtor, copy ctor/operator.
+ + Is a CppUnit unit test.
+ + + + + + + +!!End + +!!Code +!!// Set variable that indicates the kind of object we are working on. +!!Set defvalobject 0 +!!If @@objectkind@@ == "Default Value Object" +!!Set defvalobject 1 +!!Endif +!!// +!!Set valobject 0 +!!If @@objectkind@@ == "Explicit Value Object" +!!Set valobject 1 +!!Endif +!!// +!!Set refobject 0 +!!If @@objectkind@@ == "Reference Object" +!!Set refobject 1 +!!Endif +!!// +!!// Set class filename (relative to dsp) +!!Set headerfn @@classname@@.h +!!Set implfn @@classname@@.cpp +!!Set headerdefine @@(String @@(Call -MakeHeaderDefined fn @@headerfn@@)@@:U)@@ +!!// +!!// hasparentclass indicates if a parent class has been defined. +!!Set hasparentclass 0 +!!If @@parentclassname@@ != = +!!Set hasparentclass 1 +!!Else +!!If @@isunittest@@ +!!Set parentclassname CppUnit::TestFixture +!!Set hasparentclass 1 +!!Endif +!!Endif +!!// +!!// hasparent is set to 1 if the class has some parent (ERefObj or parentclass). +!!Set hasparent @@hasparentclass@@ +!!If @@isrefobj@@ +!!Set hasparent 1 +!!Endif +!!// +!!// +!!// All variables are set, we can now generates the class. +!!// +!!// +!!// +!!// +!!// ---------------------------------------------------------------------------- +!!// ------------------------------ header file --------------------------------- +!!// ---------------------------------------------------------------------------- +!!// +!!// +!!// +!!If @@createfile@@ +!!FileNew @@headerfn@@ dsp +!!Set headerpath @@(FilePath)@@ +// ////////////////////////////////////////////////////////////////////////// +// Header file @@headerfn@@ for class @@classname@@ +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: @@(Date "yyyy/MM/dd")@@ +// ////////////////////////////////////////////////////////////////////////// +#ifndef @@headerdefine@@ +#define @@headerdefine@@ +!!Else +// ////////////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////////////// +// Definition of class @@classname@@ +// ////////////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////////////// +!!Endif +!!If @@hasparentclass@@ + +!!If @@isunittest@@ +#include +!!Else +#include "@@parentclassname@@.h" +!!Endif +!!Endif + + +!!If @@isrefobj@@ +/*! Declare @@classname@@Ref as a reference pointer on @@classname@@. + */ +EDECL_REF( @@classname@@ ); + + + +!!Endif +/*! \class @@classname@@ + * \brief @@classdesc@@ + */ +class @@classname@@@@\ +!!// Write inherited class list (parent class first, then ERefObj if inherited). +!!If @@hasparent@@ + : @@\ +!!// xpos contains the indentation level for inheritance declarations... +!!GetPos xpos ypos +!!Sub xpos 1 +public @@\ +!!Else + +!!Endif +!!If @@hasparentclass@@ +@@parentclassname@@@@\ +!!If @@isrefobj@@ +, +@@(Call -MakeFiller filler " " count @@xpos@@)@@@@\ +public @@\ +!!Else + +!!Endif +!!Endif +!!If @@isrefobj@@ +ERefObj +!!Endif +{ +!!// +!!// +!!// ------------ Done with inheritance, declare the class body... ---------- +!!// +!!// +!!If @@isunittest@@ + CPPUNIT_TEST_SUITE( @@classname@@ ); + CPPUNIT_TEST( putTestMethodNameHere ); + CPPUNIT_TEST_SUITE_END(); + +!!Endif +public: +!!If !@@defvalobject@@ + /*! Constructs a @@classname@@ object. + */ + @@classname@@(); + +!!Endif +!!If @@valobject@@ + /*! Copy constructor. + * @param copy Object to copy. + */ + @@classname@@( const @@classname@@ © ); + +!!Endif + /// Destructor. + virtual ~@@classname@@(); +!!If @@valobject@@ + + /*! Copy operator. + * @param copy Object to copy. + * @return Reference on this object. + */ + @@classname@@ &operator =( const @@classname@@ © ); +!!Endif +!!If @@isunittest@@ + + void setUp(); + void tearDown(); +!!Endif +!!// Private for methods +!!If @@refobject@@ + +private: + /// Prevents the use of the copy constructor. + @@classname@@( const @@classname@@ © ); + + /// Prevents the use of the copy operator. + void operator =( const @@classname@@ © ); +!!Endif +!!// Private for member datas + +private: +}; + + + +!!If @@createfile@@ +// Inlines methods for @@classname@@:@@\ +!!GetPos xpos ypos +!!Sub xpos 4 + +// @@(Call -MakeFiller filler - count @@xpos@@)@@ +!!Endif //@@createfile@@ +!!If @@inlinectordtor@@ +!!If !@@defvalobject@@ + + +inline +@@classname@@::@@classname@@()@@\ +!!If @@hasparentclass@@ + : + @@parentclassname@@() +!!Else + +!!Endif +{ +} +!!Endif //!@@defvalobject@@ +!!If @@valobject@@ + + +inline +@@classname@@::@@classname@@( const @@classname@@ © )@@\ +!!If @@hasparentclass@@ + : + @@parentclassname@@( copy ) +!!Else + +!!Endif +!!Endif //@@valobject@@ + + +inline +@@classname@@::~@@classname@@() +{ +} +!!If @@valobject@@ + + +inline @@classname@@ & +@@classname@@::operator =( const @@classname@@ © ) +{ + + return *this; +} +!!Endif //@@valobject@@ +!!Endif //@@inlinectordtor@@ + + +!!If @@createfile@@ + +#endif // @@headerdefine@@ +!!FileSave +!!ProjectFileAdd +!!Endif +!!// +!!// +!!// +!!// ---------------------------------------------------------------------------- +!!// -------------------------- Implementation file ----------------------------- +!!// ---------------------------------------------------------------------------- +!!// +!!// +!!// +!!If @@createfile@@ +!!FileNew @@implfn@@ dsp +// ////////////////////////////////////////////////////////////////////////// +// Implementation file @@implfn@@ for class @@classname@@ +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: @@(Date "yyyy/MM/dd")@@ +// ////////////////////////////////////////////////////////////////////////// + +#include "StdAfx.h" +#include "@@headerfn@@" +!!Else + + +// ////////////////////////////////////////////////////////////////////////// +// Implementation of class @@classname@@ +// ////////////////////////////////////////////////////////////////////////// +!!Endif +!!If @@isunittest@@ + +CPPUNIT_TEST_SUITE_REGISTRATION( @@classname@@ ); +!!Endif +!!If !@@inlinectordtor@@ +!!If !@@defvalobject@@ + + +@@classname@@::@@classname@@()@@\ +!!If @@hasparentclass@@ + : + @@parentclassname@@() +!!Else + +!!Endif +{ +} +!!Endif +!!If @@valobject@@ + + +@@classname@@::@@classname@@( const @@classname@@ © )@@\ +!!If @@hasparentclass@@ + : + @@parentclassname@@( copy ) +!!Else + +!!Endif +{ +} +!!Endif + + +@@classname@@::~@@classname@@() +{ +} +!!If @@valobject@@ + + +@@classname@@ & +@@classname@@::operator =( const @@classname@@ © ) +{ + + return *this; +} +!!Endif +!!Endif +!!If @@isunittest@@ + + +void +@@classname@@::setUp() +{ +} + + +void +@@classname@@::tearDown() +{ +} +!!Endif + +!!If @@createfile@@ +!!FileSave +!!ProjectFileAdd +!!//ExecuteCommand FileOpen "@@headerpath@@" +!!Endif +!!End + +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +[-Dummy] +!!Code +!!End + +--------------------------------------------------------------------------------- +------------------------ [-MakeHeaderDefined] ------------------------------- +--------------------------------------------------------------------------------- +[-MakeHeaderDefined] +!!Memo +This template replace all occurences of '.' in the specified filename "fn" by '_'. +This is typically used to make the #ifndef at the beginning of header files. +Parameters: "fn" filename in which each occurence of '.' is replaced by '_'. +Returns: Transformed filename. +!!End + +!!Params +fn TestDoIt +!!End + +!!Code +!!Set result @@fn@@ +!!Label LoopMakeHeaderDefined +!!Set fn @@result@@ +!!// Check if there is any occurence left of '.' +!!Set index @@(StrFind @@fn@@ ".")@@ +!!If @@index@@ < 0 +!!Goto EndMakeHeaderDefined +!!Endif +!!// Replace occurences of '.' in fb by '_' and set to result. +!!Set result @@(StrSub @@fn@@ 0 @@index@@ )@@_ +!!Add index 1 +!!Set result @@result@@@@(StrSub @@fn@@ @@index@@)@@ +!!Goto LoopMakeHeaderDefined +!!Label EndMakeHeaderDefined +!!Return @@result@@ +!!End + +--------------------------------------------------------------------------------- +---------------------------- [-MakeFiller] ---------------------------------- +--------------------------------------------------------------------------------- +[-MakeFiller] +!!Memo +Make a string that contains "count" occurrence of "filler". +Parameters: "filler" String that is repeated. + "count" Number of times the "filler" is repeated. +Returns: A string that contains "count" times the string "filler". +!!End + +!!Params +filler - +count 10 +!!End + +!!Code +!!Set result +!!Label LoopMakerFiller +!!If @@count@@ > 0 +!!Set result @@result@@@@filler@@ +!!Sub count 1 +!!Goto LoopMakerFiller +!!Endif +!!Return @@result@@ +!!End \ No newline at end of file diff --git a/lib/cppunit-1.10.0/contrib/msvc/readme.txt b/lib/cppunit-1.10.0/contrib/msvc/readme.txt new file mode 100644 index 0000000000..b2ac1b48a7 --- /dev/null +++ b/lib/cppunit-1.10.0/contrib/msvc/readme.txt @@ -0,0 +1,10 @@ +What's in those files: + + * CppUnit.WWTpl: a template Workspace Whiz! which create a new class +and add the new files to the project. You can specify that the class is a +CppUnit testcase and all the macro will be defined to register the test case +and declare the test suite. Workspace Whiz! is an add-ins for VC++. It can +be found at: http://www.workspacewhiz.com/. + + * AddingUnitTestMethod.dsm: a set of VC++ macro to add unit test +using helper macros. \ No newline at end of file diff --git a/lib/cppunit-1.10.0/contrib/xml-xsl/report.xsl b/lib/cppunit-1.10.0/contrib/xml-xsl/report.xsl new file mode 100644 index 0000000000..a0e61b4f91 --- /dev/null +++ b/lib/cppunit-1.10.0/contrib/xml-xsl/report.xsl @@ -0,0 +1,125 @@ + + + + + + + +Test Report + + + +

Test Report

+ + + +
+ + +

FailedTests

+ + + + + + + + + + + +
idNameFailureTypeLocationMessage
+
+ + No failed test. + +
+
+ + + + + + + +
+ +
+ + + + line # in + + + + +

SucessfulTests

+ + + + + + + + +
idName
+
+ + No sucessful test. + +
+
+ + + + + + + + + +

Statistics

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
StatusNumber
Tests
FailuresTotal
Errors
Failures
+
+ +
diff --git a/lib/cppunit-1.10.0/contrib/xml-xsl/tests.xml b/lib/cppunit-1.10.0/contrib/xml-xsl/tests.xml new file mode 100644 index 0000000000..6fef14ebe0 --- /dev/null +++ b/lib/cppunit-1.10.0/contrib/xml-xsl/tests.xml @@ -0,0 +1,58 @@ + + + + + + ExampleTestCase.example + Assertion + + exampletestcase.cpp + 7 + + - Expected : { 0; 7; 8; 9; 10; 11; 1; 2; 3; 4; 5; 6; 12; 13; 14; 15; 16; 17; 18; 19 } +- Actual : { 0; 1; 2; 3; 4; 5; 7; 8; 9; 10; 11; 6; 12; 13; 14; 15; 16; 17; 18; 19 } +- Difference at index 1 +->Expected : { 7; 8; 9; 10; 11; 1; 2; 3; 4; 5; 6; 12; 13; 14; 15; 16; 17; 18; 19 } +->Actual : { 1; 2; 3; 4; 5; 7; 8; 9; 10; 11; 6; 12; 13; 14; 15; 16; 17; 18; 19 } + + + ExampleTestCase.anotherExample + Assertion + + exampletestcase.cpp + 15 + + 1 == 2 + + + ExampleTestCase.testAdd + Assertion + + exampletestcase.cpp + 27 + + result == 6.0 + + + ExampleTestCase.testDivideByZero + Error + caught unknown exception + + + ExampleTestCase.testEquals + Assertion + + exampletestcase.cpp + 48 + + Expected: 12, but was: 13. + + + + + 5 + 5 + 1 + 4 + + diff --git a/lib/cppunit-1.10.0/cppunit-config.1 b/lib/cppunit-1.10.0/cppunit-config.1 new file mode 100644 index 0000000000..baa8b58453 --- /dev/null +++ b/lib/cppunit-1.10.0/cppunit-config.1 @@ -0,0 +1,67 @@ +.TH cppunit 1 "September 2001" +.SH NAME +cppunit-config - script to get information about the installed version of cppunit +.SH SYNOPSIS +.B cppunit-config +[\-\-prefix\fI[=DIR]\fP] [\-\-exec\-prefix\fI[=DIR]\fP] [\-\-version] [\-\-libs] [\-\-cflags] +.SH DESCRIPTION +.PP +\fIcppunit-config\fP is a tool that is used to configure to determine +the compiler and linker flags that should be used to compile and link +programs that use \fIcppunit\fP. It is also used internally to the .m4 +macros for GNU autoconf that are included with \fIcppunit\fP. +. +.SH OPTIONS +.l +\fIcppunit-config\fP accepts the following options: +.TP 8 +.B \-\-version +Print the currently installed version of \fIcppunit\fP on the standard +output. +.TP 8 +.B \-\-libs +Print the linker flags that are necessary to link a \fIcppunit\fP +program. +.TP 8 +.B \-\-cflags +Print the compiler flags that are necessary to compile a \fIcppunit\fP +program. +.TP 8 +.B \-\-prefix +Print the prefix with which \fIcppunit\fP was compiled. +.TP 8 +.B \-\-prefix=PREFIX +If specified, use PREFIX instead of the installation prefix that +\fIcppunit\fP was built with when computing the output for the +\-\-cflags and \-\-libs options. This option is also used for the exec +prefix if \-\-exec\-prefix was not specified. This option must be +specified before any \-\-libs or \-\-cflags options. +.TP 8 +.B \-\-exec\-prefix +Print the exec\-prefix with which \fIcppunit\fP was compiled. +.TP 8 +.B \-\-exec\-prefix=PREFIX +If specified, use PREFIX instead of the installation exec prefix that +\fIcppunit\fP was built with when computing the output for the +\-\-cflags and \-\-libs options. This option must be specified before +any \-\-libs or \-\-cflags options. +.SH COPYRIGHT +cppunit Copyright \(co 1996-2000 by Michael Feathers +.PP +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. +.PP +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. +.PP +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. +.SH AUTHOR +This manpage is an almost word-for-word copy of the gtk-config +manpage, written by Owen Taylor. It was modified by E. Sommerlade +. diff --git a/lib/cppunit-1.10.0/cppunit-config.in b/lib/cppunit-1.10.0/cppunit-config.in new file mode 100644 index 0000000000..51e8b581ca --- /dev/null +++ b/lib/cppunit-1.10.0/cppunit-config.in @@ -0,0 +1,98 @@ +#!/bin/sh + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +exec_prefix_set=no +includedir=@includedir@ + +usage() +{ + cat <&2 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo_prefix=yes + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo_exec_prefix=yes + ;; + --version) + echo @CPPUNIT_VERSION@ + ;; + --help) + usage 0 + ;; + --cflags) + echo_cflags=yes + ;; + --libs) + echo_libs=yes + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + +if test "$echo_prefix" = "yes"; then + echo $prefix +fi + +if test "$echo_exec_prefix" = "yes"; then + echo $exec_prefix +fi + +if test "$echo_cflags" = "yes"; then + if test "$includedir" != "/usr/include" ; then + echo -I$includedir + fi +fi + +if test "$echo_libs" = "yes"; then + if test @libdir@ != /usr/lib ; then + my_linker_flags="-L@libdir@" + fi + echo ${my_linker_flags} -lcppunit @LIBADD_DL@ +fi + + + + diff --git a/lib/cppunit-1.10.0/cppunit.m4 b/lib/cppunit-1.10.0/cppunit.m4 new file mode 100644 index 0000000000..96b3db78ca --- /dev/null +++ b/lib/cppunit-1.10.0/cppunit.m4 @@ -0,0 +1,80 @@ +dnl +dnl AM_PATH_CPPUNIT(MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +dnl +AC_DEFUN(AM_PATH_CPPUNIT, +[ + +AC_ARG_WITH(cppunit-prefix,[ --with-cppunit-prefix=PFX Prefix where CppUnit is installed (optional)], + cppunit_config_prefix="$withval", cppunit_config_prefix="") +AC_ARG_WITH(cppunit-exec-prefix,[ --with-cppunit-exec-prefix=PFX Exec prefix where CppUnit is installed (optional)], + cppunit_config_exec_prefix="$withval", cppunit_config_exec_prefix="") + + if test x$cppunit_config_exec_prefix != x ; then + cppunit_config_args="$cppunit_config_args --exec-prefix=$cppunit_config_exec_prefix" + if test x${CPPUNIT_CONFIG+set} != xset ; then + CPPUNIT_CONFIG=$cppunit_config_exec_prefix/bin/cppunit-config + fi + fi + if test x$cppunit_config_prefix != x ; then + cppunit_config_args="$cppunit_config_args --prefix=$cppunit_config_prefix" + if test x${CPPUNIT_CONFIG+set} != xset ; then + CPPUNIT_CONFIG=$cppunit_config_prefix/bin/cppunit-config + fi + fi + + AC_PATH_PROG(CPPUNIT_CONFIG, cppunit-config, no) + cppunit_version_min=$1 + + AC_MSG_CHECKING(for Cppunit - version >= $cppunit_version_min) + no_cppunit="" + if test "$CPPUNIT_CONFIG" = "no" ; then + no_cppunit=yes + else + CPPUNIT_CFLAGS=`$CPPUNIT_CONFIG --cflags` + CPPUNIT_LIBS=`$CPPUNIT_CONFIG --libs` + cppunit_version=`$CPPUNIT_CONFIG --version` + + cppunit_major_version=`echo $cppunit_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + cppunit_minor_version=`echo $cppunit_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + cppunit_micro_version=`echo $cppunit_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + + cppunit_major_min=`echo $cppunit_version_min | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + cppunit_minor_min=`echo $cppunit_version_min | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + cppunit_micro_min=`echo $cppunit_version_min | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + + cppunit_version_proper=`expr \ + $cppunit_major_version \> $cppunit_major_min \| \ + $cppunit_major_version \= $cppunit_major_min \& \ + $cppunit_minor_version \> $cppunit_minor_min \| \ + $cppunit_major_version \= $cppunit_major_min \& \ + $cppunit_minor_version \= $cppunit_minor_min \& \ + $cppunit_micro_version \>= $cppunit_micro_min ` + + if test "$cppunit_version_proper" = "1" ; then + AC_MSG_RESULT([$cppunit_major_version.$cppunit_minor_version.$cppunit_micro_version]) + else + AC_MSG_RESULT(no) + no_cppunit=yes + fi + fi + + if test "x$no_cppunit" = x ; then + ifelse([$2], , :, [$2]) + else + CPPUNIT_CFLAGS="" + CPPUNIT_LIBS="" + ifelse([$3], , :, [$3]) + fi + + AC_SUBST(CPPUNIT_CFLAGS) + AC_SUBST(CPPUNIT_LIBS) +]) + + + diff --git a/lib/cppunit-1.10.0/cppunit.spec b/lib/cppunit-1.10.0/cppunit.spec new file mode 100644 index 0000000000..ec00a4b835 --- /dev/null +++ b/lib/cppunit-1.10.0/cppunit.spec @@ -0,0 +1,64 @@ +%define RELEASE 1 +%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} + +%define lib_name cppunit + +Name: cppunit +Version: 1.10.0 +Release: %rel + +Summary: C++ Port of JUnit Testing Framework +Copyright: LGPL +Group: Development/Libraries +Vendor: The CppUnit Project +Packager: Bastiaan Bakker +Url: http://cppunit.sourceforge.net/ + +Source: ftp://download.sourceforge.net/pub/sourceforge/cppunit/%name-%version.tar.gz + +Prefix: %_prefix +BuildRoot: %_tmppath/%name-%version-root + +%description +CppUnit is the C++ port of the famous JUnit framework for unit testing. +Test output is in XML for automatic testing and GUI based for supervised tests. + +%package doc +Summary: HTML formatted API documention for Log for C++ +Group: Development/Libraries +Requires: %name = %version + +%description doc +The %name-doc package contains HTML formatted API documention generated by +the popular doxygen documentation generation tool. + +%prep +rm -rf $RPM_BUILD_ROOT + +%setup +CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --enable-doxygen + +%build +make + +%install +rm -rf $RPM_BUILD_ROOT + +make prefix=$RPM_BUILD_ROOT%{prefix} install + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,755) +%attr(755,root,root) %prefix/lib/lib*.so.* +%doc AUTHORS COPYING INSTALL NEWS README THANKS ChangeLog +%attr(755,root,root) %prefix/bin/cppunit-config +%prefix/include/* +%prefix/man/* +%prefix/share/* +%attr(755,root,root) %prefix/lib/lib*.so +%attr(644,root,root) %prefix/lib/*.*a + +%files doc +%doc doc/html/* diff --git a/lib/cppunit-1.10.0/cppunit.spec.in b/lib/cppunit-1.10.0/cppunit.spec.in new file mode 100644 index 0000000000..328704ba82 --- /dev/null +++ b/lib/cppunit-1.10.0/cppunit.spec.in @@ -0,0 +1,64 @@ +%define RELEASE 1 +%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} + +%define lib_name cppunit + +Name: @PACKAGE@ +Version: @VERSION@ +Release: %rel + +Summary: C++ Port of JUnit Testing Framework +Copyright: LGPL +Group: Development/Libraries +Vendor: The CppUnit Project +Packager: Bastiaan Bakker +Url: http://cppunit.sourceforge.net/ + +Source: ftp://download.sourceforge.net/pub/sourceforge/cppunit/%name-%version.tar.gz + +Prefix: %_prefix +BuildRoot: %_tmppath/%name-%version-root + +%description +CppUnit is the C++ port of the famous JUnit framework for unit testing. +Test output is in XML for automatic testing and GUI based for supervised tests. + +%package doc +Summary: HTML formatted API documention for Log for C++ +Group: Development/Libraries +Requires: %name = %version + +%description doc +The %name-doc package contains HTML formatted API documention generated by +the popular doxygen documentation generation tool. + +%prep +rm -rf $RPM_BUILD_ROOT + +%setup +CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --enable-doxygen + +%build +make + +%install +rm -rf $RPM_BUILD_ROOT + +make prefix=$RPM_BUILD_ROOT%{prefix} install + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,755) +%attr(755,root,root) %prefix/lib/lib*.so.* +%doc AUTHORS COPYING INSTALL NEWS README THANKS ChangeLog +%attr(755,root,root) %prefix/bin/cppunit-config +%prefix/include/* +%prefix/man/* +%prefix/share/* +%attr(755,root,root) %prefix/lib/lib*.so +%attr(644,root,root) %prefix/lib/*.*a + +%files doc +%doc doc/html/* diff --git a/lib/cppunit-1.10.0/doc/Doxyfile.in b/lib/cppunit-1.10.0/doc/Doxyfile.in new file mode 100644 index 0000000000..28f4624517 --- /dev/null +++ b/lib/cppunit-1.10.0/doc/Doxyfile.in @@ -0,0 +1,604 @@ +# Doxyfile 1.1.4 + +# This file describes the settings to be used by doxygen for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = CppUnit + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = "Version @VERSION@" + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, +# Spanish and Russian + +OUTPUT_LANGUAGE = English + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# If the EXTRACT_ALL tag is set to YES all classes and functions will be +# included in the documentation, even if no documentation was available. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members inside documented classes or files. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all +# undocumented classes. + +HIDE_UNDOC_CLASSES = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a class diagram (in Html and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. + +CLASS_DIAGRAMS = YES + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen +# will only generate file names in lower case letters. If set to +# YES upper case letters are also allowed. This is useful if you have +# classes or files whose names only differ in case and if your file system +# supports case sensitive file names. + +CASE_SENSE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the Javadoc-style will +# behave just like the Qt-style comments. + +JAVADOC_AUTOBRIEF = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# The ENABLE_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = @top_srcdir@/include @top_srcdir@/src/cppunit @srcdir@/other_documentation.dox @srcdir@/cookbook.dox @srcdir@/Money.dox + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +FILE_PATTERNS = *.cpp *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = config-*.h + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = ../examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = *.cpp *.h + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = @enable_html_docs@ + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = @srcdir@/header.html + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = @srcdir@/footer.html + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = @enable_latex_docs@ + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# For now this is experimental and is disabled by default. The RTF output +# is optimised for Word 97 and may not look too pretty with other readers +# or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using a WORD or other. +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. + +MACRO_EXPANSION = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION \ + CPPUNIT_HAVE_NAMESPACES=1 \ + CPPUNIT_NS_BEGIN="namespace CppUnit {" \ + CPPUNIT_NS_END=} \ + CPPUNIT_NS=CppUnit + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED tag. + +EXPAND_ONLY_PREDEF = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = @enable_dot@ + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other +# documented files. + +INCLUDE_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# This tag can be used to specify the path where the dot tool can be found. +# If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = /usr/local/bin/ + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/lib/cppunit-1.10.0/doc/FAQ b/lib/cppunit-1.10.0/doc/FAQ new file mode 100644 index 0000000000..e43cdbaf6a --- /dev/null +++ b/lib/cppunit-1.10.0/doc/FAQ @@ -0,0 +1,31 @@ +Frequently Asked Questions: +--------------------------- + +1) Questions relating to CppUnit + ---------------------------- + +1.1) Isn't there an easier way to write unit tests than using TestCaller ? + + Yes, there is. Macros have been created to take care of the repetitive +work. Look up include/extensions/HelperMacros.h in CppUnit documentation. +Most of CppUnit test suite is also written that way since they remain +compatible as CppUnit evolve. They also use RTTI if available. + + +2) Questions related to Microsoft Visual VC++ + ----------------------------------------- + +2.1) Why does the compiler report an error when linking with CppUnit library? + + You most likely are not using the same C-RunTime library as CppUnit. + In Release configuration, CppUnit use "Mulithreaded DLL". + In Debug configurations, CppUnit use "Debug Multihreaded DLL". + Check that Projects/Settings.../C++/Code Generation is indeed using +the correct library. + +2.2) Why does CppUnit generate warning 4786:... when compiling ? + + I really don't have a clue. All CppUnit's headers starts by either +including Portability.h or another CppUnit's header. Portability.h includes +config-msvc6.h which disable that specific warning. The warning is generated +by TestFactoryRegistry::m_factories. A solution to this problem is welcome. \ No newline at end of file diff --git a/lib/cppunit-1.10.0/doc/Makefile.am b/lib/cppunit-1.10.0/doc/Makefile.am new file mode 100644 index 0000000000..13ec97f187 --- /dev/null +++ b/lib/cppunit-1.10.0/doc/Makefile.am @@ -0,0 +1,67 @@ +EXTRA_DIST = $(doxygen_input) $(static_pages) + +doxygen_input = cookbook.dox other_documentation.dox header.html footer.html Money.dox +static_pages = FAQ + + +# DOC is defined if installer requests doc generation. +# For now, we only install HTML documentation. We could install manpages +# using the following +# man_MANS = man/man3/CppUnit.3 +# man/man3/CppUnit.3: dox +# and an extra copy or two in the install-data-hook. +# However, the manpages do not appear to be tremendously useful, so +# let's not bother. + +if DOC + +htmldir = $(pkgdatadir)/html +html_DATA = $(static_pages) html/index.html + +install-data-hook: + cp -dpR html/* $(DESTDIR)$(htmldir) + +# Automake's "distcheck" is sensitive to having files left over +# after "make uninstall", so we have to clean up the install hook. +uninstall-local: + rm -rf $(DESTDIR)$(htmldir) + +dox: html/index.html + +else + +# We repeat the three targets in both the "if" and "else" clauses +# of the conditional, because the generated makefile will contain +# references to the targets (target "install" depends on target +# "install-datahook", for example), and some make programs get upset +# if no target exists. + +install-data-hook: +uninstall-local: +dox: + +endif + + +all-local: dox + + +html/index.html: Doxyfile $(doxygen_input) + "@DOXYGEN@" + + +# Make tarfile to distribute the HTML documentation. +doc-dist: dox + cp $(static_pages) html + tar -czf $(PACKAGE)-docs-$(VERSION).tar.gz -C html . + +pdf: @PACKAGE@.pdf +@PACKAGE@.pdf: + $(MAKE) -C ./latex pdf + ln -s ./latex/refman.ps @PACKAGE@.ps + ln -s ./latex/refman.pdf @PACKAGE@.pdf + + +clean-local: + $(RM) -r latex + $(RM) -r html man @PACKAGE@.ps @PACKAGE@.pdf diff --git a/lib/cppunit-1.10.0/doc/Makefile.in b/lib/cppunit-1.10.0/doc/Makefile.in new file mode 100644 index 0000000000..81ecca8aac --- /dev/null +++ b/lib/cppunit-1.10.0/doc/Makefile.in @@ -0,0 +1,380 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = $(doxygen_input) $(static_pages) + +doxygen_input = cookbook.dox other_documentation.dox header.html footer.html Money.dox +static_pages = FAQ + + +# DOC is defined if installer requests doc generation. +# For now, we only install HTML documentation. We could install manpages +# using the following +# man_MANS = man/man3/CppUnit.3 +# man/man3/CppUnit.3: dox +# and an extra copy or two in the install-data-hook. +# However, the manpages do not appear to be tremendously useful, so +# let's not bother. +@DOC_TRUE@htmldir = $(pkgdatadir)/html +@DOC_TRUE@html_DATA = $(static_pages) html/index.html +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = Doxyfile +DIST_SOURCES = +DATA = $(html_DATA) + +DIST_COMMON = Doxyfile.in Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +Doxyfile: $(top_builddir)/config.status Doxyfile.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +htmlDATA_INSTALL = $(INSTALL_DATA) +install-htmlDATA: $(html_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(htmldir) + @list='$(html_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(htmlDATA_INSTALL) $$d$$p $(DESTDIR)$(htmldir)/$$f"; \ + $(htmlDATA_INSTALL) $$d$$p $(DESTDIR)$(htmldir)/$$f; \ + done + +uninstall-htmlDATA: + @$(NORMAL_UNINSTALL) + @list='$(html_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(htmldir)/$$f"; \ + rm -f $(DESTDIR)$(htmldir)/$$f; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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) all-local + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(htmldir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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-local mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-htmlDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-htmlDATA uninstall-info-am uninstall-local + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-htmlDATA install-info install-info-am \ + install-man 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-htmlDATA \ + uninstall-info-am uninstall-local + + +@DOC_TRUE@install-data-hook: +@DOC_TRUE@ cp -dpR html/* $(DESTDIR)$(htmldir) + +# Automake's "distcheck" is sensitive to having files left over +# after "make uninstall", so we have to clean up the install hook. +@DOC_TRUE@uninstall-local: +@DOC_TRUE@ rm -rf $(DESTDIR)$(htmldir) + +@DOC_TRUE@dox: html/index.html + +# We repeat the three targets in both the "if" and "else" clauses +# of the conditional, because the generated makefile will contain +# references to the targets (target "install" depends on target +# "install-datahook", for example), and some make programs get upset +# if no target exists. + +@DOC_FALSE@install-data-hook: +@DOC_FALSE@uninstall-local: +@DOC_FALSE@dox: + +all-local: dox + +html/index.html: Doxyfile $(doxygen_input) + "@DOXYGEN@" + +# Make tarfile to distribute the HTML documentation. +doc-dist: dox + cp $(static_pages) html + tar -czf $(PACKAGE)-docs-$(VERSION).tar.gz -C html . + +pdf: @PACKAGE@.pdf +@PACKAGE@.pdf: + $(MAKE) -C ./latex pdf + ln -s ./latex/refman.ps @PACKAGE@.ps + ln -s ./latex/refman.pdf @PACKAGE@.pdf + +clean-local: + $(RM) -r latex + $(RM) -r html man @PACKAGE@.ps @PACKAGE@.pdf +# 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: diff --git a/lib/cppunit-1.10.0/doc/Money.dox b/lib/cppunit-1.10.0/doc/Money.dox new file mode 100644 index 0000000000..bf0111e95e --- /dev/null +++ b/lib/cppunit-1.10.0/doc/Money.dox @@ -0,0 +1,558 @@ +/*! \page money_example Money, a step by step example + +\section Table of contents + + - \ref sec_setting_vc + - \ref sec_setting_unix + - \ref sec_running_test + - \ref sec_adding_testfixture + - \ref sec_first_tests + - \ref sec_more_tests + - \ref sec_credits + + The example explored in this article can be found in \c examples/Money/. + + + +\section sec_setting_vc Setting up your project (VC++) + +\subsection sec_install Compiling and installing CppUnit libaries + +In the following document, $CPPUNIT is the directory where you unpacked %CppUnit: +$CPPUNIT/: + include/ + lib/ + src/ + cppunit/ + +First, you need to compile %CppUnit libraries: +- Open the $CPPUNIT/src/CppUnitLibraries.dsw workspace in VC++. +- In the 'Build' menu, select 'Batch Build...' +- In the batch build dialog, select all projects and press the build button. +- The resulting libraries can be found in the $CPPUNIT/lib/ directory. + +Once it is done, you need to tell VC++ where are the includes and librairies +to use them in other projects. Open the 'Tools/Options...' dialog, and in the +'Directories' tab, select 'include files' in the combo. Add a new entry that +points to $CPPUNIT/include/. Change to 'libraries files' in the combo and +add a new entry for $CPPUNIT/lib/. Repeat the process with 'source files' +and add $CPPUNIT/src/cppunit/. + +\subsection sec_getting_started Getting started + +Creates a new console application ('a simple application' template will do). +Let's link %CppUnit library to our project. In the project settings: +- In tab 'C++', combo 'Code generation', set the combo to 'Multithreaded DLL' +for the release configuration, and 'Debug Multithreaded DLL' for the debug +configure, +- In tab 'C++', combo 'C++ langage', for All Configurations, check +'enable Run-Time Type Information (RTTI)', +- In tab 'Link', in the 'Object/library modules' field, add cppunitd.lib for +the debug configuration, and cppunit.lib for the release configuration. + +We're done ! + + + + + + + +\section sec_setting_unix Setting up your project (Unix) +We'll use \c autoconf and \c automake to make it simple to +create our build environment. Create a directory somewhere to +hold the code we're going to build. Create \c configure.in and +\c Makefile.am in that directory to get started. + +configure.in +\verbatim +dnl Process this file with autoconf to produce a configure script. +AC_INIT(Makefile.am) +AM_INIT_AUTOMAKE(money,0.1) +AM_PATH_CPPUNIT(1.9.6) +AC_PROG_CXX +AC_PROG_CC +AC_PROG_INSTALL +AC_OUTPUT(Makefile)\endverbatim + +Makefile.am +\verbatim +# Rules for the test code (use `make check` to execute) +TESTS = MoneyApp +check_PROGRAMS = $(TESTS) +MoneyApp_SOURCES = Money.h MoneyTest.h MoneyTest.cpp MoneyApp.cpp +MoneyApp_CXXFLAGS = $(CPPUNIT_CFLAGS) +MoneyApp_LDFLAGS = $(CPPUNIT_LIBS) +MoneyApp_LDFLAGS = -ldl\endverbatim + + + + + + + + +\section sec_running_test Running our tests + +We have a main that doesn't do anything. Let's start by adding the mecanics +to run our tests (remember, test before you code ;-) ). For this example, +we will use a TextTestRunner with the CompilerOutputter for post-build +testing: + +MoneyApp.cpp +\code +#include "stdafx.h" +#include +#include +#include + + +int main(int argc, char* argv[]) +{ + // Get the top level suite from the registry + CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest(); + + // Adds the test to the list of test to run + CppUnit::TextUi::TestRunner runner; + runner.addTest( suite ); + + // Change the default outputter to a compiler error format outputter + runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), + std::cerr ) ); + // Run the tests. + bool wasSucessful = runner.run(); + + // Return error code 1 if the one of test failed. + return wasSucessful ? 0 : 1; +}\endcode + + VC++: Compile and run (Ctrl+F5). + + Unix: First build. Since we don't have all the file yet, let's create them + and build our application for the first time: +\verbatim +touch Money.h MoneyTest.h MoneyTest.cpp +aclocal -I /usr/local/share/aclocal +autoconf +automake -a +touch NEWS README AUTHORS ChangeLog # To make automake happy +./configure +make check\endverbatim + + Our application will report that everything +is fine and no test were run. So let's add some tests... + + + +\subsection sec_post_build Setting up automated post-build testing (VC++) + +What does post-build testing means? It means that each time you compile, +the test are automatically run when the build finish. This is very +useful, if you compile often you can know that you just 'broke' something, +or that everything is still working fine. + +Let's adds that to our project, In the project settings, in the +'post-build step' tab: +- Select 'All configurations' (upper left combo) +- In the 'Post-build description', enter 'Unit testing...' +- In 'post-build command(s)', add a new line: \$(TargetPath)$ + +\$(TargetPath) expands into the name of your application: +Debug\MoneyApp.exe in debug configuration and Release\MoneyApp.exe in release +configuration. + +What we are doing is say to VC++ to run our application for each build. +Notices the last line of \c main(), it returns a different error code, +depending on weither or not a test failed. If the code returned by +an application is not 0 in post-build step, it tell VC++ that the build +step failed. + +Compile. Notices that the application's output is now in the build window. +How convenient! + + (Unix: tips to integrate make check into various IDE?) + + + + + + + +\section sec_adding_testfixture Adding the TestFixture + +For this example, we are going to write a simple money class. Money +has an amount and a currency. Let's begin by creating a fixture where +we can put our tests, and add single test to test Money constructor: + +MoneyTest.h: +\code +#ifndef MONEYTEST_H +#define MONEYTEST_H + +#include + +class MoneyTest : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE( MoneyTest ); + CPPUNIT_TEST( testConstructor ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + + void testConstructor(); +}; + +#endif // MONEYTEST_H\endcode + +- CPPUNIT_TEST_SUITE declares that our Fixture's test suite. +- CPPUNIT_TEST adds a test to our test suite. The test is implemented +by a method named testConstructor(). +- setUp() and tearDown() are use to setUp/tearDown some fixtures. We are +not using any for now. + +MoneyTest.cpp +\code +#include "stdafx.h" +#include "MoneyTest.h" + +// Registers the fixture into the 'registry' +CPPUNIT_TEST_SUITE_REGISTRATION( MoneyTest ); + + +void +MoneyTest::setUp() +{ +} + + +void +MoneyTest::tearDown() +{ +} + + +void +MoneyTest::testConstructor() +{ + CPPUNIT_FAIL( "not implemented" ); +} +\endcode + +Compile. As expected, it reports that a test failed. Press the \c F4 key +(Go to next Error). VC++ jump right to our failed assertion CPPUNIT_FAIL. +We can not ask better in term of integration! +\verbatim +Compiling... +MoneyTest.cpp +Linking... +Unit testing... +.F +G:\prg\vc\Lib\cppunit\examples\money\MoneyTest.cpp(26):Assertion +Test name: MoneyTest.testConstructor +not implemented +Failures !!! +Run: 1 Failure total: 1 Failures: 1 Errors: 0 +Error executing d:\winnt\system32\cmd.exe. + +moneyappd.exe - 1 error(s), 0 warning(s) +\endverbatim + +Well, we have everything set up, let's start doing some real testing. + + + + + + + +\section sec_first_tests Our first tests + +Let's write our first real test. A test is usually decomposed in three parts: +- setting up datas used by the test +- doing some processing based on those datas +- checking the result of the processing + +\code +void +MoneyTest::testConstructor() +{ + // Set up + const std::string currencyFF( "FF" ); + const double longNumber = 12345678.90123; + + // Process + Money money( longNumber, currencyFF ); + + // Check + CPPUNIT_ASSERT_EQUAL( longNumber, money.getAmount() ); + CPPUNIT_ASSERT_EQUAL( currencyFF, money.getCurrency() ); +}\endcode + +Well, we finally have a good start of what our Money class will +look likes. Let's start implementing... + +Money.h +\code +#ifndef MONEY_H +#define MONEY_H + +#include + +class Money +{ +public: + Money( double amount, std::string currency ) + : m_amount( amount ) + , m_currency( m_currency ) + { + } + + double getAmount() const + { + return m_amount; + } + + std::string getCurrency() const + { + return m_currency; + } + +private: + double m_amount; + std::string m_currency; +}; + +#endif\endcode + +Include Money.h in MoneyTest.cpp and compile. + +Hum, an assertion failed! Press F4, and we jump to the assertion +that checks the currency of the constructed money object. The report +indicates that string is not equal to expected value. There is only +two ways for this to happen: the member was badly initialized or we +returned the wrong value. After a quick check, we fin out it is the former. +Let's fix that: + +Money.h +\code + Money( double amount, std::string currency ) + : m_amount( amount ) + , m_currency( currency ) + { + }\endcode + +Compile. Our test finally pass! +Let's add some functionnalities to our Money class. + + + + + + + + +\section sec_more_tests Adding more tests + +\subsection sec_equal Testing for equality + + We want to check if to Money object are equal. Let's start by adding +a new test to the suite, then add our method: + +MoneyTest.h +\code + CPPUNIT_TEST_SUITE( MoneyTest ); + CPPUNIT_TEST( testConstructor ); + CPPUNIT_TEST( testEqual ); + CPPUNIT_TEST_SUITE_END(); +public: + ... + void testEqual(); +\endcode + +MoneyTest.cpp +\code +void +MoneyTest::testEqual() +{ + // Set up + const Money money123FF( 123, "FF" ); + const Money money123USD( 123, "USD" ); + const Money money12FF( 12, "FF" ); + const Money money12USD( 12, "USD" ); + + // Process & Check + CPPUNIT_ASSERT( money123FF == money123FF ); // == + CPPUNIT_ASSERT( money12FF != money123FF ); // != amount + CPPUNIT_ASSERT( money123USD != money123FF ); // != currency + CPPUNIT_ASSERT( money12USD != money123FF ); // != currency and != amount +}\endcode + + Let's implements \c operator \c == and \c operator \c != in Money.h: + +Money.h +\code +class Money +{ +public: +... + bool operator ==( const Money &other ) const + { + return m_amount == other.m_amount && + m_currency == other.m_currency; + } + + bool operator !=( const Money &other ) const + { + return (*this == other); + } +}; +\endcode + + Compile, run... Ooops... Press F4, it seems we're having trouble +with \c operator \c !=. Let's fix that: +\code + bool operator !=( const Money &other ) const + { + return !(*this == other); + }\endcode + +Compile, run. Finaly got it working! + + + +\subsection sec_opadd Adding moneys + + Let's add our test 'testAdd' to MoneyTest. You know the routine... + +MoneyTest.cpp +\code +void +MoneyTest::testAdd() +{ + // Set up + const Money money12FF( 12, "FF" ); + const Money expectedMoney( 135, "FF" ); + + // Process + Money money( 123, "FF" ); + money += money12FF; + + // Check + CPPUNIT_ASSERT_EQUAL( expectedMoney == money.getAmount() ); // += works + CPPUNIT_ASSERT( &money == &(money += money12FF) ); // += returns ref. on 'this'. +}\endcode + + While writing that test case, you ask yourself, what is the result of +adding money of currencies. Obviously this is an error and it should be +reported, say let throw an exception, say \c IncompatibleMoneyError, +when the currencies are not equal. We will write another test case +for this later. For now let get our testAdd() case working: + +Money.h +\code +class Money +{ +public: +... + Money &operator +=( const Money &other ) + { + m_amount += other.m_amount; + return *this; + } +}; \endcode + +Compile, run. Miracle, everything is fine! Just to be sure the test is indeed +working, in the above code, change \c m_amount \c += to \c -=. Build and +check that it fails (always be suspicious of test that work the first +time: you may have forgotten to add it to the suite for example)! +Change the code back so that all the tests are working. + + Let's the incompatible money test case before we forget about it... +That test case expect an \c IncompatibleMoneyError exception to be thrown. +%CppUnit can test that for us, you need to specify that the test case +expect an exception when you add it to the suite: + +MoneyTest.h +\code +class MoneyTest : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE( MoneyTest ); + CPPUNIT_TEST( testConstructor ); + CPPUNIT_TEST( testEqual ); + CPPUNIT_TEST( testAdd ); + CPPUNIT_TEST_EXCEPTION( testAddThrow, IncompatibleMoneyError ); + CPPUNIT_TEST_SUITE_END(); +public: + ... + void testAddThrow(); +};\endcode + +By convention, you ends the name of such tests with \c 'Throw', that way, you +know that the test expect an exception to be thrown. Let's write our test case: + +MoneyTest.cpp +\code +void +MoneyTest::testAddThrow() +{ + // Set up + const Money money123FF( 123, "FF" ); + + // Process + Money money( 123, "USD" ); + money += money123FF; // should throw an exception +} +\endcode + + Compile... Ooops, forgot to declare the exception class. Let's do that: + +Money.h +\code +#include +#include + +class IncompatibleMoneyError : public std::runtime_error +{ +public: + IncompatibleMoneyError() : runtime_error( "Incompatible moneys" ) + { + } +}; +\endcode + + Compile. As expected testAddThrow() fail... Let's fix that: + +Money.h +\code + Money &operator +=( const Money &other ) + { + if ( m_currency != other.m_currency ) + throw IncompatibleMoneyError(); + + m_amount += other.m_amount; + return *this; + }\endcode + + Compile. Our test finaly pass! + + TODO: +- Copy constructor/Assigment operator +- Introducing fixtures +- ? + + + + + + +\section sec_credits Credits +This article was written by Baptiste Lepilleur. Unix configuration & set up +by Phil Verghese. Inspired from many others (JUnit, Phil's cookbook...), +and all the newbies around that keep asking me for the +'Hello world' example ;-) + + + +*/ \ No newline at end of file diff --git a/lib/cppunit-1.10.0/doc/cookbook.dox b/lib/cppunit-1.10.0/doc/cookbook.dox new file mode 100644 index 0000000000..62e55e1207 --- /dev/null +++ b/lib/cppunit-1.10.0/doc/cookbook.dox @@ -0,0 +1,523 @@ +/*! \page cppunit_cookbook CppUnit Cookbook +Here is a short cookbook to help you get started. + + +\section simple_test_case Simple Test Case +You want to know whether your code is working. + +How do you do it? + +There are many ways. Stepping through a debugger or +littering your code with stream output calls are two of +the simpler ways, but they both have drawbacks. +Stepping through your code is a good idea, but it +is not automatic. You have to do it every time you +make changes. Streaming out text is also fine, +but it makes code ugly and it generates far more +information than you need most of the time. + +Tests in %CppUnit can be run automatically. +They are easy to set up and once you have +written them, they are always there to help +you keep confidence in the quality of your code. + +To make a simple test, here is what you do: + +Subclass the \link CppUnit::TestCase TestCase \endlink class. +Override the method \link CppUnit::TestCase::runTest() runTest()\endlink. +When you want to check a value, call +\link CPPUNIT_ASSERT() CPPUNIT_ASSERT(bool) \endlink +and pass in an expression that is true if the +test succeeds. + +For example, to test the equality comparison +for a Complex number class, write: + +\code +class ComplexNumberTest : public CppUnit::TestCase { +public: + ComplexNumberTest( std::string name ) : CppUnit::TestCase( name ) {} + + void runTest() { + CPPUNIT_ASSERT( Complex (10, 1) == Complex (10, 1) ); + CPPUNIT_ASSERT( !(Complex (1, 1) == Complex (2, 2)) ); + } +}; +\endcode + +That was a very simple test. Ordinarily, +you'll have many little test cases that you'll +want to run on the same set of objects. To do +this, use a fixture. + + + + + + +\section fixture Fixture +A fixture is a known set of objects that +serves as a base for a set of test cases. +Fixtures come in very handy when you are +testing as you develop. + +Let's try out this style of development and +learn about fixtures along the away. Suppose +that we are really developing a complex +number class. Let's start by defining a +empty class named Complex. + +\code +class Complex {}; +\endcode + +Now create an instance of ComplexNumberTest +above, compile the code and see what happens. +The first thing we notice is a few compiler +errors. The test uses operator ==, but it is +not defined. Let's fix that. + +\code +bool operator==( const Complex &a, const Complex &b) +{ + return true; +} +\endcode + +Now compile the test, and run it. This time it +compiles but the test fails. +We need a bit more to get an operator ==working +correctly, so we revisit the code. + +\code +class Complex { + friend bool operator ==(const Complex& a, const Complex& b); + double real, imaginary; +public: + Complex( double r, double i = 0 ) + : real(r) + , imaginary(i) + { + } +}; + +bool operator ==( const Complex &a, const Complex &b ) +{ + return a.real == b.real && a.imaginary == b.imaginary; +} +\endcode + +If we compile now and run our test it will pass. + +Now we are ready to add new operations and +new tests. At this point a fixture would be +handy. We would probably be better off when +doing our tests if we decided to instantiate +three or four complex numbers and reuse them +across our tests. + +Here is how we do it: +- Add member variables for each part of the + \link CppUnit::TestFixture fixture \endlink +- Override \link CppUnit::TestFixture::setUp() setUp() \endlink + to initialize the variables +- Override \link CppUnit::TestFixture::tearDown() tearDown() \endlink + to release any permanent resources you allocated in + \link CppUnit::TestFixture::setUp() setUp() \endlink + +\code +class ComplexNumberTest : public CppUnit::TestFixture { +private: + Complex *m_10_1, *m_1_1, *m_11_2; +public: + void setUp() + { + m_10_1 = new Complex( 10, 1 ); + m_1_1 = new Complex( 1, 1 ); + m_11_2 = new Complex( 11, 2 ); + } + + void tearDown() + { + delete m_10_1; + delete m_1_1; + delete m_11_2; + } +}; +\endcode + +Once we have this fixture, we can add the complex +addition test case any any others that we need +over the course of our development. + + + +\section test_case Test Case + +How do you write and invoke individual tests using a fixture? + +There are two steps to this process: +- Write the test case as a method in the fixture class +- Create a TestCaller which runs that particular method + +Here is our test case class with a few extra case methods: + +\code +class ComplexNumberTest : public CppUnit::TestFixture { +private: + Complex *m_10_1, *m_1_1, *m_11_2; +public: + void setUp() + { + m_10_1 = new Complex( 10, 1 ); + m_1_1 = new Complex( 1, 1 ); + m_11_2 = new Complex( 11, 2 ); + } + + void tearDown() + { + delete m_10_1; + delete m_1_1; + delete m_11_2; + } + + void testEquality() + { + CPPUNIT_ASSERT( *m_10_1 == *m_10_1 ); + CPPUNIT_ASSERT( !(*m_10_1 == *m_11_2) ); + } + + void testAddition() + { + CPPUNIT_ASSERT( *m_10_1 + *m_1_1 == *m_11_2 ); + } +}; +\endcode + +One may create and run instances for each test case like this: + +\code +CppUnit::TestCaller test( "testEquality", + &ComplexNumberTest::testEquality ); +CppUnit::TestResult result; +test.run( &result ); +\endcode + +The second argument to the test caller constructor is the address of +a method on ComplexNumberTest. When the test caller is run, +that specific method will be run. This is not a useful thing to do, +however, as no diagnostics will be displayed. +One will normally use a \link ExecutingTest TestRunner \endlink (see below) +to display the results. + +Once you have several tests, organize them into a suite. + + + + + +\section suite Suite + +How do you set up your tests so that you can run them all at once? + +%CppUnit provides a \link CppUnit::TestSuite TestSuite \endlink class +that runs any number of TestCases together. + +We saw, above, how to run a single test case. + +To create a suite of two or more tests, you do the following: + +\code +CppUnit::TestSuite suite; +CppUnit::TestResult result; +suite.addTest( new CppUnit::TestCaller( + "testEquality", + &ComplexNumberTest::testEquality ) ); +suite.addTest( new CppUnit::TestCaller( + "testAddition", + &ComplexNumberTest::testAddition ) ); +suite.run( &result ); +\endcode + +\link CppUnit::TestSuite TestSuites \endlink don't only have to +contain callers for TestCases. They can contain any object +that implements the \link CppUnit::Test Test \endlink interface. +For example, you can create a +\link CppUnit::TestSuite TestSuite \endlink in your code and +I can create one in mine, and we can run them together +by creating a \link CppUnit::TestSuite TestSuite \endlink +that contains both: + +\code +CppUnit::TestSuite suite; +CppUnit::TestResult result; +suite.addTest( ComplexNumberTest::suite() ); +suite.addTest( SurrealNumberTest::suite() ); +suite.run( &result ); +\endcode + + + + +\section test_runner TestRunner + +How do you run your tests and collect their results? + +Once you have a test suite, you'll want to run it. %CppUnit provides tools +to define the suite to be run and to display its results. +You make your suite accessible to a \link ExecutingTest TestRunner \endlink +program with a static method suite that returns a test suite. + +For example, to make a ComplexNumberTest suite available to a +\link ExecutingTest TestRunner \endlink, add the following code to +ComplexNumberTest: + +\code +public: + static CppUnit::Test *suite() + { + CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite( "ComplexNumberTest" ); + suiteOfTests->addTest( new CppUnit::TestCaller( + "testEquality", + &ComplexNumberTest::testEquality ) ); + suiteOfTests->addTest( new CppUnit::TestCaller( + "testAddition", + &ComplexNumberTest::testAddition ) ); + return suiteOfTests; + } +\endcode + +\anchor test_runner_code +To use the text version, include the header files for the tests in Main.cpp: + +\code +#include +#include "ExampleTestCase.h" +#include "ComplexNumberTest.h" +\endcode + +And add a call to +\link ::CppUnit::TextUi::TestRunner::addTest addTest(CppUnit::Test *) \endlink +in the main() function: + +\code +int main( int argc, char **argv) +{ + CppUnit::TextUi::TestRunner runner; + runner.addTest( ExampleTestCase::suite() ); + runner.addTest( ComplexNumberTest::suite() ); + runner.run(); + return 0; +} +\endcode + +The \link ExecutingTest TestRunner \endlink will run the tests. +If all the tests pass, you'll get an informative message. +If any fail, you'll get the following information: + +- The name of the test case that failed +- The name of the source file that contains the test +- The line number where the failure occurred +- All of the text inside the call to CPPUNIT_ASSERT() which detected the failure + +%CppUnit distinguishes between failures and errors. A failure is +anticipated and checked for with assertions. Errors are unanticipated problems +like division by zero and other exceptions thrown by the C++ runtime or your code. + + + + +\section helper_macros Helper Macros + +As you might have noticed, implementing the fixture static suite() +method is a repetitive and error prone task. A \ref WritingTestFixture set of +macros have been created to automatically implements the +static suite() method. + +The following code is a rewrite of ComplexNumberTest using those macros: + +\code +#include + +class ComplexNumberTest : public CppUnit::TestFixture { +\endcode +First, we declare the suite, passing the class name to the macro: +\code +CPPUNIT_TEST_SUITE( ComplexNumberTest ); +\endcode +The suite created by the static suite() method is named after +the class name. +Then, we declare each test case of the fixture: +\code +CPPUNIT_TEST( testEquality ); +CPPUNIT_TEST( testAddition ); +\endcode +Finally, we end the suite declaration: +\code +CPPUNIT_TEST_SUITE_END(); +\endcode +At this point, a method with the following signature has been implemented: +\code +static CppUnit::TestSuite *suite(); +\endcode +The rest of the fixture is left unchanged: +\code +private: + Complex *m_10_1, *m_1_1, *m_11_2; +public: + void setUp() + { + m_10_1 = new Complex( 10, 1 ); + m_1_1 = new Complex( 1, 1 ); + m_11_2 = new Complex( 11, 2 ); + } + + void tearDown() + { + delete m_10_1; + delete m_1_1; + delete m_11_2; + } + + void testEquality() + { + CPPUNIT_ASSERT( *m_10_1 == *m_10_1 ); + CPPUNIT_ASSERT( !(*m_10_1 == *m_11_2) ); + } + + void testAddition() + { + CPPUNIT_ASSERT( *m_10_1 + *m_1_1 == *m_11_2 ); + } +}; +\endcode + +The name of the \link CppUnit::TestCaller TestCaller \endlink added to the +suite are a composition of the fixture name and the method name. + +In the present case, the names would be: +"ComplexNumberTest.testEquality" and "ComplexNumberTest.testAddition". + +The \link WritingTestFixture helper macros \endlink help you write comon assertion. +For example, to check that ComplexNumber throws a MathException when dividing +a number by 0: +- add the test to the suite using CPPUNIT_TEST_EXCEPTION, specifying the expected + exception type. +- write the test case method + +\code +CPPUNIT_TEST_SUITE( ComplexNumberTest ); +// [...] +CPPUNIT_TEST_EXCEPTION( testDivideByZeroThrows, MathException ); +CPPUNIT_TEST_SUITE_END(); + +// [...] + + void testDivideByZeroThrows() + { + // The following line should throw a MathException. + *m_10_1 / ComplexNumber(0); + } +\endcode + +If the expected exception is not thrown, then a assertion failure is reported. + + + + +\section test_factory_registry TestFactoryRegistry + +The TestFactoryRegistry was created to solve two pitfalls: +- forgetting to add your fixture suite to the test runner (since it is in + another file, it is easy to forget) +- compilation bottleneck caused by the inclusion of all test case headers + (see \ref test_runner_code "previous example") + +The TestFactoryRegistry is a place where suites can be registered at initialization +time. + +To register the ComplexNumber suite, in the .cpp file, you add: + +\code +#include + +CPPUNIT_TEST_SUITE_REGISTRATION( ComplexNumberTest ); +\endcode + +Behind the scene, a static variable type of +\link CppUnit::AutoRegisterSuite AutoRegisterSuite \endlink is declared. +On construction, it will +\link CppUnit::TestFactoryRegistry::registerFactory(TestFactory*) register \endlink +a \link CppUnit::TestSuiteFactory TestSuiteFactory \endlink into the +\link CppUnit::TestFactoryRegistry TestFactoryRegistry \endlink. +The \link CppUnit::TestSuiteFactory TestSuiteFactory \endlink returns +the \link CppUnit::TestSuite TestSuite \endlink returned by ComplexNumber::suite(). + +To run the tests, using the text test runner, we don't need to include the fixture +anymore: + +\code +#include +#include + +int main( int argc, char **argv) +{ + CppUnit::TextUi::TestRunner runner; +\endcode +First, we retreive the instance of the +\link CppUnit::TestFactoryRegistry TestFactoryRegistry \endlink: +\code + CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry(); +\endcode +Then, we obtain and add a new \link CppUnit::TestSuite TestSuite \endlink created +by the \link CppUnit::TestFactoryRegistry TestFactoryRegistry \endlink that +contains all the test suite registered using CPPUNIT_TEST_SUITE_REGISTRATION(). +\code + runner.addTest( registry.makeTest() ); + runner.run(); + return 0; +} +\endcode + + + + +\section post_build_check Post-build check + +Well, now that we have our unit tests running, how about integrating unit +testing to our build process ? + +To do that, the application must returns a value different than 0 to indicate that +there was an error. + +\link CppUnit::TextUi::TestRunner::run() TestRunner::run() \endlink returns +a boolean indicating if the run was successful. + +Updating our main programm, we obtains: +\code +#include +#include + +int main( int argc, char **argv) +{ + CppUnit::TextUi::TestRunner runner; + CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry(); + runner.addTest( registry.makeTest() ); + bool wasSuccessful = runner.run( "", false ); + return wasSuccessful; +} +\endcode + +Now, you need to run your application after compilation. + +With Visual C++, this is done in Project Settings/Post-Build step, +by adding the following command: $(TargetPath). It is expanded to +the application executable path. Look up the project +examples/cppunittest/CppUnitTestMain.dsp which +use that technic. + + + +Original version by Michael Feathers. +Doxygen conversion and update by Baptiste Lepilleur. +*/ \ No newline at end of file diff --git a/lib/cppunit-1.10.0/doc/footer.html b/lib/cppunit-1.10.0/doc/footer.html new file mode 100644 index 0000000000..448359e1cc --- /dev/null +++ b/lib/cppunit-1.10.0/doc/footer.html @@ -0,0 +1,23 @@ +
+ + + + + + + +
+ + SourceForge Logo + + hosts this site. + + + Send comments to:
+ CppUnit Developers +
+ + + diff --git a/lib/cppunit-1.10.0/doc/header.html b/lib/cppunit-1.10.0/doc/header.html new file mode 100644 index 0000000000..62285cbce3 --- /dev/null +++ b/lib/cppunit-1.10.0/doc/header.html @@ -0,0 +1,26 @@ + + + +CppUnit - The Unit Testing Library + + + + + + + + + + + +
+ + CppUnit project page + + + FAQ + + CppUnit home page +
+ +
diff --git a/lib/cppunit-1.10.0/doc/other_documentation.dox b/lib/cppunit-1.10.0/doc/other_documentation.dox new file mode 100644 index 0000000000..5b148e18a5 --- /dev/null +++ b/lib/cppunit-1.10.0/doc/other_documentation.dox @@ -0,0 +1,147 @@ +/** + \mainpage + + \section _history History + The first port of JUnit to C++ was done + by Michael Feathers. His versions + can be found on the + + XProgramming software page. They are os-specific, + so Jerome Lacoste provided a port to Unix/Solaris. + His version can be found on the same page. + The %CppUnit project has combined and built on this work. + + \section _usage Usage + Take a look into the \ref cppunit_cookbook. + It gives a quick start into using this + testing framework. Modules give + you a organized view of %CppUnit classes. + + (Notes to newbies, you may want to check out \ref money_example, + a work in progress, but the project is provided with %CppUnit). + + For a discussion on %CppUnit, check + + the WikiWiki Pages on CppUnit. There you can also + find the original versions and various ports to other + OSses and languages. + + \section _license License + This library is released under + the GNU + + Lesser General Public License. + + \author Eric Sommerlade (sommerlade@gmx.net) + \author Michael Feathers (mfeathers@objectmentor.com) + \author Jerome Lacoste (lacostej@altern.org) + \author Baptiste Lepilleur + \author Bastiaan Bakker + \author Steve Robbins + */ + + + +/*! \defgroup WritingTestFixture Writing test fixture + */ + +/*! \defgroup Assertions Making assertions + */ + +/*! \defgroup CreatingTestSuite Creating TestSuite + */ + +/*! \defgroup ExecutingTest Executing test + */ + +/*! \defgroup TrackingTestExecution Tracking test execution + */ + +/*! \defgroup WritingTestResult Writing test result + */ + +/*! \defgroup BrowsingCollectedTestResult Browsing collected test result + */ + +/*! \defgroup CreatingNewAssertions Creating custom assertions + */ + +/*! \defgroup WritingTestPlugIn Writing Test Plug-in + * + * Creating a test plug-in is really simple: + * - make your project a dynamic library (with VC++, choose Win32 Dynamic Library in + * the project wizard), and link against the dynamic library version of %CppUnit + * (cppunit*_dll.lib for VC++). + * - in a cpp file, include TestPlugIn.h, and use the macro CPPUNIT_PLUGIN_IMPLEMENT() + * to declare the test plug-in. + * - That's it, you're done! All the tests registered using the TestFactoryRegistry, + * CPPUNIT_TEST_SUITE_NAMED_REGISTRATION, or CPPUNIT_TEST_SUITE_REGISTRATION will + * be visible to other plug-in and to the DllPlugInRunner. + * + * Example: + * \code + * #include + * + * CPPUNIT_PLUGIN_IMPLEMENT(); + * \endcode + * + * The interface CppUnitTestPlugIn is automatically implemented by the previous + * macro. You can define your one implementation. + * + * To provide your custom implementation of the plug-in interface, you must: + * - create a class that implements the CppUnitTestPlugIn interface + * - use CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL() with your class to export + * the plug-in interface + * - implements the 'main' function with CPPUNIT_PLUGIN_IMPLEMENT_MAIN(). + * + * Some of the reason you may want to do this: + * - You do not use the TestFactoryRegistry to register your test. + * - You want to create a custom listener to use with DllPlugInRunner. + * - You want to do initialize some globale resources before running the test + * (setting up COM for example). + * + * See CppUnitTestPlugIn for further detail on how to do this. + * + * Creating your own test plug-in with VC++: + * - Create a new "Win32 Dynamic Library" project, choose the empty template + * - For the Debug Configuration, add cppunitd_dll.lib to + * 'Project Settings/Link/Object/Libariries modules', and for the Release + * Configuration, add cppunit_dll.lib. + * - For All Configuration, in 'C++/Preprocessor/Preprocessors definitions', + * add the symbol 'CPPUNIT_DLL' at the end of the line (it means that + * you are linking against cppunit dll). + * - Create a 'main' file that contains: +\verbatim +#include + +CPPUNIT_PLUGIN_IMPLEMENT();\endverbatim + * - Add your tests + * - You're done ! + * + * See examples/simple/simple_plugin.dsp for an example. + * + * Notes to VC++ users: + * - you can run a post-build check on the plug-in. Add the following line to your + * post-build tab: "DllPlugInTesterd_dll.exe $(TargetPath)". DllPlugInTesterd_dll.exe + * need to be some place were it can be found (path, ...), or you need to + * indicate the correct path. + * $(TargetPath) is the filename of your plug-in. + * - you can debug your DLL, set the executable for debug session to the plug-in + * runner, and the name of the DLL in the program arguments ($(xxx) won't work + * this time). + * + * How does it works ? + * + * When %CppUnit is linked as a DLL, the singleton used for the TestFactoryRegistry + * is the same for the plug-in runner (also linked against %CppUnit DLL). This means + * that the tests registered with the macros (at static initialization) are + * registered in the same registry. As soon as a DLL is loaded by the PlugInManager, + * the DLL static variable are constructed and the test registered to the + * TestFactoryRegistry. + * + * After loading the DLL, the PlugInManager look-up a specific function exported by + * the DLL. That function returns a pointer on the plug-in interface, which is later + * used by the PlugInManager. + * + * \see CreatingTestSuite. + */ \ No newline at end of file diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.cpp new file mode 100644 index 0000000000..643a94702d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.cpp @@ -0,0 +1,123 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file ClockerListener.cpp for class ClockerListener +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/04/19 +// ////////////////////////////////////////////////////////////////////////// +#include +#include +#include "ClockerListener.h" +#include "ClockerModel.h" +#include + + +ClockerListener::ClockerListener( ClockerModel *model, + bool text ) + : m_model( model ) + , m_text( text ) +{ +} + + +ClockerListener::~ClockerListener() +{ +} + + +void +ClockerListener::startTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ) +{ + m_model->setExpectedTestCount( test->countTestCases() *2 ); +} + + +void +ClockerListener::endTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ) +{ + if ( m_text ) + printStatistics(); +} + + +void +ClockerListener::startTest( CPPUNIT_NS::Test *test ) +{ + m_model->enterTest( test, false ); +} + + +void +ClockerListener::endTest( CPPUNIT_NS::Test *test ) +{ + m_model->exitTest( test, false ); +} + + +void +ClockerListener::startSuite( CPPUNIT_NS::Test *suite ) +{ + m_model->enterTest( suite, true ); +} + + +void +ClockerListener::endSuite( CPPUNIT_NS::Test *suite ) +{ + m_model->exitTest( suite, true ); +} + + +void +ClockerListener::printStatistics() const +{ + printTest( 0, "" ); + std::cout << std::endl; + std::cout << "Total elapsed time: "; + printTime( m_model->totalElapsedTime() ); + std::cout << ", average test case time: "; + printTime( m_model->averageTestCaseTime() ); +} + + +void +ClockerListener::printTest( int testIndex, + const std::string &indentString ) const +{ + std::string indent = indentString; + const int indentLength = 3; + + printTestIndent( indentString, indentLength ); + printTime( m_model->testTimeFor( testIndex ) ); + + std::cout << m_model->testPathFor( testIndex ).getChildTest()->getName(); + std::cout << std::endl; + + if ( m_model->childCountFor( testIndex ) == 0 ) + indent+= std::string( indentLength, ' ' ); + else + indent+= "|" + std::string( indentLength -1, ' ' ); + + for ( int index =0; index < m_model->childCountFor( testIndex ); ++index ) + printTest( m_model->childAtFor( testIndex, index ), indent ); +} + + +void +ClockerListener::printTestIndent( const std::string &indent, + const int indentLength ) const +{ + if ( indent.empty() ) + return; + + std::cout << " "; + std::cout << indent.substr( 0, indent.length() - indentLength ) ; + std::cout << "+" << std::string( indentLength -1, '-' ); +} + + +void +ClockerListener::printTime( double time ) const +{ + std::cout << '(' << ClockerModel::timeStringFor( time ) << "s) "; +} diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.h new file mode 100644 index 0000000000..17d85d4e49 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.h @@ -0,0 +1,66 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file ClockerListener.h for class ClockerListener +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/04/19 +// ////////////////////////////////////////////////////////////////////////// +#ifndef CLOCKERLISTENER_H +#define CLOCKERLISTENER_H + +#include + +class ClockerModel; + + +/// TestListener that prints a flatten or hierarchical view of the test tree. +class ClockerListener : public CPPUNIT_NS::TestListener +{ +public: + ClockerListener( ClockerModel *model, + bool text ); + + virtual ~ClockerListener(); + + void startTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ); + + void endTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ); + + void startTest( CPPUNIT_NS::Test *test ); + + void endTest( CPPUNIT_NS::Test *test ); + + void startSuite( CPPUNIT_NS::Test *suite ); + + void endSuite( CPPUNIT_NS::Test *suite ); + +private: + void printStatistics() const; + + void printTest( int testIndex, + const std::string &indentString ) const; + + void printTestIndent( const std::string &indent, + const int indentLength ) const; + + void printTime( double time ) const; + + /// Prevents the use of the copy constructor. + ClockerListener( const ClockerListener &other ); + + /// Prevents the use of the copy operator. + void operator =( const ClockerListener &other ); + +private: + ClockerModel *m_model; + bool m_text; +}; + + + +// Inlines methods for ClockerListener: +// ----------------------------------- + + + +#endif // CLOCKERLISTENER_H diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.cpp new file mode 100644 index 0000000000..c20ede1727 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.cpp @@ -0,0 +1,145 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file ClockerModel.cpp for class ClockerModel +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/06/14 +// ////////////////////////////////////////////////////////////////////////// +#include "ClockerModel.h" + + +ClockerModel::ClockerModel() + : m_testCaseCount( 0 ) + , m_totalTestCaseTime( 0 ) +{ +} + + +ClockerModel::~ClockerModel() +{ +} + + +void +ClockerModel::setExpectedTestCount( int count ) +{ + m_tests.reserve( count ); +} + + +void +ClockerModel::enterTest( CPPUNIT_NS::Test *test, + bool isSuite ) +{ + m_currentPath.add( test ); + + int testIndex = m_tests.size(); + if ( !m_testIndexes.empty() ) + m_tests[ m_testIndexes.top() ].m_childIndexes.push_back( testIndex ); + m_testIndexes.push( testIndex ); + m_testToIndexes.insert( TestToIndexes::value_type( test, testIndex ) ); + + TestInfo info; + info.m_timer.start(); + info.m_path = m_currentPath; + info.m_isSuite = isSuite; + + m_tests.push_back( info ); + + if ( !isSuite ) + ++m_testCaseCount; +} + + +void +ClockerModel::exitTest( CPPUNIT_NS::Test *test, + bool isSuite ) +{ + m_tests[ m_testIndexes.top() ].m_timer.finish(); + if ( !isSuite ) + m_totalTestCaseTime += m_tests.back().m_timer.elapsedTime(); + + m_currentPath.up(); + m_testIndexes.pop(); +} + + +double +ClockerModel::totalElapsedTime() const +{ + return m_tests[0].m_timer.elapsedTime(); +} + + +double +ClockerModel::averageTestCaseTime() const +{ + double average = 0; + if ( m_testCaseCount > 0 ) + average = m_totalTestCaseTime / m_testCaseCount; + return average; +} + + +double +ClockerModel::testTimeFor( int testIndex ) const +{ + return m_tests[ testIndex ].m_timer.elapsedTime(); +} + + +std::string +ClockerModel::timeStringFor( double time ) +{ + char buffer[320]; + const char *format; + if ( time < 1 ) + format = "%2.3f"; + else if ( time < 10 ) + format = "%3.2f"; + else if (time < 100 ) + format = "%4.1f"; + else + format = "%6f"; + + ::sprintf( buffer, format, time ); + + return buffer; +} + + +bool +ClockerModel::isSuite( int testIndex ) const +{ + return m_tests[ testIndex ].m_isSuite; +} + + +const CPPUNIT_NS::TestPath & +ClockerModel::testPathFor( int testIndex ) const +{ + return m_tests[ testIndex ].m_path; +} + + +int +ClockerModel::indexOf( CPPUNIT_NS::Test *test ) const +{ + TestToIndexes::const_iterator itFound = m_testToIndexes.find( test ); + if ( itFound != m_testToIndexes.end() ) + return itFound->second; + return -1; +} + + +int +ClockerModel::childCountFor( int testIndex ) const +{ + return m_tests[ testIndex ].m_childIndexes.size(); +} + + +int +ClockerModel::childAtFor( int testIndex, + int chidIndex ) const +{ + return m_tests[ testIndex ].m_childIndexes[ chidIndex ]; +} diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.h new file mode 100644 index 0000000000..46f7ff1f99 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.h @@ -0,0 +1,95 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file ClockerModel.h for class ClockerModel +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/06/14 +// ////////////////////////////////////////////////////////////////////////// +#ifndef CLOCKERMODEL_H +#define CLOCKERMODEL_H + +#include +#include +#include +#include +#include + +#ifdef CLOCKER_USE_WINNTTIMER +#include "WinNtTimer.h" +typedef WinNtTimer Timer; +#else +#include "Timer.h" +#endif + + +/// Model that represents test timing. +class ClockerModel +{ +public: + /*! Constructs a ClockerModel object. + */ + ClockerModel(); + + /// Destructor. + virtual ~ClockerModel(); + + void setExpectedTestCount( int count ); + + void enterTest( CPPUNIT_NS::Test *test, + bool isSuite ); + + void exitTest( CPPUNIT_NS::Test *test, + bool isSuite ); + + double totalElapsedTime() const; + + double averageTestCaseTime() const; + + double testTimeFor( CPPUNIT_NS::Test *test ) const; + + double testTimeFor( int testIndex ) const; + + static std::string timeStringFor( double time ); + + bool isSuite( int testIndex ) const; + + const CPPUNIT_NS::TestPath &testPathFor( int testIndex ) const; + + // -1 is none + int indexOf( CPPUNIT_NS::Test *test ) const; + + int childCountFor( int testIndex ) const; + + int childAtFor( int testIndex, + int chidIndex ) const; + +private: + struct TestInfo + { + CPPUNIT_NS::TestPath m_path; + Timer m_timer; + bool m_isSuite; + CppUnitVector m_childIndexes; + }; + + /// Prevents the use of the copy constructor. + ClockerModel( const ClockerModel &other ); + + /// Prevents the use of the copy operator. + void operator =( const ClockerModel &other ); + +private: + CPPUNIT_NS::TestPath m_currentPath; + + int m_testCaseCount; + double m_totalTestCaseTime; + + typedef CppUnitMap TestToIndexes; + + TestToIndexes m_testToIndexes; + CppUnitStack m_testIndexes; + CppUnitVector m_tests; +}; + + + + +#endif // CLOCKERMODEL_H diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.cpp new file mode 100644 index 0000000000..ad81b72dd4 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.cpp @@ -0,0 +1,77 @@ +#include +#include +#include +#include "ClockerXmlHook.h" +#include "ClockerListener.h" +#include "ClockerModel.h" + + + +class ClockerPlugIn : public CppUnitTestPlugIn +{ +public: + ClockerPlugIn() + : m_dumper( NULL ) + , m_model( NULL ) + , m_xmlHook( NULL ) + { + } + + ~ClockerPlugIn() + { + delete m_dumper; + delete m_model; + delete m_xmlHook; + } + + + void initialize( CPPUNIT_NS::TestFactoryRegistry *registry, + const CPPUNIT_NS::PlugInParameters ¶meters ) + { + bool text = false; + if ( parameters.getCommandLine() == "text" ) + text = true; + + m_model = new ClockerModel(); + m_dumper = new ClockerListener( m_model, text ); + m_xmlHook = new ClockerXmlHook( m_model ); + } + + + void addListener( CPPUNIT_NS::TestResult *eventManager ) + { + eventManager->addListener( m_dumper ); + } + + + void removeListener( CPPUNIT_NS::TestResult *eventManager ) + { + eventManager->removeListener( m_dumper ); + } + + + void addXmlOutputterHooks( CPPUNIT_NS::XmlOutputter *outputter ) + { + outputter->addHook( m_xmlHook ); + } + + + void removeXmlOutputterHooks() + { + } + + + void uninitialize( CPPUNIT_NS::TestFactoryRegistry *registry ) + { + } + +private: + ClockerListener *m_dumper; + ClockerModel *m_model; + ClockerXmlHook *m_xmlHook; +}; + + +CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( ClockerPlugIn ); + +CPPUNIT_TESTPLUGIN_MAIN(); \ No newline at end of file diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.dsp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.dsp new file mode 100644 index 0000000000..02a7624bbe --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.dsp @@ -0,0 +1,229 @@ +# Microsoft Developer Studio Project File - Name="ClockerPlugIn" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=ClockerPlugIn - Win32 Debug NtTimer +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "ClockerPlugIn.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "ClockerPlugIn.mak" CFG="ClockerPlugIn - Win32 Debug NtTimer" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "ClockerPlugIn - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ClockerPlugIn - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ClockerPlugIn - Win32 Debug NtTimer" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "ClockerPlugIn - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CLOCKERPLUGIN_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /dll /machine:I386 /out:"../../lib/ClockerPlugIn.dll" /libpath:"../../lib/" + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CLOCKERPLUGIN_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"../../lib/ClockerPlugInd.dll" /pdbtype:sept /libpath:"../../lib/" + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug NtTimer" +# PROP BASE Intermediate_Dir "Debug NtTimer" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugNtTimer" +# PROP Intermediate_Dir "DebugNtTimer" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /FD /GZ /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /D "CLOCKER_USE_WINNTTIMER" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"../../lib/ClockerPlugInd.dll" /pdbtype:sept /libpath:"../../lib/" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"../../lib/ClockerPlugInNtd.dll" /pdbtype:sept /libpath:"../../lib/" + +!ENDIF + +# Begin Target + +# Name "ClockerPlugIn - Win32 Release" +# Name "ClockerPlugIn - Win32 Debug" +# Name "ClockerPlugIn - Win32 Debug NtTimer" +# Begin Source File + +SOURCE=.\ClockerListener.cpp +# End Source File +# Begin Source File + +SOURCE=.\ClockerListener.h +# End Source File +# Begin Source File + +SOURCE=.\ClockerModel.cpp +# End Source File +# Begin Source File + +SOURCE=.\ClockerModel.h +# End Source File +# Begin Source File + +SOURCE=.\ClockerPlugIn.cpp +# End Source File +# Begin Source File + +SOURCE=.\ClockerXmlHook.cpp +# End Source File +# Begin Source File + +SOURCE=.\ClockerXmlHook.h +# End Source File +# Begin Source File + +SOURCE=.\Makefile.am +# End Source File +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# Begin Source File + +SOURCE=.\Timer.cpp + +!IF "$(CFG)" == "ClockerPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug" + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\Timer.h + +!IF "$(CFG)" == "ClockerPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug" + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\WinNtTimer.cpp + +!IF "$(CFG)" == "ClockerPlugIn - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer" + +# PROP BASE Exclude_From_Build 1 +# PROP Intermediate_Dir "DebugNtTimer" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\WinNtTimer.h + +!IF "$(CFG)" == "ClockerPlugIn - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer" + +# PROP BASE Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.cpp new file mode 100644 index 0000000000..20cc2f8728 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.cpp @@ -0,0 +1,94 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file ClockerXmlHook.cpp for class ClockerXmlHook +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/06/14 +// ////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include "ClockerModel.h" +#include "ClockerXmlHook.h" + + +ClockerXmlHook::ClockerXmlHook( ClockerModel *model ) + : m_model( model ) +{ +} + + +ClockerXmlHook::~ClockerXmlHook() +{ +} + + +void +ClockerXmlHook::endDocument( CPPUNIT_NS::XmlDocument *document ) +{ + CPPUNIT_NS::XmlElement *testTreeElement = new CPPUNIT_NS::XmlElement( "TimedTestTree" ); + document->rootElement().addElement( testTreeElement ); + + addTimedTest( testTreeElement, 0 ); +} + + +void +ClockerXmlHook::addTimedTest( CPPUNIT_NS::XmlElement *parentElement, + int testIndex ) +{ + std::string elementName = m_model->isSuite( testIndex ) ? "TimedSuite" : "TimedTest"; + CPPUNIT_NS::XmlElement *testElement = new CPPUNIT_NS::XmlElement( elementName ); + parentElement->addElement( testElement ); + testElement->addAttribute( "id", testIndex ); + + const CPPUNIT_NS::TestPath &path = m_model->testPathFor( testIndex ); + testElement->addElement( new CPPUNIT_NS::XmlElement( "Name", + path.getChildTest()->getName() ) ); + testElement->addElement( new CPPUNIT_NS::XmlElement( "TestPath", path.toString() ) ); + testElement->addElement( new CPPUNIT_NS::XmlElement( "Time", + ClockerModel::timeStringFor( + m_model->testTimeFor( testIndex ) ) ) ); + + if ( m_model->isSuite( testIndex ) ) + { + for ( int childIndex =0; childIndex < m_model->childCountFor( testIndex ); ++childIndex ) + addTimedTest( testElement, m_model->childAtFor( testIndex, childIndex ) ); + } +} + + +void +ClockerXmlHook::failTestAdded( CPPUNIT_NS::XmlDocument *document, + CPPUNIT_NS::XmlElement *testElement, + CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestFailure *failure ) +{ + successfulTestAdded( document, testElement, test ); +} + + +void +ClockerXmlHook::successfulTestAdded( CPPUNIT_NS::XmlDocument *document, + CPPUNIT_NS::XmlElement *testElement, + CPPUNIT_NS::Test *test ) +{ + int testIndex = m_model->indexOf( test ); + double time = (testIndex >= 0) ? m_model->testTimeFor( testIndex ) : 0.0; + const CPPUNIT_NS::TestPath &path = m_model->testPathFor( testIndex ); + testElement->addElement( new CPPUNIT_NS::XmlElement( "TestPath", path.toString() ) ); + testElement->addElement( new CPPUNIT_NS::XmlElement( "Time", + ClockerModel::timeStringFor( time ) ) ); +} + + +void +ClockerXmlHook::statisticsAdded( CPPUNIT_NS::XmlDocument *document, + CPPUNIT_NS::XmlElement *statisticsElement ) +{ + statisticsElement->addElement( + new CPPUNIT_NS::XmlElement( "TotalElapsedTime", + ClockerModel::timeStringFor( m_model->totalElapsedTime() ) ) ); + statisticsElement->addElement( + new CPPUNIT_NS::XmlElement( "AverageTestCaseTime", + ClockerModel::timeStringFor( m_model->averageTestCaseTime() ) ) ); +} diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.h new file mode 100644 index 0000000000..831e106c59 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.h @@ -0,0 +1,61 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file ClockerXmlHook.h for class ClockerXmlHook +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/06/14 +// ////////////////////////////////////////////////////////////////////////// +#ifndef CLOCKERXMLHOOK_H +#define CLOCKERXMLHOOK_H + +#include + +class ClockerModel; + + + +/// XML output hook to add test timing and test hierarchy timing. +class ClockerXmlHook : public CPPUNIT_NS::XmlOutputterHook +{ +public: + /*! Constructs a ClockerXmlHook object. + */ + ClockerXmlHook( ClockerModel *model ); + + /// Destructor. + virtual ~ClockerXmlHook(); + + void endDocument( CPPUNIT_NS::XmlDocument *document ); + + void failTestAdded( CPPUNIT_NS::XmlDocument *document, + CPPUNIT_NS::XmlElement *testElement, + CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestFailure *failure ); + + void successfulTestAdded( CPPUNIT_NS::XmlDocument *document, + CPPUNIT_NS::XmlElement *testElement, + CPPUNIT_NS::Test *test ); + + void statisticsAdded( CPPUNIT_NS::XmlDocument *document, + CPPUNIT_NS::XmlElement *statisticsElement ); + +private: + /// Prevents the use of the copy constructor. + ClockerXmlHook( const ClockerXmlHook &other ); + + /// Prevents the use of the copy operator. + void operator =( const ClockerXmlHook &other ); + + void addTimedTest( CPPUNIT_NS::XmlElement *parentElement, + int testIndex ); + +private: + ClockerModel *m_model; +}; + + + +// Inlines methods for ClockerXmlHook: +// ----------------------------------- + + + +#endif // CLOCKERXMLHOOK_H diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.am b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.am new file mode 100644 index 0000000000..65c18c91f7 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.am @@ -0,0 +1,6 @@ +EXTRA_DIST = WinNtTimer.h WinNtTimer.cpp ClockerPlugIn.dsp \ + Timer.h ClockerListener.h \ + Timer.cpp ClockerListener.cpp \ + ClockerPlugIn.cpp ClockerModel.h \ + ClockerModel.cpp ReadMe.txt \ + ClockerXmlHook.h ClockerXmlHook.cpp diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.in b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.in new file mode 100644 index 0000000000..a531015faa --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.in @@ -0,0 +1,305 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = WinNtTimer.h WinNtTimer.cpp ClockerPlugIn.dsp \ + Timer.h ClockerListener.h \ + Timer.cpp ClockerListener.cpp \ + ClockerPlugIn.cpp ClockerModel.h \ + ClockerModel.cpp ReadMe.txt \ + ClockerXmlHook.h ClockerXmlHook.cpp + +subdir = examples/ClockerPlugIn +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/ClockerPlugIn/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man 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-info-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: diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ReadMe.txt b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ReadMe.txt new file mode 100644 index 0000000000..57e4fc59f5 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ReadMe.txt @@ -0,0 +1,44 @@ +A test plug-ins that track tests and test suites running time. It demonstrates +TestListener, TestPlugIn, and XmlOutputterHook. + +Both suite and test case times are tracked. The plug-in include in the XML +output the TestPath of each test cases and its tracked time. + +The timed test hierarchy is also included in the XML output. This way it is +possible to see the time each suite takes to run. + + + +* Usage: + +Just add this plug-in to DllPlugInTester command line. It will add a test +listener to track test time, and add a hook to the XmlOutputter to include +test time to the XmlOutput. + +If the option "text" is passed to the plug-in, the timed test tree will be +printed to stdout. + +DllPlugInRunnerd.exe ClockerPlugInd.dll +or +DllPlugInRunnerd.exe ClockerPlugInd.dll=text + +* Example: + +DllPlugInTesterd_dll.exe -x timed.xml ClockerPlugInd.dll CppUnitTestPlugInd.dll + +Will track time of all tests contains in CppUnitTestPlugInd.dll and save the +result in timed.xml. + +* Notes: + +The id of the are different than those of the + and trees. You can use the to +cross-reference the datas. + +* Remarks: + +You may want to review ClockerModel before using this plug-in for serious +purpose, add timing based on the process cpu time. + +A version is provided for NT that use the main thread cpu time. This is an issue +if the test cases are multithreaded. diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.cpp new file mode 100644 index 0000000000..67198173c7 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.cpp @@ -0,0 +1,28 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file Timer.cpp for class Timer +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/04/19 +// ////////////////////////////////////////////////////////////////////////// + +#include "Timer.h" + + +void +Timer::start() +{ + m_beginTime = clock(); +} + + +void +Timer::finish() +{ + m_elapsedTime = double(clock() - m_beginTime) / CLOCKS_PER_SEC; +} + + +double +Timer::elapsedTime() const +{ + return m_elapsedTime; +} diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.h new file mode 100644 index 0000000000..e2b3449652 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.h @@ -0,0 +1,32 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file Timer.h for class Timer +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/04/19 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TIMER_H +#define TIMER_H + +#include + +/// A Timer. +class Timer +{ +public: + void start(); + void finish(); + + double elapsedTime() const; + +private: + clock_t m_beginTime; + double m_elapsedTime; +}; + + + +// Inlines methods for Timer: +// -------------------------- + + + +#endif // TIMER_H diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.cpp new file mode 100644 index 0000000000..87546a2d3d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.cpp @@ -0,0 +1,77 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file WinNtTimer.cpp for class WinNtTimer +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/04/19 +// ////////////////////////////////////////////////////////////////////////// + +#include "WinNtTimer.h" + + +/*! Returns time spent in the thread. + * @param rquadTime Receive the time spent in the thread (user+kernel time) + * in unit of 100 nano-seconds. + * In pratice, the effective resolution is 10ms !!! + * + * @return \c true if sucess, \c false otherwise. + */ +static bool +GetThreadSpentTime( LONGLONG &rquadTime ) +{ + FILETIME timeCreation; + FILETIME timeExit; + FILETIME timeKernel; + FILETIME timeUser; + if ( !::GetThreadTimes( ::GetCurrentThread(), + &timeCreation, + &timeExit, + &timeKernel, + &timeUser) ) + { + rquadTime = 0; + return false; + } + + LARGE_INTEGER lintKernel; + lintKernel.LowPart = timeKernel.dwLowDateTime; + lintKernel.HighPart = timeKernel.dwHighDateTime; + + LARGE_INTEGER lintUser; + lintUser.LowPart = timeUser.dwLowDateTime; + lintUser.HighPart = timeUser.dwHighDateTime; + + rquadTime = lintKernel.QuadPart + lintUser.QuadPart; + + return true; +} + + + +void +WinNtTimer::start() +{ + m_isValid = GetThreadSpentTime( m_beginTime ); + +} + + +void +WinNtTimer::finish() +{ + LONGLONG quadTimeEnd; + LONGLONG quadProcessedElapse; + m_isValid = m_isValid && GetThreadSpentTime( quadTimeEnd ); + if ( m_isValid ) + { + quadProcessedElapse = quadTimeEnd - m_beginTime; + m_elapsedTime = double(quadProcessedElapse) / 10000000; + } + else + m_elapsedTime = -1; +} + + +double +WinNtTimer::elapsedTime() const +{ + return m_elapsedTime; +} diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.h new file mode 100644 index 0000000000..fa871b9a30 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.h @@ -0,0 +1,36 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file WinNtTimer.h for class WinNtTimer +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/04/19 +// ////////////////////////////////////////////////////////////////////////// +#ifndef WINNTTIMER_H +#define WINNTTIMER_H + +#include +#include +#include + + +/// A Timer. +class WinNtTimer +{ +public: + void start(); + void finish(); + + double elapsedTime() const; + +private: + LONGLONG m_beginTime; + double m_elapsedTime; + bool m_isValid; +}; + + + +// Inlines methods for Timer: +// -------------------------- + + + +#endif // WINNTTIMER_H diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.cpp b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.cpp new file mode 100644 index 0000000000..dc4d0660f2 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.cpp @@ -0,0 +1,120 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file DumperListener.cpp for class DumperListener +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/04/19 +// ////////////////////////////////////////////////////////////////////////// +#include +#include +#include "DumperListener.h" + +DumperListener::DumperListener( bool flatten ) + : m_flatten( flatten ) + , m_suiteCount( 0 ) + , m_testCount( 0 ) + , m_suiteWithTestCount( 0 ) +{ +} + + +DumperListener::~DumperListener() +{ +} + + +void +DumperListener::startTest( CPPUNIT_NS::Test *test ) +{ + printPath( test, false ); + ++m_testCount; +} + + +void +DumperListener::endTest( CPPUNIT_NS::Test *test ) +{ + m_path.up(); + if ( !m_suiteHasTest.empty() ) + { + m_suiteHasTest.pop(); + m_suiteHasTest.push( true ); + } +} + + +void +DumperListener::startSuite( CPPUNIT_NS::Test *suite ) +{ + printPath( suite, true ); + ++m_suiteCount; + m_suiteHasTest.push( false ); +} + + +void +DumperListener::endSuite( CPPUNIT_NS::Test *suite ) +{ + m_path.up(); + if ( m_suiteHasTest.top() ) + ++m_suiteWithTestCount; + m_suiteHasTest.pop(); +} + + +void +DumperListener::endTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ) +{ + double average = 0; + if ( m_suiteWithTestCount > 0 ) + average = double(m_testCount) / m_suiteWithTestCount; + + std::cout << "Statistics: " << m_testCount << " test cases, " + << m_suiteCount << " suites, " + << average << " test cases / suite with test cases" + << std::endl; +} + + +void +DumperListener::printPath( CPPUNIT_NS::Test *test, + bool isSuite ) +{ + m_path.add( test ); + + if ( m_flatten ) + printFlattenedPath( isSuite ); + else + printIndentedPathChild(); +} + + +void +DumperListener::printFlattenedPath( bool isSuite ) +{ + std::string path = m_path.toString(); + if ( isSuite ) + path += "/"; + std::cout << path << std::endl; +} + + +void +DumperListener::printIndentedPathChild() +{ + std::string indent = makeIndentString( m_path.getTestCount() -1 ); + std::cout << indent << m_path.getChildTest()->getName() << std::endl; +} + + +std::string +DumperListener::makeIndentString( int indentLevel ) +{ + std::string indent; + for ( int parentIndent =0; parentIndent < indentLevel-1; ++parentIndent ) + indent += "| "; + + if ( indentLevel > 0 ) + indent += "+--"; + + return indent; +} diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.h b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.h new file mode 100644 index 0000000000..0e24f34649 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.h @@ -0,0 +1,67 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file DumperListener.h for class DumperListener +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/04/19 +// ////////////////////////////////////////////////////////////////////////// +#ifndef DUMPERLISTENER_H +#define DUMPERLISTENER_H + +#include +#include +#include + + +/// TestListener that prints a flatten or hierarchical view of the test tree. +class DumperListener : public CPPUNIT_NS::TestListener +{ +public: + DumperListener( bool flatten ); + + virtual ~DumperListener(); + + void startTest( CPPUNIT_NS::Test *test ); + + void endTest( CPPUNIT_NS::Test *test ); + + void startSuite( CPPUNIT_NS::Test *suite ); + + void endSuite( CPPUNIT_NS::Test *suite ); + + void endTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ); + +private: + /// Prevents the use of the copy constructor. + DumperListener( const DumperListener &other ); + + /// Prevents the use of the copy operator. + void operator =( const DumperListener &other ); + + void printPath( CPPUNIT_NS::Test *test, + bool isSuite ); + + void printFlattenedPath( bool isSuite ); + + void printIndentedPathChild(); + + std::string makeIndentString( int indentLevel ); + +private: + bool m_flatten; + CPPUNIT_NS::TestPath m_path; + + int m_suiteCount; + int m_testCount; + int m_suiteWithTestCount; + + CppUnitStack m_suiteHasTest; +}; + + + +// Inlines methods for DumperListener: +// ----------------------------------- + + + +#endif // DUMPERLISTENER_H diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.cpp b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.cpp new file mode 100644 index 0000000000..b15d9a362c --- /dev/null +++ b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.cpp @@ -0,0 +1,65 @@ +#include +#include +#include "DumperListener.h" + + + +class DumperPlugIn : public CppUnitTestPlugIn +{ +public: + DumperPlugIn() + : m_dumper( NULL ) + { + } + + ~DumperPlugIn() + { + delete m_dumper; + } + + + void initialize( CPPUNIT_NS::TestFactoryRegistry *registry, + const CPPUNIT_NS::PlugInParameters ¶meters ) + { + bool flatten = false; + if ( parameters.getCommandLine() == "flat" ) + flatten = true; + + m_dumper = new DumperListener( flatten ); + } + + + void addListener( CPPUNIT_NS::TestResult *eventManager ) + { + eventManager->addListener( m_dumper ); + } + + + void removeListener( CPPUNIT_NS::TestResult *eventManager ) + { + eventManager->removeListener( m_dumper ); + } + + + void addXmlOutputterHooks( CPPUNIT_NS::XmlOutputter *outputter ) + { + } + + + void removeXmlOutputterHooks() + { + } + + + void uninitialize( CPPUNIT_NS::TestFactoryRegistry *registry ) + { + } + +private: + DumperListener *m_dumper; +}; + + +CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( DumperPlugIn ); + +CPPUNIT_TESTPLUGIN_MAIN(); \ No newline at end of file diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.dsp b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.dsp new file mode 100644 index 0000000000..301ea30d72 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.dsp @@ -0,0 +1,107 @@ +# Microsoft Developer Studio Project File - Name="DumperPlugIn" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=DumperPlugIn - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "DumperPlugIn.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "DumperPlugIn.mak" CFG="DumperPlugIn - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "DumperPlugIn - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "DumperPlugIn - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "DumperPlugIn - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DUMPERPLUGIN_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DUMPERPLUGIN_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /dll /machine:I386 /out:"../../lib/DumperPlugIn.dll" /libpath:"../../lib/" + +!ELSEIF "$(CFG)" == "DumperPlugIn - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DUMPERPLUGIN_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DUMPERPLUGIN_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"../../lib/DumperPlugInd.dll" /pdbtype:sept /libpath:"../../lib/" + +!ENDIF + +# Begin Target + +# Name "DumperPlugIn - Win32 Release" +# Name "DumperPlugIn - Win32 Debug" +# Begin Source File + +SOURCE=.\DumperListener.cpp +# End Source File +# Begin Source File + +SOURCE=.\DumperListener.h +# End Source File +# Begin Source File + +SOURCE=.\DumperPlugIn.cpp +# End Source File +# Begin Source File + +SOURCE=.\Makefile.am +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.am b/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.am new file mode 100644 index 0000000000..bb1f6d3bdc --- /dev/null +++ b/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.am @@ -0,0 +1,2 @@ +EXTRA_DIST = DumperListener.h DumperListener.cpp DumperPlugIn.cpp \ + DumperPlugIn.dsp \ No newline at end of file diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.in b/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.in new file mode 100644 index 0000000000..fd4e772672 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.in @@ -0,0 +1,301 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = DumperListener.h DumperListener.cpp DumperPlugIn.cpp \ + DumperPlugIn.dsp + +subdir = examples/DumperPlugIn +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/DumperPlugIn/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man 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-info-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: diff --git a/lib/cppunit-1.10.0/examples/Makefile.am b/lib/cppunit-1.10.0/examples/Makefile.am new file mode 100644 index 0000000000..f1d522a421 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/Makefile.am @@ -0,0 +1,7 @@ +SUBDIRS = hierarchy cppunittest simple ClockerPlugIn DumperPlugIn money + +# No dist subdir for msvc6: is handled by toplevel dist-hook +# DIST_SUBDIRS = msvc6 + +EXTRA_DIST = examples.dsw examples.opt + diff --git a/lib/cppunit-1.10.0/examples/Makefile.in b/lib/cppunit-1.10.0/examples/Makefile.in new file mode 100644 index 0000000000..76d2b019f7 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/Makefile.in @@ -0,0 +1,453 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = hierarchy cppunittest simple ClockerPlugIn DumperPlugIn money + + +# No dist subdir for msvc6: is handled by toplevel dist-hook +# DIST_SUBDIRS = msvc6 +EXTRA_DIST = examples.dsw examples.opt +subdir = examples +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = Makefile.am Makefile.in +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# 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): + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + 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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +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: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ + pdf-recursive ps ps-am ps-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# 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: diff --git a/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.cpp b/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.cpp new file mode 100644 index 0000000000..c1cde160dd --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.cpp @@ -0,0 +1,36 @@ +#include "BaseTestCase.h" + + +BaseTestCase::BaseTestCase() +{ +} + + +BaseTestCase::~BaseTestCase() +{ +} + + +void +BaseTestCase::setUp() +{ +} + + +void +BaseTestCase::tearDown() +{ +} + + +void +BaseTestCase::testUsingCheckIt() +{ + checkIt(); +} + + +void +BaseTestCase::checkIt() +{ +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.h b/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.h new file mode 100644 index 0000000000..019ed66df8 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.h @@ -0,0 +1,32 @@ +#ifndef BASETESTCASE_H +#define BASETESTCASE_H + +#include + + +class BaseTestCase : public CPPUNIT_NS::TestCase +{ + CPPUNIT_TEST_SUITE( BaseTestCase ); + CPPUNIT_TEST( testUsingCheckIt ); + CPPUNIT_TEST_SUITE_END(); + +public: + BaseTestCase(); + virtual ~BaseTestCase(); + + virtual void setUp(); + virtual void tearDown(); + + void testUsingCheckIt(); + +protected: + virtual void checkIt(); + +private: + BaseTestCase( const BaseTestCase © ); + void operator =( const BaseTestCase © ); +}; + + + +#endif // BASETESTCASE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CoreSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/CoreSuite.h new file mode 100644 index 0000000000..eb352cb95e --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/CoreSuite.h @@ -0,0 +1,12 @@ +#ifndef CPPUNITTEST_CORESUITE_H +#define CPPUNITTEST_CORESUITE_H + +#include +#include + +inline std::string coreSuiteName() +{ + return "Core"; +} + +#endif // CPPUNITTEST_CORESUITE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.cpp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.cpp new file mode 100644 index 0000000000..aa7591ece4 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int +main( int argc, char* argv[] ) +{ + // Retreive test path from command line first argument. Default to "" which resolve + // to the top level suite. + std::string testPath = (argc > 1) ? std::string(argv[1]) : std::string(""); + + // Create the event manager and test controller + CPPUNIT_NS::TestResult controller; + + // Add a listener that colllects test result + CPPUNIT_NS::TestResultCollector result; + controller.addListener( &result ); + + // Add a listener that print dots as test run. +#ifdef WIN32 + CPPUNIT_NS::TextTestProgressListener progress; +#else + CPPUNIT_NS::BriefTestProgressListener progress; +#endif + controller.addListener( &progress ); + + // Add the top suite to the test runner + CPPUNIT_NS::TestRunner runner; + runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() ); + try + { + std::cout << "Running " << testPath; + runner.run( controller, testPath ); + + std::cerr << std::endl; + + // Print test in a compiler compatible format. + CPPUNIT_NS::CompilerOutputter outputter( &result, std::cerr ); + outputter.write(); + +// Uncomment this for XML output +// std::ofstream file( "tests.xml" ); +// CPPUNIT_NS::XmlOutputter xml( &result, file ); +// xml.setStyleSheet( "report.xsl" ); +// xml.write(); +// file.close(); + } + catch ( std::invalid_argument &e ) // Test path not resolved + { + std::cerr << std::endl + << "ERROR: " << e.what() + << std::endl; + return 0; + } + + return result.wasSuccessful() ? 0 : 1; +} + diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsp new file mode 100644 index 0000000000..005946ce0c --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsp @@ -0,0 +1,536 @@ +# Microsoft Developer Studio Project File - Name="CppUnitTestMain" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=CppUnitTestMain - Win32 Debug DLL +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "CppUnitTestMain.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "CppUnitTestMain.mak" CFG="CppUnitTestMain - Win32 Debug DLL" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "CppUnitTestMain - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "CppUnitTestMain - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "CppUnitTestMain - Win32 Release DLL" (based on "Win32 (x86) Console Application") +!MESSAGE "CppUnitTestMain - Win32 Debug DLL" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "CppUnitTestMain - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib/" +# Begin Special Build Tool +TargetPath=.\Release\CppUnitTestMain.exe +SOURCE="$(InputPath)" +PostBuild_Desc=Self test +PostBuild_Cmds=$(TargetPath) +# End Special Build Tool + +!ELSEIF "$(CFG)" == "CppUnitTestMain - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../lib/" +# Begin Special Build Tool +TargetPath=.\Debug\CppUnitTestMain.exe +SOURCE="$(InputPath)" +PostBuild_Desc=Self test +PostBuild_Cmds=$(TargetPath) +# End Special Build Tool + +!ELSEIF "$(CFG)" == "CppUnitTestMain - Win32 Release DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "CppUnitTestMain___Win32_Release_DLL" +# PROP BASE Intermediate_Dir "CppUnitTestMain___Win32_Release_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDLL" +# PROP Intermediate_Dir "ReleaseDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /FD /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MD /W3 /GR /GX /Ox /Ot /Oa /Ow /Og /Oi /Op /Oy /Ob0 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../lib/cppunit.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib/" +# Begin Special Build Tool +TargetPath=.\ReleaseDLL\CppUnitTestMain.exe +SOURCE="$(InputPath)" +PostBuild_Desc=Self test +PostBuild_Cmds=$(TargetPath) +# End Special Build Tool + +!ELSEIF "$(CFG)" == "CppUnitTestMain - Win32 Debug DLL" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "CppUnitTestMain___Win32_Debug_DLL" +# PROP BASE Intermediate_Dir "CppUnitTestMain___Win32_Debug_DLL" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDLL" +# PROP Intermediate_Dir "DebugDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../lib/cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../lib/" +# Begin Special Build Tool +TargetPath=.\DebugDLL\CppUnitTestMain.exe +SOURCE="$(InputPath)" +PostBuild_Desc=Self test +PostBuild_Cmds=$(TargetPath) +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "CppUnitTestMain - Win32 Release" +# Name "CppUnitTestMain - Win32 Debug" +# Name "CppUnitTestMain - Win32 Release DLL" +# Name "CppUnitTestMain - Win32 Debug DLL" +# Begin Group "Tests" + +# PROP Default_Filter "" +# Begin Group "Core" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\ExceptionTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\ExceptionTest.h +# End Source File +# Begin Source File + +SOURCE=.\MessageTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\MessageTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestAssertTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestAssertTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestCallerTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestCallerTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestCaseTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestCaseTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestFailureTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestFailureTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestPathTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestPathTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestResultTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestResultTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestSuiteTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestSuiteTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestTest.h +# End Source File +# End Group +# Begin Group "UnitTestTools" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\XmlUniformiser.cpp +# End Source File +# Begin Source File + +SOURCE=.\XmlUniformiser.h +# End Source File +# Begin Source File + +SOURCE=.\XmlUniformiserTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\XmlUniformiserTest.h +# End Source File +# End Group +# Begin Group "Helper" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\HelperMacrosTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\HelperMacrosTest.h +# End Source File +# End Group +# Begin Group "Extension" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\ExceptionTestCaseDecoratorTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\ExceptionTestCaseDecoratorTest.h +# End Source File +# Begin Source File + +SOURCE=.\OrthodoxTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\OrthodoxTest.h +# End Source File +# Begin Source File + +SOURCE=.\RepeatedTestTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\RepeatedTestTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestDecoratorTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestDecoratorTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestSetUpTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestSetUpTest.h +# End Source File +# End Group +# Begin Group "Output" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\TestResultCollectorTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestResultCollectorTest.h +# End Source File +# Begin Source File + +SOURCE=.\XmlOutputterTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\XmlOutputterTest.h +# End Source File +# End Group +# Begin Group "Tools" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\StringToolsTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\StringToolsTest.h +# End Source File +# Begin Source File + +SOURCE=.\XmlElementTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\XmlElementTest.h +# End Source File +# End Group +# End Group +# Begin Group "TestSupport" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\BaseTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\BaseTestCase.h +# End Source File +# Begin Source File + +SOURCE=.\FailureException.h +# End Source File +# Begin Source File + +SOURCE=.\MockFunctor.h +# End Source File +# Begin Source File + +SOURCE=.\MockProtector.h +# End Source File +# Begin Source File + +SOURCE=.\MockTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\MockTestCase.h +# End Source File +# Begin Source File + +SOURCE=.\MockTestListener.cpp +# End Source File +# Begin Source File + +SOURCE=.\MockTestListener.h +# End Source File +# Begin Source File + +SOURCE=.\SubclassedTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\SubclassedTestCase.h +# End Source File +# Begin Source File + +SOURCE=.\SynchronizedTestResult.h +# End Source File +# Begin Source File + +SOURCE=.\TrackedTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\TrackedTestCase.h +# End Source File +# End Group +# Begin Group "Suites" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\CoreSuite.h +# End Source File +# Begin Source File + +SOURCE=.\CppUnitTestSuite.cpp +# End Source File +# Begin Source File + +SOURCE=.\ExtensionSuite.h +# End Source File +# Begin Source File + +SOURCE=.\HelperSuite.h +# End Source File +# Begin Source File + +SOURCE=.\OutputSuite.h +# End Source File +# Begin Source File + +SOURCE=.\ToolsSuite.h +# End Source File +# Begin Source File + +SOURCE=.\UnitTestToolSuite.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\lib\cppunit_dll.dll + +!IF "$(CFG)" == "CppUnitTestMain - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "CppUnitTestMain - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "CppUnitTestMain - Win32 Release DLL" + +# Begin Custom Build - Updating DLL: $(InputPath) +IntDir=.\ReleaseDLL +InputPath=..\..\lib\cppunit_dll.dll +InputName=cppunit_dll + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "CppUnitTestMain - Win32 Debug DLL" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\lib\cppunitd_dll.dll + +!IF "$(CFG)" == "CppUnitTestMain - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "CppUnitTestMain - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "CppUnitTestMain - Win32 Release DLL" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "CppUnitTestMain - Win32 Debug DLL" + +# Begin Custom Build - Updating DLL: $(InputPath) +IntDir=.\DebugDLL +InputPath=..\..\lib\cppunitd_dll.dll +InputName=cppunitd_dll + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\CppUnitTestMain.cpp +# End Source File +# Begin Source File + +SOURCE=.\Makefile.am +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsw b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsw new file mode 100644 index 0000000000..a991330e89 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsw @@ -0,0 +1,59 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "CppUnitTestMain"=.\CppUnitTestMain.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency +}}} + +############################################################################### + +Project: "cppunit"=..\..\src\cppunit\cppunit.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "cppunit_dll"=..\..\SRC\CPPUNIT\cppunit_dll.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.cpp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.cpp new file mode 100644 index 0000000000..1517b1114b --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.cpp @@ -0,0 +1,5 @@ +#include + + +// Implements all the plug-in stuffs, WinMain... +CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.dsp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.dsp new file mode 100644 index 0000000000..0dd3f575c1 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.dsp @@ -0,0 +1,395 @@ +# Microsoft Developer Studio Project File - Name="CppUnitTestPlugIn" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=CppUnitTestPlugIn - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "CppUnitTestPlugIn.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "CppUnitTestPlugIn.mak" CFG="CppUnitTestPlugIn - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "CppUnitTestPlugIn - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "CppUnitTestPlugIn - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "CppUnitTestPlugIn - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleasePlugIn" +# PROP Intermediate_Dir "ReleasePlugIn" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNITTESTPLUGIN_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "NDEBUG" /D "CPPUNITTESTPLUGIN_EXPORTS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /dll /machine:I386 /libpath:"../../lib/" + +!ELSEIF "$(CFG)" == "CppUnitTestPlugIn - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugPlugIn" +# PROP Intermediate_Dir "DebugPlugIn" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNITTESTPLUGIN_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "CPPUNIT_DLL" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"DebugPlugIn/CppUnitTestPlugInd.dll" /pdbtype:sept /libpath:"../../lib/" + +!ENDIF + +# Begin Target + +# Name "CppUnitTestPlugIn - Win32 Release" +# Name "CppUnitTestPlugIn - Win32 Debug" +# Begin Group "Suites" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\CoreSuite.h +# End Source File +# Begin Source File + +SOURCE=.\CppUnitTestSuite.cpp +# End Source File +# Begin Source File + +SOURCE=.\CppUnitTestSuite.h +# End Source File +# Begin Source File + +SOURCE=.\ExtensionSuite.h +# End Source File +# Begin Source File + +SOURCE=.\HelperSuite.h +# End Source File +# Begin Source File + +SOURCE=.\OutputSuite.h +# End Source File +# Begin Source File + +SOURCE=.\ToolsSuite.h +# End Source File +# Begin Source File + +SOURCE=.\UnitTestToolSuite.h +# End Source File +# End Group +# Begin Group "TestSupport" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\BaseTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\BaseTestCase.h +# End Source File +# Begin Source File + +SOURCE=.\FailureException.h +# End Source File +# Begin Source File + +SOURCE=.\MockFunctor.h +# End Source File +# Begin Source File + +SOURCE=.\MockProtector.h +# End Source File +# Begin Source File + +SOURCE=.\MockTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\MockTestCase.h +# End Source File +# Begin Source File + +SOURCE=.\MockTestListener.cpp +# End Source File +# Begin Source File + +SOURCE=.\MockTestListener.h +# End Source File +# Begin Source File + +SOURCE=.\SubclassedTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\SubclassedTestCase.h +# End Source File +# Begin Source File + +SOURCE=.\SynchronizedTestResult.h +# End Source File +# Begin Source File + +SOURCE=.\TrackedTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\TrackedTestCase.h +# End Source File +# End Group +# Begin Group "Tests" + +# PROP Default_Filter "" +# Begin Group "Core" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\ExceptionTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\ExceptionTest.h +# End Source File +# Begin Source File + +SOURCE=.\MessageTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\MessageTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestAssertTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestAssertTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestCallerTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestCallerTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestCaseTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestCaseTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestFailureTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestFailureTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestPathTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestPathTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestResultTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestResultTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestSuiteTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestSuiteTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestTest.h +# End Source File +# End Group +# Begin Group "UnitTestTools" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\XmlUniformiser.cpp +# End Source File +# Begin Source File + +SOURCE=.\XmlUniformiser.h +# End Source File +# Begin Source File + +SOURCE=.\XmlUniformiserTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\XmlUniformiserTest.h +# End Source File +# End Group +# Begin Group "Helper" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\HelperMacrosTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\HelperMacrosTest.h +# End Source File +# End Group +# Begin Group "Extension" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\ExceptionTestCaseDecoratorTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\ExceptionTestCaseDecoratorTest.h +# End Source File +# Begin Source File + +SOURCE=.\OrthodoxTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\OrthodoxTest.h +# End Source File +# Begin Source File + +SOURCE=.\RepeatedTestTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\RepeatedTestTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestDecoratorTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestDecoratorTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestSetUpTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestSetUpTest.h +# End Source File +# End Group +# Begin Group "Output" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\TestResultCollectorTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestResultCollectorTest.h +# End Source File +# Begin Source File + +SOURCE=.\XmlOutputterTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\XmlOutputterTest.h +# End Source File +# End Group +# Begin Group "Tools" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\StringToolsTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\StringToolsTest.h +# End Source File +# Begin Source File + +SOURCE=.\XmlElementTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\XmlElementTest.h +# End Source File +# End Group +# End Group +# Begin Source File + +SOURCE=.\CppUnitTestPlugIn.cpp +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestSuite.cpp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestSuite.cpp new file mode 100644 index 0000000000..2b5ec2ddfc --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestSuite.cpp @@ -0,0 +1,14 @@ +#include +#include "CoreSuite.h" +#include "HelperSuite.h" +#include "ExtensionSuite.h" +#include "OutputSuite.h" +#include "ToolsSuite.h" +#include "UnitTestToolSuite.h" + +CPPUNIT_REGISTRY_ADD_TO_DEFAULT( coreSuiteName() ); +CPPUNIT_REGISTRY_ADD_TO_DEFAULT( extensionSuiteName() ); +CPPUNIT_REGISTRY_ADD_TO_DEFAULT( helperSuiteName() ); +CPPUNIT_REGISTRY_ADD_TO_DEFAULT( outputSuiteName() ); +CPPUNIT_REGISTRY_ADD_TO_DEFAULT( toolsSuiteName() ); +CPPUNIT_REGISTRY_ADD_TO_DEFAULT( unitTestToolSuiteName() ); diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.cpp new file mode 100644 index 0000000000..31dce6477a --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.cpp @@ -0,0 +1,95 @@ +#include "CoreSuite.h" +#include "ExceptionTest.h" +#include +#include + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ExceptionTest, + coreSuiteName() ); + + +ExceptionTest::ExceptionTest() +{ +} + + +ExceptionTest::~ExceptionTest() +{ +} + + +void +ExceptionTest::setUp() +{ +} + + +void +ExceptionTest::tearDown() +{ +} + + +void +ExceptionTest::testConstructor() +{ + const CPPUNIT_NS::Message message( "a message" ); + const CPPUNIT_NS::SourceLine sourceLine( "dir/afile.cpp", 17 ); + + CPPUNIT_NS::Exception e( message, sourceLine ); + + CPPUNIT_ASSERT_EQUAL( message.shortDescription(), e.message().shortDescription() ); + CPPUNIT_ASSERT( sourceLine == e.sourceLine() ); +} + + +void +ExceptionTest::testDefaultConstructor() +{ + CPPUNIT_NS::Exception e; + + CPPUNIT_ASSERT( CPPUNIT_NS::Message() == e.message() ); + CPPUNIT_ASSERT( !e.sourceLine().isValid() ); +} + + +void +ExceptionTest::testCopyConstructor() +{ + CPPUNIT_NS::SourceLine sourceLine( "fileName.cpp", 123 ); + CPPUNIT_NS::Exception e( CPPUNIT_NS::Message("message"), sourceLine ); + CPPUNIT_NS::Exception other( e ); + checkIsSame( e, other ); +} + + +void +ExceptionTest::testAssignment() +{ + CPPUNIT_NS::SourceLine sourceLine( "fileName.cpp", 123 ); + CPPUNIT_NS::Exception e( CPPUNIT_NS::Message("message"), sourceLine ); + CPPUNIT_NS::Exception other; + other = e; + checkIsSame( e, other ); +} + + +void +ExceptionTest::testClone() +{ + CPPUNIT_NS::SourceLine sourceLine( "fileName.cpp", 123 ); + CPPUNIT_NS::Exception e( CPPUNIT_NS::Message("message"), sourceLine ); + std::auto_ptr other( e.clone() ); + checkIsSame( e, *other.get() ); +} + + +void +ExceptionTest::checkIsSame( CPPUNIT_NS::Exception &e, + CPPUNIT_NS::Exception &other ) +{ + std::string eWhat( e.what() ); + std::string otherWhat( other.what() ); + CPPUNIT_ASSERT_EQUAL( eWhat, otherWhat ); + CPPUNIT_ASSERT( e.sourceLine() == other.sourceLine() ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.h b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.h new file mode 100644 index 0000000000..a3b4c91125 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.h @@ -0,0 +1,41 @@ +#ifndef EXCEPTIONTEST_H +#define EXCEPTIONTEST_H + +#include + + +class ExceptionTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( ExceptionTest ); + CPPUNIT_TEST( testConstructor ); + CPPUNIT_TEST( testDefaultConstructor ); + CPPUNIT_TEST( testCopyConstructor ); + CPPUNIT_TEST( testAssignment ); + CPPUNIT_TEST( testClone ); + CPPUNIT_TEST_SUITE_END(); + +public: + ExceptionTest(); + virtual ~ExceptionTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testConstructor(); + void testDefaultConstructor(); + void testCopyConstructor(); + void testAssignment(); + void testClone(); + +private: + ExceptionTest( const ExceptionTest © ); + void operator =( const ExceptionTest © ); + void checkIsSame( CPPUNIT_NS::Exception &e, + CPPUNIT_NS::Exception &other ); + +private: +}; + + + +#endif // EXCEPTIONTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.cpp new file mode 100644 index 0000000000..177303809a --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.cpp @@ -0,0 +1,71 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file ExceptionTestCaseDecoratorTest.cpp for class ExceptionTestCaseDecoratorTest +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/08/03 +// ////////////////////////////////////////////////////////////////////////// + +#include "ExtensionSuite.h" +#include "ExceptionTestCaseDecoratorTest.h" + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ExceptionTestCaseDecoratorTest, + extensionSuiteName() ); + + +ExceptionTestCaseDecoratorTest::ExceptionTestCaseDecoratorTest() +{ +} + + +ExceptionTestCaseDecoratorTest::~ExceptionTestCaseDecoratorTest() +{ +} + + +void +ExceptionTestCaseDecoratorTest::setUp() +{ + m_testListener = new MockTestListener( "mock-testlistener" ); + m_result = new CPPUNIT_NS::TestResult(); + m_result->addListener( m_testListener ); + + m_test = new MockTestCase( "mock-decorated-testcase" ); + m_decorator = new FailureExceptionTestCase( m_test ); +} + + +void +ExceptionTestCaseDecoratorTest::tearDown() +{ + delete m_decorator; + delete m_result; + delete m_testListener; +} + + +void +ExceptionTestCaseDecoratorTest::testNoExceptionThrownFailed() +{ + m_testListener->setExpectedAddFailureCall(1); + m_test->setExpectedSetUpCall(); + m_test->setExpectedRunTestCall(); + m_test->setExpectedTearDownCall(); + + m_decorator->run( m_result ); + + m_testListener->verify(); +} + + +void +ExceptionTestCaseDecoratorTest::testExceptionThrownPass() +{ + m_testListener->setExpectNoFailure(); + m_test->setExpectedSetUpCall(); + m_test->setExpectedRunTestCall(); + m_test->setExpectedTearDownCall(); + m_test->makeRunTestThrow(); + + m_decorator->run( m_result ); + + m_testListener->verify(); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.h b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.h new file mode 100644 index 0000000000..da9d168f95 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.h @@ -0,0 +1,61 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file ExceptionTestCaseDecoratorTest.h for class ExceptionTestCaseDecoratorTest +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/08/03 +// ////////////////////////////////////////////////////////////////////////// +#ifndef EXCEPTIONTESTCASEDECORATORTEST_H +#define EXCEPTIONTESTCASEDECORATORTEST_H + +#include +#include +#include "FailureException.h" +#include "MockTestCase.h" +#include "MockTestListener.h" + + +/// Unit tests for ExceptionTestCaseDecoratorTest +class ExceptionTestCaseDecoratorTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( ExceptionTestCaseDecoratorTest ); + CPPUNIT_TEST( testNoExceptionThrownFailed ); + CPPUNIT_TEST( testExceptionThrownPass ); + CPPUNIT_TEST_SUITE_END(); + +public: + /*! Constructs a ExceptionTestCaseDecoratorTest object. + */ + ExceptionTestCaseDecoratorTest(); + + /// Destructor. + virtual ~ExceptionTestCaseDecoratorTest(); + + void setUp(); + void tearDown(); + + void testNoExceptionThrownFailed(); + void testExceptionThrownPass(); + +private: + /// Prevents the use of the copy constructor. + ExceptionTestCaseDecoratorTest( const ExceptionTestCaseDecoratorTest &other ); + + /// Prevents the use of the copy operator. + void operator =( const ExceptionTestCaseDecoratorTest &other ); + +private: + typedef CPPUNIT_NS::ExceptionTestCaseDecorator FailureExceptionTestCase; + + CPPUNIT_NS::TestResult *m_result; + MockTestListener *m_testListener; + MockTestCase *m_test; + FailureExceptionTestCase *m_decorator; +}; + + + +// Inlines methods for ExceptionTestCaseDecoratorTest: +// --------------------------------------------------- + + + +#endif // EXCEPTIONTESTCASEDECORATORTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExtensionSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/ExtensionSuite.h new file mode 100644 index 0000000000..d92e430bc6 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/ExtensionSuite.h @@ -0,0 +1,12 @@ +#ifndef CPPUNITTEST_EXTENSIONSSUITE_H +#define CPPUNITTEST_EXTENSIONSSUITE_H + +#include +#include + +inline std::string extensionSuiteName() +{ + return "Extensions"; +} + +#endif // CPPUNITTEST_EXTENSIONSSUITE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/FailureException.h b/lib/cppunit-1.10.0/examples/cppunittest/FailureException.h new file mode 100644 index 0000000000..0a4be47101 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/FailureException.h @@ -0,0 +1,10 @@ +#ifndef FAILUREEXCEPTION_H +#define FAILUREEXCEPTION_H + + +class FailureException +{ +}; + + +#endif // FAILUREEXCEPTION_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.cpp new file mode 100644 index 0000000000..1bf73b0a10 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.cpp @@ -0,0 +1,226 @@ +#include "FailureException.h" +#include "HelperMacrosTest.h" +#include "HelperSuite.h" +#include "MockTestCase.h" +#include "SubclassedTestCase.h" +#include +#include + +/* Note: + - no unit test for CPPUNIT_TEST_SUITE_REGISTRATION... + */ + +class FailTestFixture : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( FailTestFixture ); + CPPUNIT_TEST_FAIL( testFail ); + CPPUNIT_TEST_SUITE_END(); +public: + void testFail() + { + CPPUNIT_ASSERT_MESSAGE( "Failure", false ); + } +}; + + +class FailToFailTestFixture : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( FailToFailTestFixture ); + CPPUNIT_TEST_FAIL( testFailToFail ); + CPPUNIT_TEST_SUITE_END(); +public: + void testFailToFail() + { + } +}; + + +class ExceptionTestFixture : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( ExceptionTestFixture ); + CPPUNIT_TEST_EXCEPTION( testException, FailureException ); + CPPUNIT_TEST_SUITE_END(); +public: + void testException() + { + throw FailureException(); + } +}; + + +class ExceptionNotCaughtTestFixture : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( ExceptionNotCaughtTestFixture ); + CPPUNIT_TEST_EXCEPTION( testExceptionNotCaught, FailureException ); + CPPUNIT_TEST_SUITE_END(); +public: + void testExceptionNotCaught() + { + } +}; + + +class CustomsTestTestFixture : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( CustomsTestTestFixture ); + CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( addCustomTests ); + CPPUNIT_TEST_SUITE_END(); +public: + static void addCustomTests( TestSuiteBuilderContextType &context ) + { + MockTestCase *test1 = new MockTestCase( context.getTestNameFor( "myCustomTest1" ) ); + test1->makeRunTestThrow(); + MockTestCase *test2 = new MockTestCase( context.getTestNameFor( "myCustomTest2" ) ); + context.addTest( test1 ); + context.addTest( test2 ); + } +}; + + +#undef TEST_ADD_N_MOCK +#define TEST_ADD_N_MOCK( totalCount ) \ + { \ + for ( int count = (totalCount); count > 0; --count ) \ + CPPUNIT_TEST_SUITE_ADD_TEST( \ + new MockTestCase( context.getTestNameFor( "dummyName" ) ) ); \ + } + + + +class AddTestTestFixture : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( AddTestTestFixture ); + TEST_ADD_N_MOCK( 7 ); + CPPUNIT_TEST_SUITE_END(); +public: +}; + + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( HelperMacrosTest, + helperSuiteName() ); + + +HelperMacrosTest::HelperMacrosTest() +{ +} + + +HelperMacrosTest::~HelperMacrosTest() +{ +} + + +void +HelperMacrosTest::setUp() +{ + m_testListener = new MockTestListener( "mock-testlistener" ); + m_result = new CPPUNIT_NS::TestResult(); + m_result->addListener( m_testListener ); +} + + +void +HelperMacrosTest::tearDown() +{ + delete m_result; + delete m_testListener; +} + + +void +HelperMacrosTest::testNoSubclassing() +{ + std::auto_ptr suite( BaseTestCase::suite() ); + CPPUNIT_ASSERT_EQUAL( 1, suite->countTestCases() ); + m_testListener->setExpectedStartTestCall( 1 ); + m_testListener->setExpectNoFailure(); + + suite->run( m_result ); + m_testListener->verify(); +} + + +void +HelperMacrosTest::testSubclassing() +{ + std::auto_ptr suite( SubclassedTestCase::suite() ); + CPPUNIT_ASSERT_EQUAL( 2, suite->countTestCases() ); + m_testListener->setExpectedStartTestCall( 2 ); + m_testListener->setExpectedAddFailureCall( 1 ); + + suite->run( m_result ); + m_testListener->verify(); +} + + +void +HelperMacrosTest::testFail() +{ + std::auto_ptr suite( FailTestFixture::suite() ); + m_testListener->setExpectedStartTestCall( 1 ); + m_testListener->setExpectNoFailure(); + + suite->run( m_result ); + m_testListener->verify(); +} + + +void +HelperMacrosTest::testFailToFail() +{ + std::auto_ptr suite( FailToFailTestFixture::suite() ); + m_testListener->setExpectedStartTestCall( 1 ); + m_testListener->setExpectedAddFailureCall( 1 ); + + suite->run( m_result ); + m_testListener->verify(); +} + + +void +HelperMacrosTest::testException() +{ + std::auto_ptr suite( ExceptionTestFixture::suite() ); + m_testListener->setExpectedStartTestCall( 1 ); + m_testListener->setExpectNoFailure(); + + suite->run( m_result ); + m_testListener->verify(); +} + + +void +HelperMacrosTest::testExceptionNotCaught() +{ + std::auto_ptr suite( ExceptionNotCaughtTestFixture::suite() ); + m_testListener->setExpectedStartTestCall( 1 ); + m_testListener->setExpectedAddFailureCall( 1 ); + + suite->run( m_result ); + m_testListener->verify(); +} + + +void +HelperMacrosTest::testCustomTests() +{ + std::auto_ptr suite( CustomsTestTestFixture::suite() ); + m_testListener->setExpectedStartTestCall( 2 ); + m_testListener->setExpectedAddFailureCall( 1 ); + + suite->run( m_result ); + m_testListener->verify(); +} + + +void +HelperMacrosTest::testAddTest() +{ + std::auto_ptr suite( AddTestTestFixture::suite() ); + m_testListener->setExpectedStartTestCall( 7 ); + m_testListener->setExpectedAddFailureCall( 0 ); + + suite->run( m_result ); + m_testListener->verify(); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.h b/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.h new file mode 100644 index 0000000000..7a097975bf --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.h @@ -0,0 +1,53 @@ +#ifndef HELPERMACROSTEST_H +#define HELPERMACROSTEST_H + +#include +#include "MockTestListener.h" + + +class HelperMacrosTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( HelperMacrosTest ); + CPPUNIT_TEST( testNoSubclassing ); + CPPUNIT_TEST( testSubclassing ); + CPPUNIT_TEST( testFail ); + CPPUNIT_TEST( testFailToFail ); + CPPUNIT_TEST( testException ); + CPPUNIT_TEST( testExceptionNotCaught ); + CPPUNIT_TEST( testCustomTests ); + CPPUNIT_TEST( testAddTest ); + CPPUNIT_TEST_SUITE_END(); + +public: + HelperMacrosTest(); + virtual ~HelperMacrosTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testNoSubclassing(); + + void testSubclassing(); + + void testFail(); + void testFailToFail(); + + void testException(); + void testExceptionNotCaught(); + + void testCustomTest(); + void testCustomTests(); + void testAddTest(); + +private: + HelperMacrosTest( const HelperMacrosTest © ); + void operator =( const HelperMacrosTest © ); + +private: + CPPUNIT_NS::TestResult *m_result; + MockTestListener *m_testListener; +}; + + + +#endif // HELPERMACROSTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/HelperSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/HelperSuite.h new file mode 100644 index 0000000000..88dd3dc272 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/HelperSuite.h @@ -0,0 +1,13 @@ +#ifndef CPPUNITTEST_HELPERSUITE_H +#define CPPUNITTEST_HELPERSUITE_H + +#include +#include + +inline std::string helperSuiteName() +{ + return "Helpers"; +} + + +#endif // CPPUNITTEST_HELPERSUITE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/Makefile.am b/lib/cppunit-1.10.0/examples/cppunittest/Makefile.am new file mode 100644 index 0000000000..0b225414ac --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/Makefile.am @@ -0,0 +1,81 @@ +EXTRA_DIST = CppUnitTestMain.dsw CppUnitTestMain.dsp CppUnitTestPlugIn.dsp CppUnitTestPlugIn.cpp + +TESTS = cppunittestmain +check_PROGRAMS = $(TESTS) + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +cppunittestmain_SOURCES = \ + BaseTestCase.cpp \ + BaseTestCase.h \ + CoreSuite.h \ + CppUnitTestMain.cpp \ + CppUnitTestSuite.cpp \ + ExceptionTest.cpp \ + ExceptionTest.h \ + ExceptionTestCaseDecoratorTest.h \ + ExceptionTestCaseDecoratorTest.cpp \ + ExtensionSuite.h \ + FailureException.h \ + HelperMacrosTest.cpp \ + HelperMacrosTest.h \ + HelperSuite.h \ + MessageTest.h \ + MessageTest.cpp \ + MockFunctor.h \ + MockProtector.h \ + MockTestCase.h \ + MockTestCase.cpp \ + MockTestListener.cpp \ + MockTestListener.h \ + OrthodoxTest.cpp \ + OrthodoxTest.h \ + OutputSuite.h \ + RepeatedTestTest.cpp \ + RepeatedTestTest.h \ + StringToolsTest.h \ + StringToolsTest.cpp \ + SubclassedTestCase.cpp \ + SubclassedTestCase.h \ + SynchronizedTestResult.h \ + TestAssertTest.cpp \ + TestAssertTest.h \ + TestCallerTest.cpp \ + TestCallerTest.h \ + TestCaseTest.cpp \ + TestCaseTest.h \ + TestDecoratorTest.cpp \ + TestDecoratorTest.h \ + TestFailureTest.cpp \ + TestFailureTest.h \ + TestPathTest.h \ + TestPathTest.cpp \ + TestResultCollectorTest.cpp \ + TestResultCollectorTest.h \ + TestResultTest.cpp \ + TestResultTest.h \ + TestSetUpTest.cpp \ + TestSetUpTest.h \ + TestSuiteTest.cpp \ + TestSuiteTest.h \ + TestTest.cpp \ + TestTest.h \ + ToolsSuite.h \ + TrackedTestCase.cpp \ + TrackedTestCase.h \ + UnitTestToolSuite.h \ + XmlElementTest.h \ + XmlElementTest.cpp \ + XmlOutputterTest.h \ + XmlOutputterTest.cpp \ + XmlUniformiser.h \ + XmlUniformiser.cpp \ + XmlUniformiserTest.h \ + XmlUniformiserTest.cpp + +cppunittestmain_LDADD= \ + $(top_builddir)/src/cppunit/libcppunit.la + +cppunittestmain_LDFLAGS = $(LIBADD_DL) + + diff --git a/lib/cppunit-1.10.0/examples/cppunittest/Makefile.in b/lib/cppunit-1.10.0/examples/cppunittest/Makefile.in new file mode 100644 index 0000000000..1c4dcb751d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/Makefile.in @@ -0,0 +1,658 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = CppUnitTestMain.dsw CppUnitTestMain.dsp CppUnitTestPlugIn.dsp CppUnitTestPlugIn.cpp + +TESTS = cppunittestmain +check_PROGRAMS = $(TESTS) + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +cppunittestmain_SOURCES = \ + BaseTestCase.cpp \ + BaseTestCase.h \ + CoreSuite.h \ + CppUnitTestMain.cpp \ + CppUnitTestSuite.cpp \ + ExceptionTest.cpp \ + ExceptionTest.h \ + ExceptionTestCaseDecoratorTest.h \ + ExceptionTestCaseDecoratorTest.cpp \ + ExtensionSuite.h \ + FailureException.h \ + HelperMacrosTest.cpp \ + HelperMacrosTest.h \ + HelperSuite.h \ + MessageTest.h \ + MessageTest.cpp \ + MockFunctor.h \ + MockProtector.h \ + MockTestCase.h \ + MockTestCase.cpp \ + MockTestListener.cpp \ + MockTestListener.h \ + OrthodoxTest.cpp \ + OrthodoxTest.h \ + OutputSuite.h \ + RepeatedTestTest.cpp \ + RepeatedTestTest.h \ + StringToolsTest.h \ + StringToolsTest.cpp \ + SubclassedTestCase.cpp \ + SubclassedTestCase.h \ + SynchronizedTestResult.h \ + TestAssertTest.cpp \ + TestAssertTest.h \ + TestCallerTest.cpp \ + TestCallerTest.h \ + TestCaseTest.cpp \ + TestCaseTest.h \ + TestDecoratorTest.cpp \ + TestDecoratorTest.h \ + TestFailureTest.cpp \ + TestFailureTest.h \ + TestPathTest.h \ + TestPathTest.cpp \ + TestResultCollectorTest.cpp \ + TestResultCollectorTest.h \ + TestResultTest.cpp \ + TestResultTest.h \ + TestSetUpTest.cpp \ + TestSetUpTest.h \ + TestSuiteTest.cpp \ + TestSuiteTest.h \ + TestTest.cpp \ + TestTest.h \ + ToolsSuite.h \ + TrackedTestCase.cpp \ + TrackedTestCase.h \ + UnitTestToolSuite.h \ + XmlElementTest.h \ + XmlElementTest.cpp \ + XmlOutputterTest.h \ + XmlOutputterTest.cpp \ + XmlUniformiser.h \ + XmlUniformiser.cpp \ + XmlUniformiserTest.h \ + XmlUniformiserTest.cpp + + +cppunittestmain_LDADD = \ + $(top_builddir)/src/cppunit/libcppunit.la + + +cppunittestmain_LDFLAGS = $(LIBADD_DL) +subdir = examples/cppunittest +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +check_PROGRAMS = cppunittestmain$(EXEEXT) +am_cppunittestmain_OBJECTS = BaseTestCase.$(OBJEXT) \ + CppUnitTestMain.$(OBJEXT) CppUnitTestSuite.$(OBJEXT) \ + ExceptionTest.$(OBJEXT) \ + ExceptionTestCaseDecoratorTest.$(OBJEXT) \ + HelperMacrosTest.$(OBJEXT) MessageTest.$(OBJEXT) \ + MockTestCase.$(OBJEXT) MockTestListener.$(OBJEXT) \ + OrthodoxTest.$(OBJEXT) RepeatedTestTest.$(OBJEXT) \ + StringToolsTest.$(OBJEXT) SubclassedTestCase.$(OBJEXT) \ + TestAssertTest.$(OBJEXT) TestCallerTest.$(OBJEXT) \ + TestCaseTest.$(OBJEXT) TestDecoratorTest.$(OBJEXT) \ + TestFailureTest.$(OBJEXT) TestPathTest.$(OBJEXT) \ + TestResultCollectorTest.$(OBJEXT) TestResultTest.$(OBJEXT) \ + TestSetUpTest.$(OBJEXT) TestSuiteTest.$(OBJEXT) \ + TestTest.$(OBJEXT) TrackedTestCase.$(OBJEXT) \ + XmlElementTest.$(OBJEXT) XmlOutputterTest.$(OBJEXT) \ + XmlUniformiser.$(OBJEXT) XmlUniformiserTest.$(OBJEXT) +cppunittestmain_OBJECTS = $(am_cppunittestmain_OBJECTS) +cppunittestmain_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/BaseTestCase.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/CppUnitTestMain.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/CppUnitTestSuite.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ExceptionTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ExceptionTestCaseDecoratorTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/HelperMacrosTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/MessageTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/MockTestCase.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/MockTestListener.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/OrthodoxTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/RepeatedTestTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/StringToolsTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/SubclassedTestCase.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestAssertTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestCallerTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestCaseTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestDecoratorTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestFailureTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestPathTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestResultCollectorTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestResultTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestSetUpTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestSuiteTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/TrackedTestCase.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/XmlElementTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/XmlOutputterTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/XmlUniformiser.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/XmlUniformiserTest.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(cppunittestmain_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(cppunittestmain_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/cppunittest/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +cppunittestmain$(EXEEXT): $(cppunittestmain_OBJECTS) $(cppunittestmain_DEPENDENCIES) + @rm -f cppunittestmain$(EXEEXT) + $(CXXLINK) $(cppunittestmain_LDFLAGS) $(cppunittestmain_OBJECTS) $(cppunittestmain_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BaseTestCase.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUnitTestMain.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUnitTestSuite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExceptionTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExceptionTestCaseDecoratorTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HelperMacrosTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MessageTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MockTestCase.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MockTestListener.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OrthodoxTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RepeatedTestTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StringToolsTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SubclassedTestCase.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestAssertTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestCallerTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestCaseTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestDecoratorTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestFailureTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestPathTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestResultCollectorTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestResultTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSetUpTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuiteTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TrackedTestCase.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlElementTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlOutputterTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlUniformiser.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlUniformiserTest.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list='$(TESTS)'; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -n "$$skipped" && echo "$$skipped"; \ + test -n "$$report" && echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am + +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool ctags distclean \ + distclean-compile distclean-depend distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man 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-info-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: diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.cpp new file mode 100644 index 0000000000..c59544da89 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.cpp @@ -0,0 +1,234 @@ +#include "CoreSuite.h" +#include "MessageTest.h" + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( MessageTest, + coreSuiteName() ); + + +MessageTest::MessageTest() +{ +} + + +MessageTest::~MessageTest() +{ +} + + +void +MessageTest::setUp() +{ + m_message = new CPPUNIT_NS::Message(); +} + + +void +MessageTest::tearDown() +{ + delete m_message; +} + + +void +MessageTest::testDefaultConstructor() +{ + std::string empty; + CPPUNIT_ASSERT_EQUAL( empty, m_message->shortDescription() ); + CPPUNIT_ASSERT_EQUAL( 0, m_message->detailCount() ); +} + + +void +MessageTest::testDetailAtThrowIfBadIndex() +{ + m_message->detailAt( -1 ); +} + + + +void +MessageTest::testDetailAtThrowIfBadIndex2() +{ + m_message->detailAt( 0 ); +} + + +void +MessageTest::testAddDetail() +{ + std::string expected( "first" ); + m_message->addDetail( expected ); + CPPUNIT_ASSERT_EQUAL( 1, m_message->detailCount() ); + CPPUNIT_ASSERT_EQUAL( expected, m_message->detailAt(0) ); +} + + +void +MessageTest::testAddDetail2() +{ + std::string expected1( "first" ); + std::string expected2( "second" ); + m_message->addDetail( expected1, expected2 ); + CPPUNIT_ASSERT_EQUAL( 2, m_message->detailCount() ); + CPPUNIT_ASSERT_EQUAL( expected1, m_message->detailAt(0) ); + CPPUNIT_ASSERT_EQUAL( expected2, m_message->detailAt(1) ); +} + + +void +MessageTest::testAddDetail3() +{ + std::string expected1( "first" ); + std::string expected2( "second" ); + std::string expected3( "third" ); + m_message->addDetail( expected1, expected2, expected3 ); + CPPUNIT_ASSERT_EQUAL( 3, m_message->detailCount() ); + CPPUNIT_ASSERT_EQUAL( expected1, m_message->detailAt(0) ); + CPPUNIT_ASSERT_EQUAL( expected2, m_message->detailAt(1) ); + CPPUNIT_ASSERT_EQUAL( expected3, m_message->detailAt(2) ); +} + + +void +MessageTest::testAddDetailEmptyMessage() +{ + m_message->addDetail( CPPUNIT_NS::Message() ); + CPPUNIT_ASSERT_EQUAL( 0, m_message->detailCount() ); +} + + +void +MessageTest::testAddDetailMessage() +{ + std::string expected1( "first" ); + std::string expected2( "second" ); + m_message->addDetail( CPPUNIT_NS::Message( "shortDesc", expected1, expected2 ) ); + CPPUNIT_ASSERT_EQUAL( 2, m_message->detailCount() ); + CPPUNIT_ASSERT_EQUAL( expected1, m_message->detailAt(0) ); + CPPUNIT_ASSERT_EQUAL( expected2, m_message->detailAt(1) ); +} + + +void +MessageTest::testSetShortDescription() +{ + std::string expected( "shortDesc" ); + m_message->setShortDescription( expected ); + CPPUNIT_ASSERT_EQUAL( expected, m_message->shortDescription() ); +} + + +void +MessageTest::testClearDetails() +{ + m_message->addDetail( "detail1" ); + m_message->clearDetails(); + CPPUNIT_ASSERT_EQUAL( 0, m_message->detailCount() ); +} + + +void +MessageTest::testConstructor() +{ + std::string expected( "short" ); + CPPUNIT_NS::Message message( expected ); + + CPPUNIT_ASSERT_EQUAL( expected, message.shortDescription() ); + CPPUNIT_ASSERT_EQUAL( 0, message.detailCount() ); +} + + +void +MessageTest::testConstructorDetail1() +{ + std::string expected( "short" ); + std::string expected1( "detail-1" ); + CPPUNIT_NS::Message message( expected, expected1 ); + + CPPUNIT_ASSERT_EQUAL( expected, message.shortDescription() ); + CPPUNIT_ASSERT_EQUAL( 1, message.detailCount() ); + CPPUNIT_ASSERT_EQUAL( expected1, message.detailAt(0) ); +} + + +void +MessageTest::testConstructorDetail2() +{ + std::string expected( "short" ); + std::string expected1( "detail-1" ); + std::string expected2( "detail-2" ); + CPPUNIT_NS::Message message( expected, expected1, expected2 ); + + CPPUNIT_ASSERT_EQUAL( expected, message.shortDescription() ); + CPPUNIT_ASSERT_EQUAL( 2, message.detailCount() ); + CPPUNIT_ASSERT_EQUAL( expected1, message.detailAt(0) ); + CPPUNIT_ASSERT_EQUAL( expected2, message.detailAt(1) ); +} + + +void +MessageTest::testConstructorDetail3() +{ + std::string expected( "short" ); + std::string expected1( "detail-1" ); + std::string expected2( "detail-2" ); + std::string expected3( "detail-3" ); + CPPUNIT_NS::Message message( expected, expected1, expected2, expected3 ); + + CPPUNIT_ASSERT_EQUAL( expected, message.shortDescription() ); + CPPUNIT_ASSERT_EQUAL( 3, message.detailCount() ); + CPPUNIT_ASSERT_EQUAL( expected1, message.detailAt(0) ); + CPPUNIT_ASSERT_EQUAL( expected2, message.detailAt(1) ); + CPPUNIT_ASSERT_EQUAL( expected3, message.detailAt(2) ); +} + + +void +MessageTest::testDetailsNone() +{ + CPPUNIT_ASSERT_MESSAGE("012345678901234",true); + std::string empty; + CPPUNIT_ASSERT_EQUAL( empty, m_message->details() ); +} + + +void +MessageTest::testDetailsSome() +{ + m_message->addDetail( "Expected: 1", "Actual: 7", "Info: number" ); + std::string expected( "- Expected: 1\n- Actual: 7\n- Info: number\n" ); + std::string actual = m_message->details(); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +MessageTest::testEqual() +{ + CPPUNIT_ASSERT( *m_message == CPPUNIT_NS::Message() ); + + CPPUNIT_NS::Message message1( "short", "det1", "det2", "det3" ); + CPPUNIT_NS::Message message2( message1 ); + CPPUNIT_ASSERT( message1 == message2 ); + + CPPUNIT_ASSERT( !(*m_message == message1) ); + + CPPUNIT_NS::Message message3( "short" ); + CPPUNIT_ASSERT( !(message3 == message1) ); + + CPPUNIT_NS::Message message4( "long" ); + CPPUNIT_ASSERT( !(message3 == message4) ); + + CPPUNIT_NS::Message message5( "short", "det1", "det-2", "det3" ); + CPPUNIT_ASSERT( !(message1 == message5) ); +} + + +void +MessageTest::testNotEqual() +{ + CPPUNIT_NS::Message message1( "short", "det1", "det2", "det3" ); + CPPUNIT_NS::Message message2( "short", "det1", "det-2", "det3" ); + CPPUNIT_ASSERT( message1 != message2 ); + CPPUNIT_ASSERT( !(message1 != message1) ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.h b/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.h new file mode 100644 index 0000000000..4c757e8179 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.h @@ -0,0 +1,76 @@ +#ifndef MESSAGETEST_H +#define MESSAGETEST_H + +#include +#include +#include + + +/// Unit tests for MessageTest +class MessageTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( MessageTest ); + CPPUNIT_TEST( testDefaultConstructor ); + CPPUNIT_TEST_EXCEPTION( testDetailAtThrowIfBadIndex, std::invalid_argument ); + CPPUNIT_TEST_EXCEPTION( testDetailAtThrowIfBadIndex2, std::invalid_argument ); + CPPUNIT_TEST( testAddDetail ); + CPPUNIT_TEST( testAddDetail2 ); + CPPUNIT_TEST( testAddDetail3 ); + CPPUNIT_TEST( testAddDetailEmptyMessage ); + CPPUNIT_TEST( testAddDetailMessage ); + CPPUNIT_TEST( testSetShortDescription ); + CPPUNIT_TEST( testClearDetails ); + CPPUNIT_TEST( testConstructor ); + CPPUNIT_TEST( testConstructorDetail1 ); + CPPUNIT_TEST( testConstructorDetail2 ); + CPPUNIT_TEST( testConstructorDetail3 ); + CPPUNIT_TEST( testDetailsNone ); + CPPUNIT_TEST( testDetailsSome ); + CPPUNIT_TEST( testEqual ); + CPPUNIT_TEST( testNotEqual ); + CPPUNIT_TEST_SUITE_END(); + +public: + MessageTest(); + + virtual ~MessageTest(); + + void setUp(); + void tearDown(); + + void testDefaultConstructor(); + void testDetailAtThrowIfBadIndex(); + void testDetailAtThrowIfBadIndex2(); + void testAddDetail(); + void testAddDetail2(); + void testAddDetail3(); + void testAddDetailEmptyMessage(); + void testAddDetailMessage(); + void testSetShortDescription(); + void testClearDetails(); + + void testConstructor(); + void testConstructorDetail1(); + void testConstructorDetail2(); + void testConstructorDetail3(); + + void testDetailsNone(); + void testDetailsSome(); + + void testEqual(); + void testNotEqual(); + +private: + /// Prevents the use of the copy constructor. + MessageTest( const MessageTest &other ); + + /// Prevents the use of the copy operator. + void operator =( const MessageTest &other ); + +private: + CPPUNIT_NS::Message *m_message; +}; + + + +#endif // MESSAGETEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockFunctor.h b/lib/cppunit-1.10.0/examples/cppunittest/MockFunctor.h new file mode 100644 index 0000000000..fcc5a7a93b --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/MockFunctor.h @@ -0,0 +1,90 @@ +#ifndef MOCKFUNCTOR_H +#define MOCKFUNCTOR_H + +#include +#include +#include "FailureException.h" +#include "MockProtector.h" + + +class MockFunctor : public CPPUNIT_NS::Functor +{ +public: + MockFunctor() + : m_shouldThrow( false ) + , m_shouldThrowFailureException( false ) + , m_hasExpectation( false ) + , m_actualCallCount( 0 ) + , m_expectedCallCount( 0 ) + , m_shouldSucceed( true ) + { + } + + + bool operator()() const + { + ++CPPUNIT_CONST_CAST(MockFunctor *,this)->m_actualCallCount; + + if ( m_shouldThrow ) + { + if ( m_shouldThrowFailureException ) + throw FailureException(); + throw MockProtectorException(); + } + + return m_shouldSucceed; + } + + void setThrowFailureException() + { + m_shouldThrow = true; + m_shouldThrowFailureException = true; + ++m_expectedCallCount; + m_hasExpectation = true; + } + + void setThrowMockProtectorException() + { + m_shouldThrow = true; + m_shouldThrowFailureException = false; + ++m_expectedCallCount; + m_hasExpectation = true; + } + + void setShouldFail() + { + m_shouldSucceed = false; + } + + void setShouldSucceed() + { + m_shouldSucceed = true; + } + + void setExpectedCallCount( int callCount =1 ) + { + m_expectedCallCount = callCount; + m_hasExpectation = true; + } + + void verify() + { + if ( m_hasExpectation ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( "MockFunctor: bad call count", + m_expectedCallCount, + m_actualCallCount ); + } + } + +private: + bool m_shouldSucceed; + bool m_shouldThrow; + bool m_shouldThrowFailureException; + bool m_hasExpectation; + int m_actualCallCount; + int m_expectedCallCount; +}; + + +#endif // MOCKFUNCTOR_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockProtector.h b/lib/cppunit-1.10.0/examples/cppunittest/MockProtector.h new file mode 100644 index 0000000000..54790e93c1 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/MockProtector.h @@ -0,0 +1,96 @@ +#ifndef MOCKPROTECTOR_H +#define MOCKPROTECTOR_H + +#include +#include + + +class MockProtectorException : public std::runtime_error +{ +public: + MockProtectorException() + : std::runtime_error( "MockProtectorException" ) + { + } +}; + + +class MockProtector : public CPPUNIT_NS::Protector +{ +public: + MockProtector() + : m_expectException( false ) + , m_hasExpectation( false ) + , m_wasCalled( false ) + , m_wasTrapped( false ) + , m_shouldPropagateException( false ) + { + } + + bool protect( const CPPUNIT_NS::Functor &functor, + const CPPUNIT_NS::ProtectorContext &context ) + { + try + { + m_wasCalled = true; + return functor(); + } + catch ( MockProtectorException & ) + { + m_wasTrapped = true; + + if ( m_shouldPropagateException ) + throw; + + reportError( context, CPPUNIT_NS::Message("MockProtector trap") ); + } + + return false; + } + + void setExpectException() + { + m_expectException = true; + m_hasExpectation = true; + } + + void setExpectNoException() + { + m_expectException = false; + m_hasExpectation = true; + } + + void setExpectCatchAndPropagateException() + { + setExpectException(); + m_shouldPropagateException = true; + } + + void verify() + { + if ( m_hasExpectation ) + { + CPPUNIT_ASSERT_MESSAGE( "MockProtector::protect() was not called", + m_wasCalled ); + + std::string message; + if ( m_expectException ) + message = "did not catch the exception."; + else + message = "caught an unexpected exception."; + CPPUNIT_ASSERT_EQUAL_MESSAGE( "MockProtector::protect() " + message, + m_expectException, + m_wasTrapped ); + } + } + +private: + bool m_wasCalled; + bool m_wasTrapped; + bool m_expectException; + bool m_hasExpectation; + bool m_shouldPropagateException; +}; + + +#endif // MOCKPROTECTOR_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.cpp b/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.cpp new file mode 100644 index 0000000000..9f7c2f68c5 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.cpp @@ -0,0 +1,190 @@ +#include "FailureException.h" +#include "MockTestCase.h" +#include + + +MockTestCase::MockTestCase( std::string name ) + : CPPUNIT_NS::TestCase( name ) + , m_hasSetUpExpectation( false ) + , m_expectedSetUpCall( 0 ) + , m_actualSetUpCall( 0 ) + , m_hasTearDownExpectation( false ) + , m_expectedTearDownCall( 0 ) + , m_actualTearDownCall( 0 ) + , m_expectRunTestCall( false ) + , m_expectedRunTestCallCount( 0 ) + , m_actualRunTestCallCount( 0 ) + , m_expectCountTestCasesCall( false ) + , m_expectedCountTestCasesCallCount( 0 ) + , m_actualCountTestCasesCallCount( 0 ) + , m_setUpThrow( false ) + , m_tearDownThrow( false ) + , m_runTestThrow( false ) + , m_passingTest( NULL ) +{ +} + + +MockTestCase::~MockTestCase() +{ +} + + +int +MockTestCase::countTestCases() const +{ + MockTestCase *mutableThis = CPPUNIT_CONST_CAST(MockTestCase *, this ); + ++mutableThis->m_actualCountTestCasesCallCount; + if ( m_expectCountTestCasesCall ) + { + CPPUNIT_ASSERT_MESSAGE( getName() + ": unexpected MockTestCase::countTestCases() call", + m_actualCountTestCasesCallCount <= m_expectedCountTestCasesCallCount ); + } + + return SuperClass::countTestCases(); +} + + +void +MockTestCase::setUp() +{ + if ( m_hasSetUpExpectation ) + { + ++m_actualSetUpCall; + CPPUNIT_ASSERT_MESSAGE( getName() + ": unexpected MockTestCase::setUp() call", + m_actualSetUpCall <= m_expectedSetUpCall ); + } + + if ( m_setUpThrow ) + throw FailureException(); +} + +void +MockTestCase::tearDown() +{ + if ( m_hasTearDownExpectation ) + { + ++m_actualTearDownCall; + CPPUNIT_ASSERT_MESSAGE( getName() + ": unexpected MockTestCase::tearDown() call", + m_actualTearDownCall <= m_expectedTearDownCall ); + } + + if ( m_tearDownThrow ) + throw FailureException(); +} + + +void +MockTestCase::runTest() +{ + ++m_actualRunTestCallCount; + if ( m_expectRunTestCall ) + { + CPPUNIT_ASSERT_MESSAGE( getName() + ": unexpected MockTestCase::runTest() call", + m_actualRunTestCallCount <= m_expectedRunTestCallCount ); + } + + if ( m_runTestThrow ) + throw FailureException(); +} + +/* +bool +MockTestCase::findTestPath( const CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestPath &testPath ) +{ + if ( m_passingTest == test ) + { + testPath.add( this ); + return true; + } + + return false; +} +*/ + +void +MockTestCase::setExpectedSetUpCall( int callCount ) +{ + m_hasSetUpExpectation = true; + m_expectedSetUpCall = callCount; +} + + +void +MockTestCase::setExpectedTearDownCall( int callCount ) +{ +} + + +void +MockTestCase::setExpectedRunTestCall( int callCount ) +{ + m_expectRunTestCall = true; + m_expectedRunTestCallCount = callCount ; +} + + +void +MockTestCase::setExpectedCountTestCasesCall( int callCount ) +{ + m_expectCountTestCasesCall = true; + m_expectedCountTestCasesCallCount = callCount; +} + + +void +MockTestCase::makeSetUpThrow() +{ + m_setUpThrow = true; +} + + +void +MockTestCase::makeTearDownThrow() +{ + m_tearDownThrow = true; +} + + +void +MockTestCase::makeRunTestThrow() +{ + m_runTestThrow = true; +} + + +void +MockTestCase::verify() +{ + if ( m_hasSetUpExpectation ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( getName() + ": bad MockTestCase::setUp() " + "call count", + m_expectedSetUpCall, + m_actualSetUpCall ); + } + + if ( m_hasTearDownExpectation ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( getName() + ": bad MockTestCase::tearDown() " + "call count", + m_expectedTearDownCall, + m_actualTearDownCall ); + } + + if ( m_expectCountTestCasesCall ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( getName() + ": bad MockTestCase::countTestCases() " + "call count", + m_expectedCountTestCasesCallCount, + m_actualCountTestCasesCallCount ); + } + if ( m_expectRunTestCall ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( getName() + ": bad MockTestCase::runTest() " + "call count", + m_expectedRunTestCallCount, + m_actualRunTestCallCount ); + } +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.h b/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.h new file mode 100644 index 0000000000..8ff80e4bcd --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.h @@ -0,0 +1,75 @@ +#ifndef MOCKTESTCASE_H +#define MOCKTESTCASE_H + +#include + + +/*! \class MockTestCase + * \brief This class represents a mock test case. + */ +class MockTestCase : public CPPUNIT_NS::TestCase +{ +public: + typedef CPPUNIT_NS::TestCase SuperClass; // work around VC++ call to super class method. + + /*! Constructs a MockTestCase object. + */ + MockTestCase( std::string name ); + + /// Destructor. + virtual ~MockTestCase(); + + void setExpectedSetUpCall( int callCount = 1 ); + void setExpectedTearDownCall( int callCount = 1 ); + void setExpectedRunTestCall( int callCount = 1 ); + void setExpectedCountTestCasesCall( int callCount = 1 ); + + void makeSetUpThrow(); + void makeTearDownThrow(); + void makeRunTestThrow(); + void makeFindTestPathPassFor( const CPPUNIT_NS::Test *testFound ); + + void verify(); + +protected: + int countTestCases() const; + void setUp(); + void tearDown(); + void runTest(); +// bool findTestPath( const CPPUNIT_NS::Test *test, +// CPPUNIT_NS::TestPath &testPath ); + +private: + /// Prevents the use of the copy constructor. + MockTestCase( const MockTestCase © ); + + /// Prevents the use of the copy operator. + void operator =( const MockTestCase © ); + +private: + bool m_hasSetUpExpectation; + int m_expectedSetUpCall; + int m_actualSetUpCall; + + bool m_hasTearDownExpectation; + int m_expectedTearDownCall; + int m_actualTearDownCall; + + bool m_expectRunTestCall; + int m_expectedRunTestCallCount; + int m_actualRunTestCallCount; + bool m_expectCountTestCasesCall; + int m_expectedCountTestCasesCallCount; + int m_actualCountTestCasesCallCount; + + bool m_setUpThrow; + bool m_tearDownThrow; + bool m_runTestThrow; + const CPPUNIT_NS::Test *m_passingTest; +}; + + + + + +#endif // MOCKTESTCASE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.cpp b/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.cpp new file mode 100644 index 0000000000..0cacfd36d0 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.cpp @@ -0,0 +1,390 @@ +#include +#include +#include "MockTestListener.h" + + +MockTestListener::MockTestListener( std::string name ) + : m_name( name ) + , m_hasExpectationForStartTest( false ) + , m_hasParametersExpectationForStartTest( false ) + , m_expectedStartTestCallCount( 0 ) + , m_startTestCall( 0 ) + , m_hasExpectationForEndTest( false ) + , m_hasParametersExpectationForEndTest( false ) + , m_expectedEndTestCallCount( 0 ) + , m_endTestCall( 0 ) + , m_hasExpectationForStartSuite( false ) + , m_hasParametersExpectationForStartSuite( false ) + , m_expectedStartSuiteCallCount( 0 ) + , m_startSuiteCall( 0 ) + , m_hasExpectationForEndSuite( false ) + , m_hasParametersExpectationForEndSuite( false ) + , m_expectedEndSuiteCallCount( 0 ) + , m_endSuiteCall( 0 ) + , m_hasExpectationForStartTestRun( false ) + , m_hasParametersExpectationForStartTestRun( false ) + , m_expectedStartTestRunCallCount( 0 ) + , m_startTestRunCall( 0 ) + , m_hasExpectationForEndTestRun( false ) + , m_hasParametersExpectationForEndTestRun( false ) + , m_expectedEndTestRunCallCount( 0 ) + , m_endTestRunCall( 0 ) + , m_hasExpectationForAddFailure( false ) + , m_hasExpectationForSomeFailure( false ) + , m_hasParametersExpectationForAddFailure( false ) + , m_expectedAddFailureCallCount( 0 ) + , m_addFailureCall( 0 ) + , m_expectedFailedTest( NULL ) + , m_expectedException( NULL ) + , m_expectedIsError( false ) +{ +} + + +void +MockTestListener::setExpectFailure( CPPUNIT_NS::Test *failedTest, + CPPUNIT_NS::Exception *thrownException, + bool isError ) +{ + m_hasExpectationForAddFailure = true; + m_hasParametersExpectationForAddFailure = true; + m_expectedAddFailureCallCount = 1; + m_expectedFailedTest = failedTest; + m_expectedException = thrownException; + m_expectedIsError = isError; +} + + +void +MockTestListener::setExpectNoFailure() +{ + m_hasExpectationForAddFailure = true; + m_expectedAddFailureCallCount = 0; +} + + +void +MockTestListener::setExpectFailure() +{ + m_hasExpectationForSomeFailure = true; +} + + +void +MockTestListener::setExpectedAddFailureCall( int callCount ) +{ + m_hasExpectationForAddFailure = true; + m_expectedAddFailureCallCount = callCount; +} + + +void +MockTestListener::setExpectStartTest( CPPUNIT_NS::Test *test ) +{ + m_hasExpectationForStartTest = true; + m_hasParametersExpectationForStartTest = true; + m_expectedStartTestCallCount = 1; + m_expectedStartTest = test; +} + + +void +MockTestListener::setExpectedStartTestCall( int callCount ) +{ + m_hasExpectationForStartTest = true; + m_expectedStartTestCallCount = callCount; +} + + +void +MockTestListener::setExpectEndTest( CPPUNIT_NS::Test *test ) +{ + m_hasExpectationForEndTest = true; + m_hasParametersExpectationForEndTest = true; + m_expectedEndTestCallCount = 1; + m_expectedEndTest = test; +} + + +void +MockTestListener::setExpectedEndTestCall( int callCount ) +{ + m_hasExpectationForEndTest = true; + m_expectedEndTestCallCount = callCount; +} + + +void +MockTestListener::setExpectStartSuite( CPPUNIT_NS::Test *test ) +{ + m_hasExpectationForStartSuite = true; + m_hasParametersExpectationForStartSuite = true; + m_expectedStartSuiteCallCount = 1; + m_expectedStartSuite = test; +} + + +void +MockTestListener::setExpectedStartSuiteCall( int callCount ) +{ + m_hasExpectationForStartSuite = true; + m_expectedStartSuiteCallCount = callCount; +} + + +void +MockTestListener::setExpectEndSuite( CPPUNIT_NS::Test *test ) +{ + m_hasExpectationForEndSuite = true; + m_hasParametersExpectationForEndSuite = true; + m_expectedEndSuiteCallCount = 1; + m_expectedEndSuite = test; +} + + +void +MockTestListener::setExpectedEndSuiteCall( int callCount ) +{ + m_hasExpectationForEndSuite = true; + m_expectedEndSuiteCallCount = callCount; +} + + +void +MockTestListener::setExpectStartTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ) +{ + m_hasExpectationForStartTestRun = true; + m_hasParametersExpectationForStartTestRun = true; + m_expectedStartTestRunCallCount = 1; + m_expectedStartTestRun = test; + m_expectedStartTestRun2 = eventManager; +} + + +void +MockTestListener::setExpectedStartTestRunCall( int callCount ) +{ + m_hasExpectationForStartTestRun = true; + m_expectedStartTestRunCallCount = callCount; +} + + +void +MockTestListener::setExpectEndTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ) +{ + m_hasExpectationForEndTestRun = true; + m_hasParametersExpectationForEndTestRun = true; + m_expectedEndTestRunCallCount = 1; + m_expectedEndTestRun = test; + m_expectedEndTestRun2 = eventManager; +} + + +void +MockTestListener::setExpectedEndTestRunCall( int callCount ) +{ + m_hasExpectationForEndTestRun = true; + m_expectedEndTestRunCallCount = callCount; +} + + +void +MockTestListener::addFailure( const CPPUNIT_NS::TestFailure &failure ) +{ + if ( m_hasExpectationForAddFailure || m_hasExpectationForSomeFailure ) + ++m_addFailureCall; + + if ( m_hasExpectationForAddFailure ) + { + CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", + m_addFailureCall <= m_expectedAddFailureCallCount ); + } + + if ( m_hasParametersExpectationForAddFailure ) + { + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", + m_expectedFailedTest == failure.failedTest() ); + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad thrownException", + m_expectedException == failure.thrownException() ); + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad isError", + m_expectedIsError == failure.isError() ); + } +} + + +void +MockTestListener::startTest( CPPUNIT_NS::Test *test ) +{ + if ( m_hasExpectationForStartTest ) + { + ++m_startTestCall; + CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", + m_startTestCall <= m_expectedStartTestCallCount ); + + } + + if ( m_hasParametersExpectationForStartTest ) + { + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", + m_expectedStartTest == test ); + } +} + + +void +MockTestListener::endTest( CPPUNIT_NS::Test *test ) +{ + if ( m_hasExpectationForEndTest ) + { + ++m_endTestCall; + CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", + m_endTestCall <= m_expectedEndTestCallCount ); + } + + if ( m_hasParametersExpectationForEndTest ) + { + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", + m_expectedEndTest == test ); + } +} + + +void +MockTestListener::startSuite( CPPUNIT_NS::Test *test ) +{ + if ( m_hasExpectationForStartSuite ) + { + ++m_startSuiteCall; + CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", + m_startSuiteCall <= m_expectedStartSuiteCallCount ); + } + + if ( m_hasParametersExpectationForStartSuite ) + { + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", + m_expectedStartSuite == test ); + } +} + + +void +MockTestListener::endSuite( CPPUNIT_NS::Test *test ) +{ + if ( m_hasExpectationForEndSuite ) + { + ++m_endSuiteCall; + CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", + m_endSuiteCall <= m_expectedEndSuiteCallCount ); + } + + if ( m_hasParametersExpectationForEndSuite ) + { + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", + m_expectedEndSuite == test ); + } +} + + +void +MockTestListener::startTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ) +{ + if ( m_hasExpectationForStartTestRun ) + { + ++m_startTestRunCall; + CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", + m_startTestRunCall <= m_expectedStartTestRunCallCount ); + } + + if ( m_hasParametersExpectationForStartTestRun ) + { + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", + m_expectedStartTestRun == test ); + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad eventManager", + m_expectedStartTestRun2 == eventManager ); + } +} + + +void +MockTestListener::endTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ) +{ + if ( m_hasExpectationForEndTestRun ) + { + ++m_endTestRunCall; + CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", + m_endTestRunCall <= m_expectedEndTestRunCallCount ); + } + + if ( m_hasParametersExpectationForEndTestRun ) + { + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", + m_expectedEndTestRun == test ); + CPPUNIT_ASSERT_MESSAGE( m_name + ": bad eventManager", + m_expectedEndTestRun2 == eventManager ); + } +} + + +void +MockTestListener::verify() +{ + if ( m_hasExpectationForStartTest ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing startTest calls", + m_expectedStartTestCallCount, + m_startTestCall ); + } + + if ( m_hasExpectationForEndTest ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing endTest calls", + m_expectedEndTestCallCount, + m_endTestCall ); + } + + if ( m_hasExpectationForStartSuite ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing startSuite calls", + m_expectedStartSuiteCallCount, + m_startSuiteCall ); + } + + if ( m_hasExpectationForEndSuite ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing endSuite calls", + m_expectedEndSuiteCallCount, + m_endSuiteCall ); + } + + if ( m_hasExpectationForStartTestRun ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing startTestRun calls", + m_expectedStartTestRunCallCount, + m_startTestRunCall ); + } + + if ( m_hasExpectationForEndTestRun ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing endTestRun calls", + m_expectedEndTestRunCallCount, + m_endTestRunCall ); + } + + if ( m_hasExpectationForAddFailure ) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing addFailure calls", + m_expectedAddFailureCallCount, + m_addFailureCall ); + } + + if ( m_hasExpectationForSomeFailure ) + { + CPPUNIT_ASSERT_MESSAGE( m_name + ": there was no call to " + "MockTestListener::addFailure()", + m_addFailureCall > 0 ); + } +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.h b/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.h new file mode 100644 index 0000000000..17f2dfaed9 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.h @@ -0,0 +1,105 @@ +#ifndef MOCKTESTLISTENER_H +#define MOCKTESTLISTENER_H + +#include +#include + + +class MockTestListener : public CPPUNIT_NS::TestListener +{ +public: + MockTestListener( std::string name ); + virtual ~MockTestListener() {} + + void setExpectFailure( CPPUNIT_NS::Test *failedTest, + CPPUNIT_NS::Exception *thrownException, + bool isError ); + void setExpectNoFailure(); + void setExpectFailure(); + void setExpectedAddFailureCall( int callCount ); + void setExpectStartTest( CPPUNIT_NS::Test *test ); + void setExpectedStartTestCall( int callCount ); + void setExpectEndTest( CPPUNIT_NS::Test *test ); + void setExpectedEndTestCall( int callCount ); + void setExpectStartSuite( CPPUNIT_NS::Test *suite ); + void setExpectedStartSuiteCall( int callCount ); + void setExpectEndSuite( CPPUNIT_NS::Test *suite ); + void setExpectedEndSuiteCall( int callCount ); + void setExpectStartTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ); + void setExpectedStartTestRunCall( int callCount ); + void setExpectEndTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ); + void setExpectedEndTestRunCall( int callCount ); + + void addFailure( const CPPUNIT_NS::TestFailure &failure ); + void startTest( CPPUNIT_NS::Test *test ); + void endTest( CPPUNIT_NS::Test *test ); + void startSuite( CPPUNIT_NS::Test *suite ); + void endSuite( CPPUNIT_NS::Test *suite ); + void startTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ); + void endTestRun( CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestResult *eventManager ); + + void verify(); + +private: + std::string m_name; + + bool m_hasExpectationForStartTest; + bool m_hasParametersExpectationForStartTest; + int m_expectedStartTestCallCount; + int m_startTestCall; + CPPUNIT_NS::Test *m_expectedStartTest; + + bool m_hasExpectationForEndTest; + bool m_hasParametersExpectationForEndTest; + int m_expectedEndTestCallCount; + CPPUNIT_NS::Test *m_expectedEndTest; + int m_endTestCall; + + bool m_hasExpectationForStartSuite; + bool m_hasParametersExpectationForStartSuite; + int m_expectedStartSuiteCallCount; + CPPUNIT_NS::Test *m_expectedStartSuite; + int m_startSuiteCall; + + bool m_hasExpectationForEndSuite; + bool m_hasParametersExpectationForEndSuite; + int m_expectedEndSuiteCallCount; + CPPUNIT_NS::Test *m_expectedEndSuite; + int m_endSuiteCall; + + bool m_hasExpectationForStartTestRun; + bool m_hasParametersExpectationForStartTestRun; + int m_expectedStartTestRunCallCount; + CPPUNIT_NS::Test *m_expectedStartTestRun; + CPPUNIT_NS::TestResult *m_expectedStartTestRun2; + int m_startTestRunCall; + + bool m_hasExpectationForEndTestRun; + bool m_hasParametersExpectationForEndTestRun; + int m_expectedEndTestRunCallCount; + CPPUNIT_NS::Test *m_expectedEndTestRun; + CPPUNIT_NS::TestResult *m_expectedEndTestRun2; + int m_endTestRunCall; + + bool m_hasExpectationForAddFailure; + bool m_hasExpectationForSomeFailure; + bool m_hasParametersExpectationForAddFailure; + int m_expectedAddFailureCallCount; + int m_addFailureCall; + CPPUNIT_NS::Test *m_expectedFailedTest; + CPPUNIT_NS::Exception *m_expectedException; + bool m_expectedIsError; +}; + + + +// Inlines methods for MockTestListener: +// ------------------------------------- + + + +#endif // MOCKTESTLISTENER_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.cpp new file mode 100644 index 0000000000..ae1edb36ad --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.cpp @@ -0,0 +1,103 @@ +#include "ExtensionSuite.h" +#include "OrthodoxTest.h" +#include +#include + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( OrthodoxTest, + extensionSuiteName() ); + +OrthodoxTest::OrthodoxTest() +{ +} + + +OrthodoxTest::~OrthodoxTest() +{ +} + + +void +OrthodoxTest::setUp() +{ + m_testListener = new MockTestListener( "mock-listener" ); + m_result = new CPPUNIT_NS::TestResult(); + m_result->addListener( m_testListener ); +} + + +void +OrthodoxTest::tearDown() +{ + delete m_result; + delete m_testListener; +} + + +void +OrthodoxTest::testValue() +{ + CPPUNIT_NS::Orthodox test; + m_testListener->setExpectNoFailure(); + test.run( m_result ); + m_testListener->verify(); +} + + +void +OrthodoxTest::testValueBadConstructor() +{ + CPPUNIT_NS::Orthodox test; + m_testListener->setExpectFailure(); + test.run( m_result ); + m_testListener->verify(); +} + + +void +OrthodoxTest::testValueBadInvert() +{ + CPPUNIT_NS::Orthodox test; + m_testListener->setExpectFailure(); + test.run( m_result ); + m_testListener->verify(); +} + + +void +OrthodoxTest::testValueBadEqual() +{ + CPPUNIT_NS::Orthodox test; + m_testListener->setExpectFailure(); + test.run( m_result ); + m_testListener->verify(); +} + + +void +OrthodoxTest::testValueBadNotEqual() +{ + CPPUNIT_NS::Orthodox test; + m_testListener->setExpectFailure(); + test.run( m_result ); + m_testListener->verify(); +} + + +void +OrthodoxTest::testValueBadCall() +{ + CPPUNIT_NS::Orthodox test; + m_testListener->setExpectFailure(); + test.run( m_result ); + m_testListener->verify(); +} + + +void +OrthodoxTest::testValueBadAssignment() +{ + CPPUNIT_NS::Orthodox test; + m_testListener->setExpectFailure(); + test.run( m_result ); + m_testListener->verify(); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.h b/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.h new file mode 100644 index 0000000000..422c074633 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.h @@ -0,0 +1,178 @@ +#ifndef ORTHODOXTEST_H +#define ORTHODOXTEST_H + +#include +#include "MockTestListener.h" + + +class OrthodoxTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( OrthodoxTest ); + CPPUNIT_TEST( testValue ); + CPPUNIT_TEST( testValueBadConstructor ); + CPPUNIT_TEST( testValueBadInvert ); + CPPUNIT_TEST( testValueBadEqual ); + CPPUNIT_TEST( testValueBadNotEqual ); + CPPUNIT_TEST( testValueBadCall ); + CPPUNIT_TEST( testValueBadAssignment ); + CPPUNIT_TEST_SUITE_END(); + +public: + OrthodoxTest(); + virtual ~OrthodoxTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testValue(); + void testValueBadConstructor(); + void testValueBadInvert(); + void testValueBadEqual(); + void testValueBadNotEqual(); + void testValueBadCall(); + void testValueBadAssignment(); + +private: + class Value + { + public: + Value( int value =0 ) : m_value( value ) {} + + Value& operator= ( const Value& v ) + { + m_value = v.m_value; + return *this; + } + + bool operator ==( const Value &other ) const + { + return m_value == other.m_value; + } + + bool operator !=( const Value &other ) + { + return !( *this == other ); + } + + Value operator !() + { + return Value( -1 - m_value ); + } + + protected: + int m_value; + }; + + + class ValueBadConstructor : public Value + { + public: + ValueBadConstructor() + { + static int serialNumber = 0; + m_value = ++serialNumber; + } + + ValueBadConstructor( int value ) : Value( value ) {} + + ValueBadConstructor operator !() + { + return ValueBadConstructor( -1 - m_value ); + } + }; + + + class ValueBadInvert : public Value + { + public: + ValueBadInvert( int value =0 ) : Value( value ) {} + + ValueBadInvert operator !() + { + return ValueBadInvert( 1 ); + } + }; + + + class ValueBadEqual : public Value + { + public: + ValueBadEqual( int value =0 ) : Value( value ) {} + + ValueBadEqual operator !() + { + return ValueBadEqual( -1 - m_value ); + } + + bool operator ==( const ValueBadEqual &other ) const + { + return m_value != other.m_value; + } + }; + + + class ValueBadNotEqual : public Value + { + public: + ValueBadNotEqual( int value =0 ) : Value( value ) {} + + ValueBadNotEqual operator !() + { + return ValueBadNotEqual( -1 - m_value ); + } + + bool operator !=( const ValueBadNotEqual &other ) + { + return m_value == other.m_value; + } + }; + + + class ValueBadCall : public Value + { + public: + ValueBadCall( int value =0 ) : Value( value ) {} + + ValueBadCall( const ValueBadCall &other ) + { + static int serialNumber = 0; + m_value = ++serialNumber; + } + + ValueBadCall operator !() + { + return ValueBadCall( -1 - m_value ); + } + }; + + + class ValueBadAssignment: public Value + { + public: + ValueBadAssignment( int value =0 ) : Value( value ) {} + + ValueBadAssignment operator !() + { + return ValueBadAssignment( -1 - m_value ); + } + + ValueBadAssignment &operator =( const ValueBadAssignment &other ) + { + ++m_value; + return *this; + } + }; + + + + OrthodoxTest( const OrthodoxTest © ); + void operator =( const OrthodoxTest © ); + +private: + CPPUNIT_NS::TestResult *m_result; + MockTestListener *m_testListener; +}; + + + +#endif // ORTHODOXTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/OutputSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/OutputSuite.h new file mode 100644 index 0000000000..492d054160 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/OutputSuite.h @@ -0,0 +1,13 @@ +#ifndef CPPUNITTEST_OUTPUTSUITE_H +#define CPPUNITTEST_OUTPUTSUITE_H + +#include +#include + +inline std::string outputSuiteName() +{ + return "Output"; +} + + +#endif // CPPUNITTEST_OUTPUTSUITE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.cpp new file mode 100644 index 0000000000..70d55c70e4 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.cpp @@ -0,0 +1,43 @@ +#include "ExtensionSuite.h" +#include "RepeatedTestTest.h" +#include +#include + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RepeatedTestTest, + extensionSuiteName() ); + + +RepeatedTestTest::RepeatedTestTest() : + m_repeatCount( 17 ) +{ +} + + +RepeatedTestTest::~RepeatedTestTest() +{ +} + + +void +RepeatedTestTest::setUp() +{ + m_test = new RunCountTest(); + m_repeatedTest = new CPPUNIT_NS::RepeatedTest( m_test, m_repeatCount ); +} + + +void +RepeatedTestTest::tearDown() +{ + delete m_repeatedTest; +} + + +void +RepeatedTestTest::testRun() +{ + CPPUNIT_NS::TestResult result; + m_repeatedTest->run( &result ); + + CPPUNIT_ASSERT_EQUAL( 17, m_test->m_runCount ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.h b/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.h new file mode 100644 index 0000000000..609fed4add --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.h @@ -0,0 +1,47 @@ +#ifndef REPEATEDTESTTEST_H +#define REPEATEDTESTTEST_H + +#include + + +class RepeatedTestTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( RepeatedTestTest ); + CPPUNIT_TEST( testRun ); + CPPUNIT_TEST_SUITE_END(); + +public: + RepeatedTestTest(); + virtual ~RepeatedTestTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testRun(); + +private: + class RunCountTest : public CPPUNIT_NS::TestCase + { + public: + RunCountTest() : m_runCount( 0 ) {} + + void runTest() + { + ++m_runCount; + } + + int m_runCount; + }; + + RepeatedTestTest( const RepeatedTestTest © ); + void operator =( const RepeatedTestTest © ); + +private: + RunCountTest *m_test; + CPPUNIT_NS::Test *m_repeatedTest; + const int m_repeatCount; +}; + + + +#endif // REPEATEDTESTTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.cpp new file mode 100644 index 0000000000..7d876f177b --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.cpp @@ -0,0 +1,232 @@ +#include "StringToolsTest.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( StringToolsTest ); + + +StringToolsTest::StringToolsTest() +{ +} + + +StringToolsTest::~StringToolsTest() +{ +} + + +void +StringToolsTest::setUp() +{ +} + + +void +StringToolsTest::tearDown() +{ +} + + +void +StringToolsTest::testToStringInt() +{ + std::string expected = "123456789"; + std::string actual = CPPUNIT_NS::StringTools::toString( 123456789 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +StringToolsTest::testToStringDouble() +{ + std::string expected = "1234.56"; + std::string actual = CPPUNIT_NS::StringTools::toString( 1234.56 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +StringToolsTest::testSplitEmptyString() +{ + std::string text; + CPPUNIT_NS::StringTools::Strings expected; + CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' ); + + CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() ); + CPPUNIT_ASSERT( expected == actual ); +} + + +void +StringToolsTest::testSplitOneItem() +{ + std::string text = "1"; + CPPUNIT_NS::StringTools::Strings expected; + expected.push_back( "1" ); + CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' ); + + CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() ); + CPPUNIT_ASSERT( expected == actual ); +} + + +void +StringToolsTest::testSplitItemEmpty() +{ + std::string text = "1;"; + CPPUNIT_NS::StringTools::Strings expected; + expected.push_back( "1" ); + expected.push_back( "" ); + CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' ); + + CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() ); + CPPUNIT_ASSERT( expected == actual ); +} + + +void +StringToolsTest::testSplitTwoItem() +{ + std::string text = "2;1"; + CPPUNIT_NS::StringTools::Strings expected; + expected.push_back( "2" ); + expected.push_back( "1" ); + CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' ); + + CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() ); + CPPUNIT_ASSERT( expected == actual ); +} + + +void +StringToolsTest::testSplitEmptyTwoItem() +{ + std::string text = ";1;2"; + CPPUNIT_NS::StringTools::Strings expected; + expected.push_back( "" ); + expected.push_back( "1" ); + expected.push_back( "2" ); + CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' ); + + CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() ); + CPPUNIT_ASSERT( expected == actual ); +} + + +void +StringToolsTest::testSplitEmptyItemEmpty() +{ + std::string text = ";1;"; + CPPUNIT_NS::StringTools::Strings expected; + expected.push_back( "" ); + expected.push_back( "1" ); + expected.push_back( "" ); + CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' ); + + CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() ); + CPPUNIT_ASSERT( expected == actual ); +} + + +void +StringToolsTest::testSplitEmptyItemEmptyEmptyItem() +{ + std::string text = ";1;;;2"; + CPPUNIT_NS::StringTools::Strings expected; + expected.push_back( "" ); + expected.push_back( "1" ); + expected.push_back( "" ); + expected.push_back( "" ); + expected.push_back( "2" ); + CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' ); + + CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() ); + CPPUNIT_ASSERT( expected == actual ); +} + + +void +StringToolsTest::testWrapEmpty() +{ + std::string text = ""; + std::string expected = ""; + + std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +StringToolsTest::testWrapNotNeeded() +{ + std::string text = "abcd"; + std::string expected = text; + + std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +StringToolsTest::testWrapLimitNotNeeded() +{ + std::string text = "abcdef"; + std::string expected = text; + + std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +StringToolsTest::testWrapOneNeeded() +{ + std::string text = "abcdefghi"; + std::string expected = "abcdef\nghi"; + + std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +StringToolsTest::testWrapTwoNeeded() +{ + std::string text = "abcdefghijklmnop"; + std::string expected = "abcdef\nghijkl\nmnop"; + + std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +StringToolsTest::testWrapLimitTwoNeeded() +{ + std::string text = "abcdefghijklmnopqr"; + std::string expected = "abcdef\nghijkl\nmnopqr"; + + std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +StringToolsTest::testWrapOneNeededTwoNeeded() +{ + std::string text = "123456789\nabcdefghijklmno"; + std::string expected = "123456\n789\nabcdef\nghijkl\nmno"; + + std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +StringToolsTest::testWrapNotNeededEmptyLinesOneNeeded() +{ + std::string text = "12345\n\n\n\nabcdefghi"; + std::string expected = "12345\n\n\n\nabcdef\nghi"; + + std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 ); + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + diff --git a/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.h b/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.h new file mode 100644 index 0000000000..05a834ac60 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.h @@ -0,0 +1,74 @@ +#ifndef STRINGTOOLSTEST_H +#define STRINGTOOLSTEST_H + +#include +#include + + +/// Unit tests for StringToolsTest +class StringToolsTest : public CPPUNIT_NS::TestCase +{ + CPPUNIT_TEST_SUITE( StringToolsTest ); + CPPUNIT_TEST( testToStringInt ); + CPPUNIT_TEST( testToStringDouble ); + CPPUNIT_TEST( testSplitEmptyString ); + CPPUNIT_TEST( testSplitOneItem ); + CPPUNIT_TEST( testSplitItemEmpty ); + CPPUNIT_TEST( testSplitTwoItem ); + CPPUNIT_TEST( testSplitEmptyTwoItem ); + CPPUNIT_TEST( testSplitEmptyItemEmpty ); + CPPUNIT_TEST( testSplitEmptyItemEmptyEmptyItem ); + CPPUNIT_TEST( testWrapEmpty ); + CPPUNIT_TEST( testWrapNotNeeded ); + CPPUNIT_TEST( testWrapLimitNotNeeded ); + CPPUNIT_TEST( testWrapOneNeeded ); + CPPUNIT_TEST( testWrapTwoNeeded ); + CPPUNIT_TEST( testWrapLimitTwoNeeded ); + CPPUNIT_TEST( testWrapOneNeededTwoNeeded ); + CPPUNIT_TEST( testWrapNotNeededEmptyLinesOneNeeded ); + CPPUNIT_TEST_SUITE_END(); + +public: + /*! Constructs a StringToolsTest object. + */ + StringToolsTest(); + + /// Destructor. + virtual ~StringToolsTest(); + + void setUp(); + void tearDown(); + + void testToStringInt(); + void testToStringDouble(); + + void testSplitEmptyString(); + void testSplitOneItem(); + void testSplitItemEmpty(); + void testSplitTwoItem(); + void testSplitEmptyTwoItem(); + void testSplitEmptyItemEmpty(); + void testSplitEmptyItemEmptyEmptyItem(); + + void testWrapEmpty(); + void testWrapNotNeeded(); + void testWrapLimitNotNeeded(); + void testWrapOneNeeded(); + void testWrapTwoNeeded(); + void testWrapLimitTwoNeeded(); + void testWrapOneNeededTwoNeeded(); + void testWrapNotNeededEmptyLinesOneNeeded(); + +private: + /// Prevents the use of the copy constructor. + StringToolsTest( const StringToolsTest &other ); + + /// Prevents the use of the copy operator. + void operator =( const StringToolsTest &other ); + +private: +}; + + + +#endif // STRINGTOOLSTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.cpp b/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.cpp new file mode 100644 index 0000000000..ac39697ec7 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.cpp @@ -0,0 +1,36 @@ +#include "SubclassedTestCase.h" + + +SubclassedTestCase::SubclassedTestCase() +{ +} + + +SubclassedTestCase::~SubclassedTestCase() +{ +} + + +void +SubclassedTestCase::setUp() +{ +} + + +void +SubclassedTestCase::tearDown() +{ +} + + +void +SubclassedTestCase::checkIt() +{ + CPPUNIT_ASSERT( false ); +} + + +void +SubclassedTestCase::testSubclassing() +{ +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.h b/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.h new file mode 100644 index 0000000000..84e6e7ffe0 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.h @@ -0,0 +1,35 @@ +#ifndef SUBCLASSEDTESTCASE_H +#define SUBCLASSEDTESTCASE_H + +#include "BaseTestCase.h" + + +class SubclassedTestCase : public BaseTestCase +{ + CPPUNIT_TEST_SUB_SUITE( SubclassedTestCase, BaseTestCase ); + CPPUNIT_TEST( testSubclassing ); + CPPUNIT_TEST_SUITE_END(); + +public: + SubclassedTestCase(); + virtual ~SubclassedTestCase(); + + virtual void setUp(); + virtual void tearDown(); + + // Another test to ensure the subclassed test case are in the suite . + void testSubclassing(); + +protected: + // We overload this method to ensure that the testUsingCheckIt in the + // parent class will fail. + virtual void checkIt(); + +private: + SubclassedTestCase( const SubclassedTestCase © ); + void operator =( const SubclassedTestCase © ); +}; + + + +#endif // SUBCLASSEDTESTCASE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/SynchronizedTestResult.h b/lib/cppunit-1.10.0/examples/cppunittest/SynchronizedTestResult.h new file mode 100644 index 0000000000..284a6396b4 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/SynchronizedTestResult.h @@ -0,0 +1,55 @@ +#ifndef SYNCHRONIZEDTESTRESULT_H +#define SYNCHRONIZEDTESTRESULT_H + +#include + + +class SynchronizedTestResult : public CPPUNIT_NS::TestResultCollector +{ +public: + + class SynchronizationObjectListener + { + public: + virtual ~SynchronizationObjectListener() {} + virtual void locked() {} + virtual void unlocked() {} + }; + + class ObservedSynchronizationObject : public CPPUNIT_NS::SynchronizedObject::SynchronizationObject + { + public: + ObservedSynchronizationObject( SynchronizationObjectListener *listener ) : + m_listener( listener ) + { + } + + virtual ~ObservedSynchronizationObject() + { + } + + virtual void lock() + { + m_listener->locked(); + } + + virtual void unlock() + { + m_listener->unlocked(); + } + + private: + SynchronizationObjectListener *m_listener; + }; + + + SynchronizedTestResult( SynchronizationObjectListener *listener ) + { + setSynchronizationObject( new ObservedSynchronizationObject( listener ) ); + } + + virtual ~SynchronizedTestResult() {} + +}; + +#endif // SYNCHRONIZEDTESTRESULT_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.cpp new file mode 100644 index 0000000000..c65d97bc99 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.cpp @@ -0,0 +1,200 @@ +#include "CoreSuite.h" +#include "TestAssertTest.h" +#include + +/* + Note: + - tests need to be added to test asserEquals() template function and + use of assertion traits. Some check may need to be added to check + the message content in Exception. + - code need to be refactored with the use of a test caller that expect + an exception. + */ + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestAssertTest, + coreSuiteName() ); + + +TestAssertTest::TestAssertTest() +{ +} + + +TestAssertTest::~TestAssertTest() +{ +} + + +void +TestAssertTest::setUp() +{ +} + + +void +TestAssertTest::tearDown() +{ +} + + +void +TestAssertTest::testAssertThrow() +{ + CPPUNIT_ASSERT_THROW( throw std::exception(), std::exception ); + + try + { + CPPUNIT_ASSERT_THROW( 1234, std::exception ); + } + catch ( CPPUNIT_NS::Exception & ) + { + return; + } + + throw std::exception(); +} + + +void +TestAssertTest::testAssertNoThrow() +{ + CPPUNIT_ASSERT_NO_THROW( 1234 ); + + try + { + CPPUNIT_ASSERT_NO_THROW( throw std::exception() ); + } + catch ( CPPUNIT_NS::Exception & ) + { + return; + } + throw std::exception(); +} + + +void +TestAssertTest::testAssertAssertionFail() +{ + CPPUNIT_ASSERT_ASSERTION_FAIL( throw CPPUNIT_NS::Exception() ); + + try + { + CPPUNIT_ASSERT_ASSERTION_FAIL( 1234 ); + } + catch ( CPPUNIT_NS::Exception & ) + { + return; + } + + throw std::exception(); +} + + +void +TestAssertTest::testAssertAssertionPass() +{ + CPPUNIT_ASSERT_ASSERTION_PASS( 1234 ); + + try + { + CPPUNIT_ASSERT_ASSERTION_PASS( throw CPPUNIT_NS::Exception() ); + } + catch ( CPPUNIT_NS::Exception & ) + { + return; + } + + throw std::exception(); +} + + +void +TestAssertTest::testAssert() +{ + CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT( true ) ); + + CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT( false ) ); +} + + +static int foo() { return 1; } + + +void +TestAssertTest::testAssertEqual() +{ + CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_EQUAL( 1, 1 ) ); + CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_EQUAL( 1, foo() ) ); + CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_EQUAL( 12345678, 12345678 ) ); + + CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_EQUAL( 1, 2 ) ); +} + + +void +TestAssertTest::testAssertMessageTrue() +{ + CPPUNIT_ASSERT_ASSERTION_PASS( + CPPUNIT_ASSERT_MESSAGE( "This test should not failed", true ) ); +} + + +void +TestAssertTest::testAssertMessageFalse() +{ + bool exceptionCaught = false; + std::string message( "This test message should not be seen" ); + try + { + CPPUNIT_ASSERT_MESSAGE( message, 2==3 ); + } + catch( CPPUNIT_NS::Exception &e ) + { + exceptionCaught = true; // ok, we were expecting an exception. + checkMessageContains( &e, message ); + } + + CPPUNIT_ASSERT( exceptionCaught ); +} + + +void +TestAssertTest::testAssertDoubleEquals() +{ + CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.1, 1.2, 0.101 ) ); + CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.2, 1.1, 0.101 ) ); + + CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.1, 1.2, 0.09 ) ); + CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.2, 1.1, 0.09 ) ); +} + + +void +TestAssertTest::testFail() +{ + bool exceptionCaught = false; + std::string failure( "FailureMessage" ); + try + { + CPPUNIT_FAIL( failure ); + } + catch( CPPUNIT_NS::Exception &e ) + { + exceptionCaught = true; + checkMessageContains( &e, failure ); + } + CPPUNIT_ASSERT( exceptionCaught ); +} + + +void +TestAssertTest::checkMessageContains( CPPUNIT_NS::Exception *e, + std::string expected ) +{ + std::string actual = e->what(); + CPPUNIT_ASSERT_MESSAGE( "Expected message not found: " + expected + + ", was: " + actual, + std::search( actual.begin(), actual.end(), + expected.begin(), expected.end() ) != actual.end() ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.h new file mode 100644 index 0000000000..636cb3a364 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.h @@ -0,0 +1,67 @@ +#ifndef TESTASSERTTEST_H +#define TESTASSERTTEST_H + +#include + + +class TestAssertTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TestAssertTest ); + CPPUNIT_TEST( testAssertThrow ); + CPPUNIT_TEST( testAssertNoThrow ); + CPPUNIT_TEST( testAssertAssertionFail ); + CPPUNIT_TEST( testAssertAssertionPass ); + CPPUNIT_TEST( testAssert ); + CPPUNIT_TEST( testAssertEqual ); + CPPUNIT_TEST( testAssertMessageTrue ); + CPPUNIT_TEST( testAssertMessageFalse ); + CPPUNIT_TEST( testAssertDoubleEquals ); + CPPUNIT_TEST( testFail ); + CPPUNIT_TEST_SUITE_END(); + +public: + TestAssertTest(); + + virtual ~TestAssertTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testAssertThrow(); + void testAssertNoThrow(); + void testAssertAssertionFail(); + void testAssertAssertionPass(); + + void testBasicAssertions(); + + void testAssert(); + + void testAssertEqual(); + + void testAssertMessageTrue(); + void testAssertMessageFalse(); + + void testAssertDoubleEquals(); + void testAssertDoubleNotEquals1(); + void testAssertDoubleNotEquals2(); + + void testAssertLongEquals(); + void testAssertLongNotEquals(); + + void testFail(); + +private: + TestAssertTest( const TestAssertTest © ); + void operator =( const TestAssertTest © ); + + void checkDoubleNotEquals( double expected, + double actual, + double delta ); + + void checkMessageContains( CPPUNIT_NS::Exception *e, + std::string expectedMessage ); + +private: +}; + +#endif // TESTASSERTTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.cpp new file mode 100644 index 0000000000..f5f4d7d38d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.cpp @@ -0,0 +1,219 @@ +#include "FailureException.h" +#include "HelperSuite.h" +#include "TestCallerTest.h" +#include + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestCallerTest, + helperSuiteName() ); + + +void +TestCallerTest::ExceptionThrower::testThrowFailureException() +{ + throw FailureException(); +} + + +void +TestCallerTest::ExceptionThrower::testThrowException() +{ + throw CPPUNIT_NS::Exception( CPPUNIT_NS::Message( "expected Exception" ) ); +} + + +void +TestCallerTest::ExceptionThrower::testThrowNothing() +{ +} + + + +TestCallerTest::TestCallerTest() : + m_testName( "TrackedTestCaseCaller" ) +{ +} + + +TestCallerTest::~TestCallerTest() +{ +} + + +void +TestCallerTest::setUp() +{ + m_constructorCount = 0; + m_destructorCount = 0; + m_setUpCount = 0; + m_tearDownCount = 0; + m_testCount = 0; + TrackedTestCase::setTracker( this ); + m_testListener = new MockTestListener( "listener1" ); + m_result = new CPPUNIT_NS::TestResult(); + m_result->addListener( m_testListener ); +} + + +void +TestCallerTest::tearDown() +{ + TrackedTestCase::removeTracker(); + delete m_result; + delete m_testListener; +} + + +void +TestCallerTest::onConstructor() +{ + m_constructorCount++; +} + + +void +TestCallerTest::onDestructor() +{ + m_destructorCount++; +} + + +void +TestCallerTest::onSetUp() +{ + m_setUpCount++; +} + + +void +TestCallerTest::onTearDown() +{ + m_tearDownCount++; +} + + +void +TestCallerTest::onTest() +{ + m_testCount++; +} + + +void +TestCallerTest::testBasicConstructor() +{ + { + CPPUNIT_NS::TestCaller caller( m_testName, + &TrackedTestCase::test ); + checkTestName( caller.getName() ); + checkNothingButConstructorCalled(); + + caller.run( m_result ); + + checkRunningSequenceCalled(); + } // Force destruction of the test caller. + CPPUNIT_ASSERT_EQUAL( 1, m_destructorCount ); +} + + +void +TestCallerTest::testReferenceConstructor() +{ + TrackedTestCase testCase; + { + CPPUNIT_NS::TestCaller caller( "TrackedTestCaseCaller", + &TrackedTestCase::test, + testCase ); + checkTestName( caller.getName() ); + checkNothingButConstructorCalled(); + + caller.run( m_result ); + + checkRunningSequenceCalled(); + } // Force destruction of the test caller. + CPPUNIT_ASSERT_EQUAL( 0, m_destructorCount ); +} + + +void +TestCallerTest::testPointerConstructor() +{ + TrackedTestCase *testCase = new TrackedTestCase(); + { + CPPUNIT_NS::TestCaller caller( m_testName, + &TrackedTestCase::test, + testCase ); + checkTestName( caller.getName() ); + checkNothingButConstructorCalled(); + + caller.run( m_result ); + + checkRunningSequenceCalled(); + } // Force destruction of the test caller. + CPPUNIT_ASSERT_EQUAL( 1, m_destructorCount ); +} + +/* +// Now done by ExceptionTestCaseDecorator + +void +TestCallerTest::testExpectFailureException() +{ + CPPUNIT_NS::TestCaller caller( + m_testName, + &ExceptionThrower::testThrowFailureException ); + m_testListener->setExpectNoFailure(); + caller.run( m_result ); + m_testListener->verify(); +} + + +void +TestCallerTest::testExpectException() +{ + CPPUNIT_NS::TestCaller caller( + m_testName, + &ExceptionThrower::testThrowException ); + m_testListener->setExpectNoFailure(); + caller.run( m_result ); + m_testListener->verify(); +} + + +void +TestCallerTest::testExpectedExceptionNotCaught() +{ + CPPUNIT_NS::TestCaller caller( + m_testName, + &ExceptionThrower::testThrowNothing ); + m_testListener->setExpectedAddFailureCall( 1 ); + caller.run( m_result ); + m_testListener->verify(); +} +*/ + +void +TestCallerTest::checkNothingButConstructorCalled() +{ + CPPUNIT_ASSERT_EQUAL( 1, m_constructorCount ); + CPPUNIT_ASSERT_EQUAL( 0, m_destructorCount ); + CPPUNIT_ASSERT_EQUAL( 0, m_setUpCount ); + CPPUNIT_ASSERT_EQUAL( 0, m_tearDownCount ); + CPPUNIT_ASSERT_EQUAL( 0, m_testCount ); +} + + +void +TestCallerTest::checkRunningSequenceCalled() +{ + CPPUNIT_ASSERT_EQUAL( 1, m_setUpCount ); + CPPUNIT_ASSERT_EQUAL( 1, m_testCount ); + CPPUNIT_ASSERT_EQUAL( 1, m_tearDownCount ); +} + + +void +TestCallerTest::checkTestName( std::string testName ) +{ + CPPUNIT_ASSERT( testName == m_testName ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.h new file mode 100644 index 0000000000..b8c5a14cec --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.h @@ -0,0 +1,77 @@ +#ifndef TESTCALLERTEST_H +#define TESTCALLERTEST_H + +#include +#include +#include +#include +#include "MockTestListener.h" +#include "TrackedTestCase.h" + +class TestCallerTest : public CPPUNIT_NS::TestFixture, + Tracker +{ + CPPUNIT_TEST_SUITE( TestCallerTest ); + CPPUNIT_TEST( testBasicConstructor ); + CPPUNIT_TEST( testReferenceConstructor ); + CPPUNIT_TEST( testPointerConstructor ); +// CPPUNIT_TEST( testExpectFailureException ); +// CPPUNIT_TEST( testExpectException ); +// CPPUNIT_TEST( testExpectedExceptionNotCaught ); + CPPUNIT_TEST_SUITE_END(); +public: + TestCallerTest(); + virtual ~TestCallerTest(); + + void setUp(); + void tearDown(); + + void testBasicConstructor(); + void testReferenceConstructor(); + void testPointerConstructor(); + +// void testExpectFailureException(); +// void testExpectException(); +// void testExpectedExceptionNotCaught(); + +private: + class ExceptionThrower : public CPPUNIT_NS::TestCase + { + public: + void testThrowFailureException(); + void testThrowException(); + void testThrowNothing(); + }; + + virtual void onConstructor(); + virtual void onDestructor(); + virtual void onSetUp(); + virtual void onTearDown(); + virtual void onTest(); + + void checkNothingButConstructorCalled(); + void checkRunningSequenceCalled(); + void checkTestName( std::string testName ); + + TestCallerTest( const TestCallerTest © ); + void operator =( const TestCallerTest © ); + +private: + int m_constructorCount; + int m_destructorCount; + int m_setUpCount; + int m_tearDownCount; + int m_testCount; + const std::string m_testName; + MockTestListener *m_testListener; + CPPUNIT_NS::TestResult *m_result; +}; + + + +// Inlines methods for TestCallerTest: +// ----------------------------------- + + + +#endif // TESTCALLERTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.cpp new file mode 100644 index 0000000000..8ed31bbb6d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.cpp @@ -0,0 +1,161 @@ +#include "CoreSuite.h" +#include "FailureException.h" +#include "MockTestCase.h" +#include "TestCaseTest.h" +#include + +/* + - test have been done to check exception management in run(). other + tests need to be added to check the other aspect of TestCase. + */ + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestCaseTest, + coreSuiteName() ); + + +TestCaseTest::TestCaseTest() +{ +} + + +TestCaseTest::~TestCaseTest() +{ +} + + +void +TestCaseTest::setUp() +{ + m_testListener = new MockTestListener( "mock-testlistener" ); + m_result = new CPPUNIT_NS::TestResult(); + m_result->addListener( m_testListener ); +} + + +void +TestCaseTest::tearDown() +{ + delete m_result; + delete m_testListener; +} + + +void +TestCaseTest::testSetUpFailure() +{ + checkFailure( true, false, false ); +} + + +void +TestCaseTest::testRunTestFailure() +{ + checkFailure( false, true, false ); +} + + +void +TestCaseTest::testTearDownFailure() +{ + checkFailure( false, false, true ); +} + + +void +TestCaseTest::testFailAll() +{ + checkFailure( true, true, true ); +} + + +void +TestCaseTest::testNoFailure() +{ + checkFailure( false, false, false ); +} + + +void +TestCaseTest::checkFailure( bool failSetUp, + bool failRunTest, + bool failTearDown ) +{ + try + { + MockTestCase testCase( "mock-test" ); + if ( failSetUp ) + testCase.makeSetUpThrow(); + if ( failRunTest ) + testCase.makeRunTestThrow(); + if ( failTearDown ) + testCase.makeTearDownThrow(); + testCase.setExpectedSetUpCall( 1 ); + testCase.setExpectedRunTestCall( failSetUp ? 0 : 1 ); + testCase.setExpectedTearDownCall( failSetUp ? 0 : 1 ); + + testCase.run( m_result ); + + testCase.verify(); + } + catch ( FailureException & ) + { + CPPUNIT_ASSERT_MESSAGE( "exception should have been caught", false ); + } +} + + +void +TestCaseTest::testCountTestCases() +{ + CPPUNIT_NS::TestCase test; + CPPUNIT_ASSERT_EQUAL( 1, test.countTestCases() ); +} + + +void +TestCaseTest::testDefaultConstructor() +{ + CPPUNIT_NS::TestCase test; + CPPUNIT_ASSERT_EQUAL( std::string(""), test.getName() ); +} + + +void +TestCaseTest::testConstructorWithName() +{ + std::string testName( "TestName" ); + CPPUNIT_NS::TestCase test( testName ); + CPPUNIT_ASSERT_EQUAL( testName, test.getName() ); +} + + +void +TestCaseTest::testTwoRun() +{ + MockTestCase test1( "mocktest1" ); + test1.makeRunTestThrow(); + m_testListener->setExpectedStartTestCall( 2 ); + m_testListener->setExpectedAddFailureCall( 2 ); + m_testListener->setExpectedEndTestCall( 2 ); + + test1.run( m_result ); + test1.run( m_result ); + + m_testListener->verify(); +} + + +void +TestCaseTest::testGetChildTestCount() +{ + CPPUNIT_NS::TestCase test( "test" ); + CPPUNIT_ASSERT_EQUAL( 0, test.getChildTestCount() ); +} + + +void +TestCaseTest::testGetChildTestAtThrow() +{ + CPPUNIT_NS::TestCase test( "test" ); + test.getChildTestAt( 0 ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.h new file mode 100644 index 0000000000..48c73aef56 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.h @@ -0,0 +1,73 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestCaseTest.h for class TestCaseTest +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2000/06/09 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTCASETEST_H +#define TESTCASETEST_H + +#include +#include +#include "MockTestListener.h" +#include + + +class TestCaseTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TestCaseTest ); + CPPUNIT_TEST( testSetUpFailure ); + CPPUNIT_TEST( testRunTestFailure ); + CPPUNIT_TEST( testTearDownFailure ); + CPPUNIT_TEST( testFailAll ); + CPPUNIT_TEST( testNoFailure ); + CPPUNIT_TEST( testTwoRun ); + CPPUNIT_TEST( testCountTestCases ); + CPPUNIT_TEST( testDefaultConstructor ); + CPPUNIT_TEST( testConstructorWithName ); + CPPUNIT_TEST( testGetChildTestCount ); + CPPUNIT_TEST_EXCEPTION( testGetChildTestAtThrow, std::out_of_range ); + CPPUNIT_TEST_SUITE_END(); + +public: + TestCaseTest(); + + virtual ~TestCaseTest(); + + void setUp(); + void tearDown(); + + void testSetUpFailure(); + void testRunTestFailure(); + void testTearDownFailure(); + void testFailAll(); + void testNoFailure(); + void testTwoRun(); + + void testCountTestCases(); + + void testDefaultConstructor(); + void testConstructorWithName(); + + void testGetChildTestCount(); + void testGetChildTestAtThrow(); + +private: + TestCaseTest( const TestCaseTest © ); + void operator =( const TestCaseTest © ); + + void checkFailure( bool failSetUp, + bool failRunTest, + bool failTearDown ); +/* + void checkResult( int failures, + int errors, + int testsRun, + CPPUNIT_NS::TestResult *result ); +*/ +private: + CPPUNIT_NS::TestResult *m_result; + MockTestListener *m_testListener; +}; + + +#endif // TESTCASETEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.cpp new file mode 100644 index 0000000000..f90874b8b6 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.cpp @@ -0,0 +1,61 @@ +#include "ExtensionSuite.h" +#include "TestDecoratorTest.h" +#include + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestDecoratorTest, + extensionSuiteName() ); + + +TestDecoratorTest::TestDecoratorTest() +{ +} + + +TestDecoratorTest::~TestDecoratorTest() +{ +} + + +void +TestDecoratorTest::setUp() +{ + m_test = new MockTestCase( "mocktest" ); + m_decorator = new CPPUNIT_NS::TestDecorator( m_test ); +} + + +void +TestDecoratorTest::tearDown() +{ + delete m_decorator; +} + + +void +TestDecoratorTest::testCountTestCases() +{ + m_test->setExpectedCountTestCasesCall( 1 ); + CPPUNIT_ASSERT_EQUAL( 1, m_decorator->countTestCases() ); + m_test->verify(); +} + + +void +TestDecoratorTest::testRun() +{ + m_test->setExpectedSetUpCall( 1 ); + m_test->setExpectedRunTestCall( 1 ); + m_test->setExpectedTearDownCall( 1 ); + CPPUNIT_NS::TestResult result; + + m_decorator->run( &result ); + m_test->verify(); +} + + +void +TestDecoratorTest::testGetName() +{ + CPPUNIT_ASSERT_EQUAL( m_test->getName(), m_decorator->getName() ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.h new file mode 100644 index 0000000000..7a098c9d5f --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.h @@ -0,0 +1,39 @@ +#ifndef TESTDECORATORTEST_H +#define TESTDECORATORTEST_H + +#include +#include +#include "MockTestCase.h" + + +class TestDecoratorTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TestDecoratorTest ); + CPPUNIT_TEST( testCountTestCases ); + CPPUNIT_TEST( testRun ); + CPPUNIT_TEST( testGetName ); + CPPUNIT_TEST_SUITE_END(); + +public: + TestDecoratorTest(); + virtual ~TestDecoratorTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testCountTestCases(); + void testRun(); + void testGetName(); + +private: + TestDecoratorTest( const TestDecoratorTest © ); + void operator =( const TestDecoratorTest © ); + +private: + MockTestCase *m_test; + CPPUNIT_NS::TestDecorator *m_decorator; +}; + + + +#endif // TESTDECORATORTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.cpp new file mode 100644 index 0000000000..413460d512 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.cpp @@ -0,0 +1,70 @@ +#include "CoreSuite.h" +#include "TestFailureTest.h" +#include +#include + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestFailureTest, + coreSuiteName() ); + + +TestFailureTest::TestFailureTest() +{ +} + + +TestFailureTest::~TestFailureTest() +{ +} + + +void +TestFailureTest::setUp() +{ + m_exceptionDestroyed = false; +} + + +void +TestFailureTest::tearDown() +{ +} + + +void +TestFailureTest::testConstructorAndGetters() +{ + CPPUNIT_NS::TestCase test; + CPPUNIT_NS::Exception *error = new ObservedException( this ); + checkTestFailure( &test, error, false ); + CPPUNIT_ASSERT( m_exceptionDestroyed ); +} + + +void +TestFailureTest::testConstructorAndGettersForError() +{ + CPPUNIT_NS::TestCase test; + CPPUNIT_NS::Exception *error = new ObservedException( this ); + checkTestFailure( &test, error, true ); + CPPUNIT_ASSERT( m_exceptionDestroyed ); +} + + +void +TestFailureTest::exceptionDestroyed() +{ + m_exceptionDestroyed = true; +} + + +void +TestFailureTest::checkTestFailure( CPPUNIT_NS::Test *test, + CPPUNIT_NS::Exception *error, + bool isError ) +{ + CPPUNIT_NS::TestFailure failure( test, error, isError ); + CPPUNIT_ASSERT_EQUAL( test, failure.failedTest() ); + CPPUNIT_ASSERT_EQUAL( error, failure.thrownException() ); + CPPUNIT_ASSERT_EQUAL( isError, failure.isError() ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.h new file mode 100644 index 0000000000..84f41e900e --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.h @@ -0,0 +1,57 @@ +#ifndef TESTFAILURETEST_H +#define TESTFAILURETEST_H + +#include + + +class TestFailureTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TestFailureTest ); + CPPUNIT_TEST( testConstructorAndGetters ); + CPPUNIT_TEST( testConstructorAndGettersForError ); + CPPUNIT_TEST_SUITE_END(); + +public: + TestFailureTest(); + virtual ~TestFailureTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testConstructorAndGetters(); + void testConstructorAndGettersForError(); + + void exceptionDestroyed(); + +private: + class ObservedException : public CPPUNIT_NS::Exception + { + public: + ObservedException( TestFailureTest *listener ) : + CPPUNIT_NS::Exception( CPPUNIT_NS::Message("ObservedException" ) ), + m_listener( listener ) + { + } + + virtual ~ObservedException() throw() + { + m_listener->exceptionDestroyed(); + } + private: + TestFailureTest *m_listener; + }; + + + TestFailureTest( const TestFailureTest © ); + void operator =( const TestFailureTest © ); + void checkTestFailure( CPPUNIT_NS::Test *test, + CPPUNIT_NS::Exception *error, + bool isError ); + +private: + bool m_exceptionDestroyed; +}; + + + +#endif // TESTFAILURETEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.cpp new file mode 100644 index 0000000000..0f3d348994 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.cpp @@ -0,0 +1,490 @@ +#include "CoreSuite.h" +#include "TestPathTest.h" + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestPathTest, + coreSuiteName() ); + + +TestPathTest::TestPathTest() +{ +} + + +TestPathTest::~TestPathTest() +{ +} + + +void +TestPathTest::setUp() +{ + m_path = new CPPUNIT_NS::TestPath(); + m_test1 = new CPPUNIT_NS::TestCase( "test1" ); + m_test2 = new CPPUNIT_NS::TestCase( "test2" ); + m_test3 = new CPPUNIT_NS::TestCase( "test3" ); + m_test4 = new CPPUNIT_NS::TestCase( "test4" ); + + m_suite1 = new CPPUNIT_NS::TestSuite( "All Tests" ); + m_suite2 = new CPPUNIT_NS::TestSuite( "Custom" ); + m_testSuite2a = new CPPUNIT_NS::TestCase( "MyTest::testDefaultConstructor" ); + m_testSuite2b = new CPPUNIT_NS::TestCase( "MyTest::testConstructor" ); + m_suite2->addTest( m_testSuite2a ); + m_suite2->addTest( m_testSuite2b ); + m_suite1->addTest( m_suite2 ); +} + + +void +TestPathTest::tearDown() +{ + delete m_suite1; + delete m_path; + delete m_test4; + delete m_test3; + delete m_test2; + delete m_test1; +} + + +void +TestPathTest::testDefaultConstructor() +{ + CPPUNIT_ASSERT_EQUAL( 0, m_path->getTestCount() ); + CPPUNIT_ASSERT( !m_path->isValid() ); +} + + +void +TestPathTest::testAddTest() +{ + m_path->add( m_test1 ); + CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_path->isValid() ); + CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) ); +} + + +void +TestPathTest::testGetTestAtThrow1() +{ + m_path->getTestAt( 0 ); +} + + +void +TestPathTest::testGetTestAtThrow2() +{ + m_path->add( m_test1 ); + m_path->getTestAt( 1 ); +} + + +void +TestPathTest::testGetChildTest() +{ + m_path->add( m_test1 ); + CPPUNIT_ASSERT( m_test1 == m_path->getChildTest() ); +} + + +void +TestPathTest::testGetChildTestManyTests() +{ + m_path->add( m_test1 ); + m_path->add( m_test2 ); + m_path->add( m_test3 ); + CPPUNIT_ASSERT( m_test3 == m_path->getChildTest() ); +} + + +void +TestPathTest::testGetChildTestThrowIfNotValid() +{ + m_path->getChildTest(); +} + + +void +TestPathTest::testAddPath() +{ + CPPUNIT_NS::TestPath path; + path.add( m_test2 ); + path.add( m_test3 ); + + m_path->add( m_test1 ); + m_path->add( path ); + + CPPUNIT_ASSERT_EQUAL( 3, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) ); + CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) ); + CPPUNIT_ASSERT( m_test3 == m_path->getTestAt(2) ); +} + + +void +TestPathTest::testAddInvalidPath() +{ + CPPUNIT_NS::TestPath path; + m_path->add( path ); + + CPPUNIT_ASSERT( !m_path->isValid() ); +} + + +void +TestPathTest::testRemoveTests() +{ + m_path->add( m_test1 ); + m_path->add( m_test2 ); + + m_path->removeTests(); + + CPPUNIT_ASSERT( !m_path->isValid() ); +} + + +void +TestPathTest::testRemoveTest() +{ + m_path->add( m_test1 ); + m_path->add( m_test2 ); + + m_path->removeTest( 0 ); + + CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(0) ); +} + + +void +TestPathTest::testRemoveTestThrow1() +{ + m_path->removeTest( -1 ); +} + + +void +TestPathTest::testRemoveTestThrow2() +{ + m_path->add( m_test1 ); + + m_path->removeTest( 1 ); +} + + +void +TestPathTest::testUp() +{ + m_path->add( m_test1 ); + + m_path->up(); + + CPPUNIT_ASSERT( !m_path->isValid() ); +} + + +void +TestPathTest::testUpThrow() +{ + m_path->up(); +} + + +void +TestPathTest::testInsert() +{ + m_path->add( m_test1 ); + + m_path->insert( m_test2, 0 ); + + CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(0) ); + CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(1) ); +} + + +void +TestPathTest::testInsertAtEnd() +{ + m_path->add( m_test1 ); + + m_path->insert( m_test2, 1 ); + + CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) ); + CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) ); +} + + +void +TestPathTest::testInsertThrow1() +{ + m_path->insert( m_test1, -1 ); +} + + +void +TestPathTest::testInsertThrow2() +{ + m_path->add( m_test1 ); + + m_path->insert( m_test1, 2 ); +} + + +void +TestPathTest::testInsertPath() +{ + CPPUNIT_NS::TestPath path; + path.add( m_test2 ); + path.add( m_test3 ); + + m_path->add( m_test1 ); + m_path->add( m_test4 ); + m_path->insert( path, 1 ); + + CPPUNIT_ASSERT_EQUAL( 4, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) ); + CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) ); + CPPUNIT_ASSERT( m_test3 == m_path->getTestAt(2) ); + CPPUNIT_ASSERT( m_test4 == m_path->getTestAt(3) ); +} + + +void +TestPathTest::testInsertPathThrow() +{ + CPPUNIT_NS::TestPath path; + path.add( m_test2 ); + + m_path->insert( path, 1 ); +} + + +void +TestPathTest::testInsertPathDontThrowIfInvalid() +{ + CPPUNIT_NS::TestPath path; + m_path->insert( path, 1 ); +} + + +void +TestPathTest::testRootConstructor() +{ + CPPUNIT_NS::TestPath path( m_test1 ); + CPPUNIT_ASSERT( path.isValid() ); + CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() ); + CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) ); +} + + +void +TestPathTest::testPathSliceConstructorCopyUntilEnd() +{ + m_path->add( m_test1 ); + m_path->add( m_test2 ); + m_path->add( m_test3 ); + + CPPUNIT_NS::TestPath path( *m_path, 1 ); + + CPPUNIT_ASSERT_EQUAL( 2, path.getTestCount() ); + CPPUNIT_ASSERT( m_test2 == path.getTestAt(0) ); + CPPUNIT_ASSERT( m_test3 == path.getTestAt(1) ); +} + + +void +TestPathTest::testPathSliceConstructorCopySpecifiedCount() +{ + m_path->add( m_test1 ); + m_path->add( m_test2 ); + m_path->add( m_test3 ); + + CPPUNIT_NS::TestPath path( *m_path, 0, 1 ); + + CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() ); + CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) ); +} + + +void +TestPathTest::testPathSliceConstructorCopyNone() +{ + m_path->add( m_test1 ); + + CPPUNIT_NS::TestPath path( *m_path, 0, 0 ); + CPPUNIT_ASSERT_EQUAL( 0, path.getTestCount() ); +} + + +void +TestPathTest::testPathSliceConstructorNegativeIndex() +{ + m_path->add( m_test1 ); + m_path->add( m_test2 ); + + CPPUNIT_NS::TestPath path( *m_path, -1, 2 ); + + CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() ); + CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) ); +} + + +void +TestPathTest::testPathSliceConstructorAfterEndIndex() +{ + m_path->add( m_test1 ); + m_path->add( m_test2 ); + + CPPUNIT_NS::TestPath path( *m_path, 2, 5 ); + + CPPUNIT_ASSERT_EQUAL( 0, path.getTestCount() ); +} + + +void +TestPathTest::testPathSliceConstructorNegativeIndexUntilEnd() +{ + m_path->add( m_test1 ); + m_path->add( m_test2 ); + + CPPUNIT_NS::TestPath path( *m_path, -1 ); + + CPPUNIT_ASSERT_EQUAL( 2, path.getTestCount() ); + CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) ); + CPPUNIT_ASSERT( m_test2 == path.getTestAt(1) ); +} + + +void +TestPathTest::testPathSliceConstructorNegativeIndexNone() +{ + m_path->add( m_test1 ); + m_path->add( m_test2 ); + + CPPUNIT_NS::TestPath path( *m_path, -2, 1 ); + + CPPUNIT_ASSERT_EQUAL( 0, path.getTestCount() ); +} + + +void +TestPathTest::testToStringNoTest() +{ + std::string expected = "/"; + std::string actual = m_path->toString(); + + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +TestPathTest::testToStringOneTest() +{ + m_path->add( m_test1 ); + + std::string expected = "/test1"; + std::string actual = m_path->toString(); + + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +TestPathTest::testToStringHierarchy() +{ + m_path->add( m_suite1 ); + m_path->add( m_suite2 ); + m_path->add( m_suite2->getChildTestAt(0) ); + + std::string expected = "/All Tests/Custom/MyTest::testDefaultConstructor"; + std::string actual = m_path->toString(); + + CPPUNIT_ASSERT_EQUAL( expected, actual ); +} + + +void +TestPathTest::testPathStringConstructorRoot() +{ + CPPUNIT_NS::TestPath path( m_suite1, "/All Tests" ); + + CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() ); + CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) ); +} + + +void +TestPathTest::testPathStringConstructorEmptyIsRoot() +{ + CPPUNIT_NS::TestPath path( m_suite1, "" ); + + CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() ); + CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) ); +} + + +void +TestPathTest::testPathStringConstructorHierarchy() +{ + CPPUNIT_NS::TestPath path( m_suite1, "/All Tests/Custom/MyTest::testDefaultConstructor" ); + + CPPUNIT_ASSERT_EQUAL( 3, path.getTestCount() ); + CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) ); + CPPUNIT_ASSERT( m_suite2 == path.getTestAt(1) ); + CPPUNIT_ASSERT( m_testSuite2a == path.getTestAt(2) ); +} + + +void +TestPathTest::testPathStringConstructorBadRootThrow() +{ + CPPUNIT_NS::TestPath path( m_suite1, "/Custom" ); +} + + +void +TestPathTest::testPathStringConstructorRelativeRoot() +{ + CPPUNIT_NS::TestPath path( m_suite1, "All Tests" ); + + CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() ); + CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) ); +} + + +void +TestPathTest::testPathStringConstructorRelativeRoot2() +{ + CPPUNIT_NS::TestPath path( m_suite1, "Custom" ); + + CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() ); + CPPUNIT_ASSERT( m_suite2 == path.getTestAt(0) ); +} + + +void +TestPathTest::testPathStringConstructorThrow1() +{ + CPPUNIT_NS::TestPath path( m_suite1, "/" ); +} + + +void +TestPathTest::testPathStringConstructorRelativeHierarchy() +{ + CPPUNIT_NS::TestPath path( m_suite1, "Custom/MyTest::testConstructor" ); + + CPPUNIT_ASSERT_EQUAL( 2, path.getTestCount() ); + CPPUNIT_ASSERT( m_suite2 == path.getTestAt(0) ); + CPPUNIT_ASSERT( m_testSuite2b == path.getTestAt(1) ); +} + + +void +TestPathTest::testPathStringConstructorBadRelativeHierarchyThrow() +{ + CPPUNIT_NS::TestPath path( m_suite1, "Custom/MyBadTest::testConstructor" ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.h new file mode 100644 index 0000000000..655a807274 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.h @@ -0,0 +1,142 @@ +#ifndef TESTPATHTEST_H +#define TESTPATHTEST_H + +#include +#include +#include +#include + + +/*! \class TestPathTest + * \brief Unit tests for class TestPath. + */ +class TestPathTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TestPathTest ); + CPPUNIT_TEST( testDefaultConstructor ); + CPPUNIT_TEST( testAddTest ); + CPPUNIT_TEST_EXCEPTION( testGetTestAtThrow1, std::out_of_range ); + CPPUNIT_TEST_EXCEPTION( testGetTestAtThrow2, std::out_of_range ); + CPPUNIT_TEST( testGetChildTest ); + CPPUNIT_TEST( testGetChildTestManyTests ); + CPPUNIT_TEST_EXCEPTION( testGetChildTestThrowIfNotValid, std::out_of_range ); + CPPUNIT_TEST( testAddPath ); + CPPUNIT_TEST( testAddInvalidPath ); + CPPUNIT_TEST( testRemoveTests ); + CPPUNIT_TEST( testRemoveTest ); + CPPUNIT_TEST_EXCEPTION( testRemoveTestThrow1, std::out_of_range ); + CPPUNIT_TEST_EXCEPTION( testRemoveTestThrow2, std::out_of_range ); + CPPUNIT_TEST( testUp ); + CPPUNIT_TEST_EXCEPTION( testUpThrow, std::out_of_range ); + CPPUNIT_TEST( testInsert ); + CPPUNIT_TEST( testInsertAtEnd ); + CPPUNIT_TEST_EXCEPTION( testInsertThrow1, std::out_of_range ); + CPPUNIT_TEST_EXCEPTION( testInsertThrow2, std::out_of_range ); + CPPUNIT_TEST( testInsertPath ); + CPPUNIT_TEST_EXCEPTION( testInsertPathThrow, std::out_of_range ); + CPPUNIT_TEST( testInsertPathDontThrowIfInvalid ); + CPPUNIT_TEST( testRootConstructor ); + CPPUNIT_TEST( testPathSliceConstructorCopyUntilEnd ); + CPPUNIT_TEST( testPathSliceConstructorCopySpecifiedCount ); + CPPUNIT_TEST( testPathSliceConstructorCopyNone ); + CPPUNIT_TEST( testPathSliceConstructorNegativeIndex ); + CPPUNIT_TEST( testPathSliceConstructorAfterEndIndex ); + CPPUNIT_TEST( testPathSliceConstructorNegativeIndexUntilEnd ); + CPPUNIT_TEST( testPathSliceConstructorNegativeIndexNone ); + CPPUNIT_TEST( testToStringNoTest ); + CPPUNIT_TEST( testToStringOneTest ); + CPPUNIT_TEST( testToStringHierarchy ); + CPPUNIT_TEST( testPathStringConstructorRoot ); + CPPUNIT_TEST( testPathStringConstructorEmptyIsRoot ); + CPPUNIT_TEST( testPathStringConstructorHierarchy ); + CPPUNIT_TEST_EXCEPTION( testPathStringConstructorBadRootThrow, std::invalid_argument ); + CPPUNIT_TEST( testPathStringConstructorRelativeRoot ); + CPPUNIT_TEST( testPathStringConstructorRelativeRoot2 ); + CPPUNIT_TEST_EXCEPTION( testPathStringConstructorThrow1, std::invalid_argument ); + CPPUNIT_TEST( testPathStringConstructorRelativeHierarchy ); + CPPUNIT_TEST_EXCEPTION( testPathStringConstructorBadRelativeHierarchyThrow, std::invalid_argument ); + CPPUNIT_TEST_SUITE_END(); + +public: + /*! Constructs a TestPathTest object. + */ + TestPathTest(); + + /// Destructor. + virtual ~TestPathTest(); + + void setUp(); + void tearDown(); + + void testDefaultConstructor(); + void testAddTest(); + void testGetTestAtThrow1(); + void testGetTestAtThrow2(); + void testGetChildTest(); + void testGetChildTestManyTests(); + void testGetChildTestThrowIfNotValid(); + + void testAddPath(); + void testAddInvalidPath(); + + void testRemoveTests(); + void testRemoveTest(); + void testRemoveTestThrow1(); + void testRemoveTestThrow2(); + void testUp(); + void testUpThrow(); + + void testInsert(); + void testInsertAtEnd(); + void testInsertThrow1(); + void testInsertThrow2(); + + void testInsertPath(); + void testInsertPathThrow(); + void testInsertPathDontThrowIfInvalid(); + + void testRootConstructor(); + void testPathSliceConstructorCopyUntilEnd(); + void testPathSliceConstructorCopySpecifiedCount(); + void testPathSliceConstructorCopyNone(); + void testPathSliceConstructorNegativeIndex(); + void testPathSliceConstructorAfterEndIndex(); + void testPathSliceConstructorNegativeIndexUntilEnd(); + void testPathSliceConstructorNegativeIndexNone(); + + void testToStringNoTest(); + void testToStringOneTest(); + void testToStringHierarchy(); + + void testPathStringConstructorRoot(); + void testPathStringConstructorEmptyIsRoot(); + void testPathStringConstructorHierarchy(); + void testPathStringConstructorBadRootThrow(); + void testPathStringConstructorRelativeRoot(); + void testPathStringConstructorRelativeRoot2(); + void testPathStringConstructorThrow1(); + void testPathStringConstructorRelativeHierarchy(); + void testPathStringConstructorBadRelativeHierarchyThrow(); + +private: + /// Prevents the use of the copy constructor. + TestPathTest( const TestPathTest © ); + + /// Prevents the use of the copy operator. + void operator =( const TestPathTest © ); + +private: + CPPUNIT_NS::TestPath *m_path; + CPPUNIT_NS::TestCase *m_test1; + CPPUNIT_NS::TestCase *m_test2; + CPPUNIT_NS::TestCase *m_test3; + CPPUNIT_NS::TestCase *m_test4; + CPPUNIT_NS::TestSuite *m_suite1; + CPPUNIT_NS::TestSuite *m_suite2; + CPPUNIT_NS::TestCase *m_testSuite2a; + CPPUNIT_NS::TestCase *m_testSuite2b; +}; + + + +#endif // TESTPATHTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.cpp new file mode 100644 index 0000000000..175250b958 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.cpp @@ -0,0 +1,297 @@ +#include "CoreSuite.h" +#include "TestResultCollectorTest.h" + + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestResultCollectorTest, + coreSuiteName() ); + + +TestResultCollectorTest::TestResultCollectorTest() +{ +} + + +TestResultCollectorTest::~TestResultCollectorTest() +{ +} + + +void +TestResultCollectorTest::setUp() +{ + m_lockCount = 0; + m_unlockCount = 0; + m_result = new CPPUNIT_NS::TestResultCollector(); + m_synchronizedResult = new SynchronizedTestResult( this ); + m_test = new CPPUNIT_NS::TestCase(); + m_test2 = new CPPUNIT_NS::TestCase(); +} + + +void +TestResultCollectorTest::tearDown() +{ + delete m_test2; + delete m_test; + delete m_synchronizedResult; + delete m_result; +} + + +void +TestResultCollectorTest::testConstructor() +{ + checkResult( 0, 0, 0 ); +} + + +void +TestResultCollectorTest::testAddTwoErrors() +{ + CPPUNIT_NS::Message errorMessage1( "First Error" ); + CPPUNIT_NS::Message errorMessage2( "Second Error" ); + { + CPPUNIT_NS::TestFailure failure1( m_test, + new CPPUNIT_NS::Exception( errorMessage1 ), + true ); + m_result->addFailure( failure1 ); + + CPPUNIT_NS::TestFailure failure2( m_test2, + new CPPUNIT_NS::Exception( errorMessage2 ), + true ); + m_result->addFailure( failure2 ); + } // ensure that the test result duplicate the failures. + + checkResult( 0, 2, 0 ); + checkFailure( m_result->failures()[0], + errorMessage1, + m_test, + true ); + checkFailure( m_result->failures()[1], + errorMessage2, + m_test2, + true ); +} + + +void +TestResultCollectorTest::testAddTwoFailures() +{ + CPPUNIT_NS::Message errorMessage1( "First Failure" ); + CPPUNIT_NS::Message errorMessage2( "Second Failure" ); + { + CPPUNIT_NS::TestFailure failure1( m_test, + new CPPUNIT_NS::Exception( errorMessage1 ), + false ); + m_result->addFailure( failure1 ); + + CPPUNIT_NS::TestFailure failure2( m_test2, + new CPPUNIT_NS::Exception( errorMessage2 ), + false ); + m_result->addFailure( failure2 ); + } // ensure that the test result duplicate the failures. + checkResult( 2, 0, 0 ); + checkFailure( m_result->failures()[0], + errorMessage1, + m_test, + false ); + checkFailure( m_result->failures()[1], + errorMessage2, + m_test2, + false ); +} + + +void +TestResultCollectorTest::testStartTest() +{ + m_result->startTest( m_test ); + m_result->startTest( m_test ); + checkResult( 0, 0, 2 ); +} + + +void +TestResultCollectorTest::testWasSuccessfulWithNoTest() +{ + checkWasSuccessful( true ); +} + + +void +TestResultCollectorTest::testWasSuccessfulWithErrors() +{ + addError( "Error1" ); + addError( "Error2" ); + checkWasSuccessful( false ); +} + + +void +TestResultCollectorTest::testWasSuccessfulWithFailures() +{ + addFailure( "Failure1" ); + addFailure( "Failure2" ); + checkWasSuccessful( false ); +} + + +void +TestResultCollectorTest::testWasSuccessfulWithErrorsAndFailures() +{ + addError( "Error1" ); + addFailure( "Failure2" ); + checkWasSuccessful( false ); +} + + +void +TestResultCollectorTest::testWasSuccessfulWithSuccessfulTest() +{ + m_result->startTest( m_test ); + m_result->endTest( m_test ); + m_result->startTest( m_test2 ); + m_result->endTest( m_test2 ); + checkWasSuccessful( true ); +} + + +void +TestResultCollectorTest::testSynchronizationAddFailure() +{ + addFailure( "Failure1", m_test, false, m_synchronizedResult ); + checkSynchronization(); +} + + +void +TestResultCollectorTest::testSynchronizationStartTest() +{ + m_synchronizedResult->startTest( m_test ); + checkSynchronization(); +} + + +void +TestResultCollectorTest::testSynchronizationRunTests() +{ + m_synchronizedResult->runTests(); + checkSynchronization(); +} + + +void +TestResultCollectorTest::testSynchronizationTestErrors() +{ + m_synchronizedResult->testErrors(); + checkSynchronization(); +} + + +void +TestResultCollectorTest::testSynchronizationTestFailures() +{ + m_synchronizedResult->testFailures(); + checkSynchronization(); +} + + +void +TestResultCollectorTest::testSynchronizationFailures() +{ + m_synchronizedResult->failures(); + checkSynchronization(); +} + + +void +TestResultCollectorTest::testSynchronizationWasSuccessful() +{ + m_synchronizedResult->wasSuccessful(); + checkSynchronization(); +} + + +void +TestResultCollectorTest::checkResult( int failures, + int errors, + int testsRun ) +{ + CPPUNIT_ASSERT_EQUAL( testsRun, m_result->runTests() ); + CPPUNIT_ASSERT_EQUAL( errors, m_result->testErrors() ); + CPPUNIT_ASSERT_EQUAL( failures, m_result->testFailures() ); + CPPUNIT_ASSERT_EQUAL( errors + failures, + m_result->testFailuresTotal() ); +} + + +void +TestResultCollectorTest::checkFailure( CPPUNIT_NS::TestFailure *failure, + CPPUNIT_NS::Message expectedMessage, + CPPUNIT_NS::Test *expectedTest, + bool expectedIsError ) +{ + CPPUNIT_NS::Message actualMessage( failure->thrownException()->message() ); + CPPUNIT_ASSERT( expectedMessage == actualMessage ); + CPPUNIT_ASSERT_EQUAL( expectedTest, failure->failedTest() ); + CPPUNIT_ASSERT_EQUAL( expectedIsError, failure->isError() ); +} + + +void +TestResultCollectorTest::checkWasSuccessful( bool shouldBeSuccessful ) +{ + CPPUNIT_ASSERT_EQUAL( shouldBeSuccessful, m_result->wasSuccessful() ); +} + + +void +TestResultCollectorTest::locked() +{ + CPPUNIT_ASSERT_EQUAL( m_lockCount, m_unlockCount ); + ++m_lockCount; +} + + +void +TestResultCollectorTest::unlocked() +{ + ++m_unlockCount; + CPPUNIT_ASSERT_EQUAL( m_lockCount, m_unlockCount ); +} + + +void +TestResultCollectorTest::checkSynchronization() +{ + CPPUNIT_ASSERT_EQUAL( m_lockCount, m_unlockCount ); + CPPUNIT_ASSERT( m_lockCount > 0 ); +} + + +void +TestResultCollectorTest::addFailure( std::string message ) +{ + addFailure( message, m_test, false, m_result ); +} + + +void +TestResultCollectorTest::addError( std::string message ) +{ + addFailure( message, m_test, true, m_result ); +} + + +void +TestResultCollectorTest::addFailure( std::string message, + CPPUNIT_NS::Test *failedTest, + bool isError, + CPPUNIT_NS::TestResultCollector *result ) +{ + CPPUNIT_NS::TestFailure failure( failedTest, + new CPPUNIT_NS::Exception( CPPUNIT_NS::Message( message ) ), + isError ); + result->addFailure( failure ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.h new file mode 100644 index 0000000000..bf7e5ae985 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.h @@ -0,0 +1,96 @@ +#ifndef TESTCOLLECTORRESULTTEST_H +#define TESTCOLLECTORRESULTTEST_H + +#include +#include +#include "SynchronizedTestResult.h" + + +class TestResultCollectorTest : public CPPUNIT_NS::TestFixture, + public SynchronizedTestResult::SynchronizationObjectListener +{ + CPPUNIT_TEST_SUITE( TestResultCollectorTest ); + CPPUNIT_TEST( testConstructor ); + CPPUNIT_TEST( testAddTwoErrors ); + CPPUNIT_TEST( testAddTwoFailures ); + CPPUNIT_TEST( testStartTest ); + CPPUNIT_TEST( testWasSuccessfulWithErrors ); + CPPUNIT_TEST( testWasSuccessfulWithFailures ); + CPPUNIT_TEST( testWasSuccessfulWithErrorsAndFailures ); + CPPUNIT_TEST( testWasSuccessfulWithSuccessfulTest ); + CPPUNIT_TEST( testSynchronizationAddFailure ); + CPPUNIT_TEST( testSynchronizationStartTest ); + CPPUNIT_TEST( testSynchronizationRunTests ); + CPPUNIT_TEST( testSynchronizationTestErrors ); + CPPUNIT_TEST( testSynchronizationTestFailures ); + CPPUNIT_TEST( testSynchronizationFailures ); + CPPUNIT_TEST( testSynchronizationWasSuccessful ); + CPPUNIT_TEST_SUITE_END(); + +public: + TestResultCollectorTest(); + virtual ~TestResultCollectorTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testConstructor(); + + void testAddTwoErrors(); + void testAddTwoFailures(); + void testStartTest(); + + void testWasSuccessfulWithNoTest(); + void testWasSuccessfulWithErrors(); + void testWasSuccessfulWithFailures(); + void testWasSuccessfulWithErrorsAndFailures(); + void testWasSuccessfulWithSuccessfulTest(); + + void testSynchronizationAddFailure(); + void testSynchronizationStartTest(); + void testSynchronizationRunTests(); + void testSynchronizationTestErrors(); + void testSynchronizationTestFailures(); + void testSynchronizationErrors(); + void testSynchronizationFailures(); + void testSynchronizationWasSuccessful(); + + virtual void locked(); + virtual void unlocked(); + +private: + TestResultCollectorTest( const TestResultCollectorTest © ); + void operator =( const TestResultCollectorTest © ); + + void checkResult( int failures, + int errors, + int testsRun ); + + void checkFailure( CPPUNIT_NS::TestFailure *failure, + CPPUNIT_NS::Message expectedMessage, + CPPUNIT_NS::Test *expectedTest, + bool expectedIsError ); + + void checkWasSuccessful( bool shouldBeSuccessful ); + + void checkSynchronization(); + + void addFailure( std::string message ); + void addError( std::string message ); + void addFailure( std::string message, + CPPUNIT_NS::Test *failedTest, + bool isError, + CPPUNIT_NS::TestResultCollector *result ); + +private: + CPPUNIT_NS::TestResultCollector *m_result; + SynchronizedTestResult *m_synchronizedResult; + CPPUNIT_NS::Test *m_test; + CPPUNIT_NS::Test *m_test2; + int m_lockCount; + int m_unlockCount; +}; + + + +#endif // TESTCOLLECTORRESULTTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.cpp new file mode 100644 index 0000000000..048aacd064 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.cpp @@ -0,0 +1,268 @@ +#include "CoreSuite.h" +#include "MockFunctor.h" +#include "MockProtector.h" +#include "MockTestCase.h" +#include "TestResultTest.h" + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestResultTest, + coreSuiteName() ); + + +TestResultTest::TestResultTest() +{ +} + + +TestResultTest::~TestResultTest() +{ +} + + +void +TestResultTest::setUp() +{ + m_result = new CPPUNIT_NS::TestResult(); + m_listener1 = new MockTestListener( "listener1" ); + m_listener2 = new MockTestListener( "listener2" ); + m_dummyTest = new MockTestCase( "dummy-test" ); +} + + +void +TestResultTest::tearDown() +{ + delete m_dummyTest; + delete m_listener1; + delete m_listener2; + delete m_result; +} + + +void +TestResultTest::testConstructor() +{ + CPPUNIT_ASSERT( !m_result->shouldStop() ); +} + + +void +TestResultTest::testStop() +{ + m_result->stop(); + CPPUNIT_ASSERT( m_result->shouldStop() ); +} + + +void +TestResultTest::testAddError() +{ + CPPUNIT_NS::Exception *dummyException = new CPPUNIT_NS::Exception( + CPPUNIT_NS::Message( "some_error" ) ); + m_listener1->setExpectFailure( m_dummyTest, dummyException, true ); + m_result->addListener( m_listener1 ); + + m_result->addError( m_dummyTest, dummyException ); + + m_listener1->verify(); +} + + +void +TestResultTest::testAddFailure() +{ + CPPUNIT_NS::Exception *dummyException = new CPPUNIT_NS::Exception( + CPPUNIT_NS::Message("some_error" ) ); + m_listener1->setExpectFailure( m_dummyTest, dummyException, false ); + m_result->addListener( m_listener1 ); + + m_result->addFailure( m_dummyTest, dummyException ); + + m_listener1->verify(); +} + + +void +TestResultTest::testStartTest() +{ + m_listener1->setExpectStartTest( m_dummyTest ); + m_result->addListener( m_listener1 ); + + m_result->startTest( m_dummyTest ); + + m_listener1->verify(); +} + + +void +TestResultTest::testEndTest() +{ + m_listener1->setExpectEndTest( m_dummyTest ); + m_result->addListener( m_listener1 ); + + m_result->endTest( m_dummyTest ); + + m_listener1->verify(); +} + + +void +TestResultTest::testStartSuite() +{ + m_listener1->setExpectStartSuite( m_dummyTest ); + m_result->addListener( m_listener1 ); + + m_result->startSuite( m_dummyTest ); + + m_listener1->verify(); +} + + +void +TestResultTest::testEndSuite() +{ + m_listener1->setExpectEndSuite( m_dummyTest ); + m_result->addListener( m_listener1 ); + + m_result->endSuite( m_dummyTest ); + + m_listener1->verify(); +} + + +void +TestResultTest::testRunTest() +{ + m_listener1->setExpectStartTestRun( m_dummyTest, m_result ); + m_listener1->setExpectEndTestRun( m_dummyTest, m_result ); + m_result->addListener( m_listener1 ); + + m_result->runTest( m_dummyTest ); + + m_listener1->verify(); +} + + +void +TestResultTest::testTwoListener() +{ + m_listener1->setExpectStartTest( m_dummyTest ); + m_listener2->setExpectStartTest( m_dummyTest ); + CPPUNIT_NS::Exception *dummyException1 = new CPPUNIT_NS::Exception( + CPPUNIT_NS::Message( "some_error" ) ); + m_listener1->setExpectFailure( m_dummyTest, dummyException1, true ); + m_listener2->setExpectFailure( m_dummyTest, dummyException1, true ); + m_listener1->setExpectEndTest( m_dummyTest ); + m_listener2->setExpectEndTest( m_dummyTest ); + m_result->addListener( m_listener1 ); + m_result->addListener( m_listener2 ); + + m_result->startTest( m_dummyTest ); + m_result->addError( m_dummyTest, dummyException1 ); + m_result->endTest( m_dummyTest ); + + m_listener1->verify(); + m_listener2->verify(); +} + + +void +TestResultTest::testDefaultProtectSucceed() +{ + MockFunctor functor; + functor.setShouldSucceed(); + m_listener1->setExpectNoFailure(); + + m_result->addListener( m_listener1 ); + CPPUNIT_ASSERT( m_result->protect( functor, m_dummyTest ) ); + m_listener1->verify(); + functor.verify(); +} + + +void +TestResultTest::testDefaultProtectFail() +{ + MockFunctor functor; + functor.setShouldFail(); + m_listener1->setExpectNoFailure(); + + m_result->addListener( m_listener1 ); + CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) ); + m_listener1->verify(); + functor.verify(); +} + + +void +TestResultTest::testDefaultProtectFailIfThrow() +{ + MockFunctor functor; + functor.setThrowFailureException(); + m_listener1->setExpectFailure(); + + m_result->addListener( m_listener1 ); + CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) ); + m_listener1->verify(); + functor.verify(); +} + + +void +TestResultTest::testProtectChainPushOneTrap() +{ + MockFunctor functor; + MockProtector *protector = new MockProtector(); + functor.setThrowMockProtectorException(); + protector->setExpectException(); + m_listener1->setExpectFailure(); + + m_result->pushProtector( protector ); + m_result->addListener( m_listener1 ); + CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) ); + protector->verify(); + m_listener1->verify(); + functor.verify(); +} + + +void +TestResultTest::testProtectChainPushOnePassThrough() +{ + MockFunctor functor; + MockProtector *protector = new MockProtector(); + functor.setThrowFailureException(); + protector->setExpectNoException(); + m_listener1->setExpectFailure(); + + m_result->pushProtector( protector ); + m_result->addListener( m_listener1 ); + CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) ); + protector->verify(); + m_listener1->verify(); + functor.verify(); +} + + +void +TestResultTest::testProtectChainPushTwoTrap() +{ + MockFunctor functor; + functor.setThrowMockProtectorException(); + // protector1 catch the exception retrown by protector2 + MockProtector *protector1 = new MockProtector(); + protector1->setExpectException(); + // protector2 catch the exception and rethrow it + MockProtector *protector2 = new MockProtector(); + protector2->setExpectCatchAndPropagateException(); + m_listener1->setExpectFailure(); + + m_result->pushProtector( protector1 ); + m_result->pushProtector( protector2 ); + m_result->addListener( m_listener1 ); + CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) ); + protector1->verify(); + protector2->verify(); + m_listener1->verify(); + functor.verify(); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.h new file mode 100644 index 0000000000..104944c189 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.h @@ -0,0 +1,72 @@ +#ifndef TESTRESULTTEST_H +#define TESTRESULTTEST_H + +#include +#include +#include "MockTestListener.h" + + +class TestResultTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TestResultTest ); + CPPUNIT_TEST( testConstructor ); + CPPUNIT_TEST( testStop ); + CPPUNIT_TEST( testAddError ); + CPPUNIT_TEST( testAddFailure ); + CPPUNIT_TEST( testStartTest ); + CPPUNIT_TEST( testEndTest ); + CPPUNIT_TEST( testStartSuite ); + CPPUNIT_TEST( testEndSuite ); + CPPUNIT_TEST( testRunTest ); + CPPUNIT_TEST( testTwoListener ); + CPPUNIT_TEST( testDefaultProtectSucceed ); + CPPUNIT_TEST( testDefaultProtectFail ); + CPPUNIT_TEST( testDefaultProtectFailIfThrow ); + CPPUNIT_TEST( testProtectChainPushOneTrap ); + CPPUNIT_TEST( testProtectChainPushOnePassThrough ); + CPPUNIT_TEST( testProtectChainPushTwoTrap ); + CPPUNIT_TEST_SUITE_END(); + +public: + TestResultTest(); + virtual ~TestResultTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testConstructor(); + void testStop(); + + void testAddError(); + void testAddFailure(); + void testStartTest(); + void testEndTest(); + void testStartSuite(); + void testEndSuite(); + void testRunTest(); + + void testTwoListener(); + + void testDefaultProtectSucceed(); + void testDefaultProtectFail(); + void testDefaultProtectFailIfThrow(); + + void testProtectChainPushOneTrap(); + void testProtectChainPushOnePassThrough(); + + void testProtectChainPushTwoTrap(); + +private: + TestResultTest( const TestResultTest © ); + void operator =( const TestResultTest © ); + +private: + CPPUNIT_NS::TestResult *m_result; + MockTestListener *m_listener1; + MockTestListener *m_listener2; + CPPUNIT_NS::Test *m_dummyTest; +}; + + + +#endif // TESTRESULTTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.cpp new file mode 100644 index 0000000000..20c4f24eed --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.cpp @@ -0,0 +1,47 @@ +#include "ExtensionSuite.h" +#include "TestSetUpTest.h" +#include +#include "MockTestCase.h" + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestSetUpTest, + extensionSuiteName() ); + + +TestSetUpTest::TestSetUpTest() +{ +} + + +TestSetUpTest::~TestSetUpTest() +{ +} + + +void +TestSetUpTest::setUp() +{ +} + + +void +TestSetUpTest::tearDown() +{ +} + + +void +TestSetUpTest::testRun() +{ + CPPUNIT_NS::TestResult result; + MockTestCase *test = new MockTestCase( "TestSetUpTest" ); + test->setExpectedSetUpCall(); + test->setExpectedRunTestCall(); + test->setExpectedTearDownCall(); + MockSetUp setUpTest( test ); + + setUpTest.run( &result ); + + setUpTest.verify(); + test->verify(); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.h new file mode 100644 index 0000000000..117473bd59 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.h @@ -0,0 +1,63 @@ +#ifndef TESTSETUPTEST_H +#define TESTSETUPTEST_H + +#include +#include + + +class TestSetUpTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TestSetUpTest ); + CPPUNIT_TEST( testRun ); + CPPUNIT_TEST_SUITE_END(); + +public: + TestSetUpTest(); + virtual ~TestSetUpTest(); + + void setUp(); + void tearDown(); + + void testRun(); + +private: + class MockSetUp : public CPPUNIT_NS::TestSetUp + { + public: + MockSetUp( CPPUNIT_NS::Test *test ) + : CPPUNIT_NS::TestSetUp( test ) + , m_setUpCalled( false ) + , m_tearDownCalled( false ) + { + } + + void setUp() + { + m_setUpCalled = true; + } + + void tearDown() + { + m_tearDownCalled = true; + } + + void verify() + { + CPPUNIT_ASSERT( m_setUpCalled ); + CPPUNIT_ASSERT( m_tearDownCalled ); + } + + private: + bool m_setUpCalled; + bool m_tearDownCalled; + }; + + TestSetUpTest( const TestSetUpTest © ); + void operator =( const TestSetUpTest © ); + +private: +}; + + + +#endif // TESTSETUPTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.cpp new file mode 100644 index 0000000000..ec4f4adc8f --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.cpp @@ -0,0 +1,179 @@ +#include "CoreSuite.h" +#include "TestSuiteTest.h" +#include +#include "MockTestCase.h" + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestSuiteTest, + coreSuiteName() ); + + +TestSuiteTest::TestSuiteTest() +{ +} + + +TestSuiteTest::~TestSuiteTest() +{ +} + + +void +TestSuiteTest::setUp() +{ + m_suite = new CPPUNIT_NS::TestSuite(); +} + + +void +TestSuiteTest::tearDown() +{ + delete m_suite; +} + + +void +TestSuiteTest::testConstructor() +{ + std::string name( "MySuite" ); + CPPUNIT_NS::TestSuite suite( name ); + CPPUNIT_ASSERT_EQUAL( name, suite.getName() ); +} + + +void +TestSuiteTest::testCountTestCasesWithNoTest() +{ + CPPUNIT_ASSERT_EQUAL( 0, m_suite->countTestCases() ); +} + + +void +TestSuiteTest::testCountTestCasesWithTwoTests() +{ + MockTestCase *case1 = new MockTestCase( "test1" ); + case1->setExpectedCountTestCasesCall(); + MockTestCase *case2 = new MockTestCase( "test2" ); + case2->setExpectedCountTestCasesCall(); + m_suite->addTest( case1 ); + m_suite->addTest( case2 ); + + CPPUNIT_ASSERT_EQUAL( 2, m_suite->countTestCases() ); + case1->verify(); + case2->verify(); +} + + +void +TestSuiteTest::testCountTestCasesWithSubSuite() +{ + MockTestCase *case1 = new MockTestCase( "test1" ); + case1->setExpectedCountTestCasesCall(); + MockTestCase *case2 = new MockTestCase( "test2" ); + case2->setExpectedCountTestCasesCall(); + MockTestCase *case3 = new MockTestCase( "test3" ); + case3->setExpectedCountTestCasesCall(); + CPPUNIT_NS::TestSuite *subSuite = new CPPUNIT_NS::TestSuite( "SubSuite"); + subSuite->addTest( case1 ); + subSuite->addTest( case2 ); + m_suite->addTest( case3 ); + m_suite->addTest( subSuite ); + + CPPUNIT_ASSERT_EQUAL( 3, m_suite->countTestCases() ); + case1->verify(); + case2->verify(); + case3->verify(); +} + + +void +TestSuiteTest::testRunWithOneTest() +{ + MockTestCase *case1 = new MockTestCase( "test1" ); + case1->setExpectedRunTestCall(); + m_suite->addTest( case1 ); + + CPPUNIT_NS::TestResult result; + m_suite->run( &result ); + + case1->verify(); +} + + +void +TestSuiteTest::testRunWithOneTestAndSubSuite() +{ + MockTestCase *case1 = new MockTestCase( "test1" ); + case1->setExpectedRunTestCall(); + MockTestCase *case2 = new MockTestCase( "test2" ); + case2->setExpectedRunTestCall(); + MockTestCase *case3 = new MockTestCase( "test3" ); + case3->setExpectedRunTestCall(); + CPPUNIT_NS::TestSuite *subSuite = new CPPUNIT_NS::TestSuite( "SubSuite"); + subSuite->addTest( case1 ); + subSuite->addTest( case2 ); + m_suite->addTest( case3 ); + m_suite->addTest( subSuite); + + CPPUNIT_NS::TestResult result; + m_suite->run( &result ); + + case1->verify(); + case2->verify(); + case3->verify(); +} + + +void +TestSuiteTest::testGetTests() +{ + m_suite->addTest( new CPPUNIT_NS::TestCase( "test1" ) ); + m_suite->addTest( new CPPUNIT_NS::TestCase( "test2" ) ); + CPPUNIT_ASSERT_EQUAL( 2, int(m_suite->getTests().size()) ); +} + + +void +TestSuiteTest::testDeleteContents() +{ + m_suite->addTest( new CPPUNIT_NS::TestCase( "test2" ) ); + m_suite->deleteContents(); + CPPUNIT_ASSERT_EQUAL( 0, int(m_suite->getTests().size()) ); +} + + +void +TestSuiteTest::testGetChildTestCount() +{ + m_suite->addTest( new CPPUNIT_NS::TestCase( "test1" ) ); + m_suite->addTest( new CPPUNIT_NS::TestCase( "test2" ) ); + + CPPUNIT_ASSERT_EQUAL( 2, m_suite->getChildTestCount() ); +} + + +void +TestSuiteTest::testGetChildTestAt() +{ + CPPUNIT_NS::TestCase *test1 = new CPPUNIT_NS::TestCase( "test1" ); + CPPUNIT_NS::TestCase *test2 = new CPPUNIT_NS::TestCase( "test2" ); + m_suite->addTest( test1 ); + m_suite->addTest( test2 ); + + CPPUNIT_ASSERT( test1 == m_suite->getChildTestAt(0) ); + CPPUNIT_ASSERT( test2 == m_suite->getChildTestAt(1) ); +} + + +void +TestSuiteTest::testGetChildTestAtThrow1() +{ + m_suite->getChildTestAt(-1); +} + + +void +TestSuiteTest::testGetChildTestAtThrow2() +{ + m_suite->getChildTestAt(0); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.h new file mode 100644 index 0000000000..cdb301ab02 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.h @@ -0,0 +1,60 @@ +#ifndef TESTSUITETEST_H +#define TESTSUITETEST_H + +#include +#include + + +class TestSuiteTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TestSuiteTest ); + CPPUNIT_TEST( testConstructor ); + CPPUNIT_TEST( testCountTestCasesWithNoTest ); + CPPUNIT_TEST( testCountTestCasesWithTwoTests ); + CPPUNIT_TEST( testCountTestCasesWithSubSuite ); + CPPUNIT_TEST( testRunWithOneTest ); + CPPUNIT_TEST( testRunWithOneTestAndSubSuite ); + CPPUNIT_TEST( testGetTests ); + CPPUNIT_TEST( testDeleteContents ); + CPPUNIT_TEST( testGetChildTestCount ); + CPPUNIT_TEST( testGetChildTestAt ); + CPPUNIT_TEST_EXCEPTION( testGetChildTestAtThrow1, std::out_of_range ); + CPPUNIT_TEST_EXCEPTION( testGetChildTestAtThrow2, std::out_of_range ); + CPPUNIT_TEST_SUITE_END(); + +public: + TestSuiteTest(); + virtual ~TestSuiteTest(); + + virtual void setUp(); + virtual void tearDown(); + + void testConstructor(); + + void testCountTestCasesWithNoTest(); + void testCountTestCasesWithTwoTests(); + void testCountTestCasesWithSubSuite(); + + void testRunWithOneTest(); + void testRunWithOneTestAndSubSuite(); + + void testGetTests(); + + void testDeleteContents(); + + void testGetChildTestCount(); + void testGetChildTestAt(); + void testGetChildTestAtThrow1(); + void testGetChildTestAtThrow2(); + +private: + TestSuiteTest( const TestSuiteTest © ); + void operator =( const TestSuiteTest © ); + +private: + CPPUNIT_NS::TestSuite *m_suite; +}; + + + +#endif // TESTSUITETEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestTest.cpp new file mode 100644 index 0000000000..4edc31c58c --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestTest.cpp @@ -0,0 +1,133 @@ +#include "CoreSuite.h" +#include "TestTest.h" + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestTest, + coreSuiteName() ); + + +TestTest::TestTest() : + CPPUNIT_NS::TestFixture() +{ +} + + +TestTest::~TestTest() +{ +} + + +void +TestTest::setUp() +{ + m_suite = new CPPUNIT_NS::TestSuite( "suite" ); + m_test1 = new MockTestCase( "test1" ); + m_test2 = new MockTestCase( "test2" ); + m_suite->addTest( m_test1 ); + m_suite->addTest( m_test2 ); + + m_path = new CPPUNIT_NS::TestPath(); +} + + +void +TestTest::tearDown() +{ + delete m_suite; + delete m_path; +} + + +void +TestTest::testFindTestPathPointerThis() +{ + CPPUNIT_ASSERT( m_test1->findTestPath( m_test1, *m_path ) ); + CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_test1 == m_path->getChildTest() ); + + m_path->removeTests(); + + CPPUNIT_ASSERT( m_suite->findTestPath( m_suite, *m_path ) ); + CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_suite == m_path->getChildTest() ); +} + + +void +TestTest::testFindTestPathPointer() +{ + CPPUNIT_ASSERT( m_suite->findTestPath( m_test1, *m_path ) ); + CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_suite == m_path->getTestAt(0) ); + CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(1) ); +} + + +void +TestTest::testFindTestPathPointerFail() +{ + MockTestCase test( "test" ); + CPPUNIT_ASSERT( !m_suite->findTestPath( &test, *m_path ) ); + CPPUNIT_ASSERT( !m_path->isValid() ); +} + + +void +TestTest::testFindTestPathNameThis() +{ + CPPUNIT_ASSERT( m_test1->findTestPath( "test1", *m_path ) ); + CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_test1 == m_path->getChildTest() ); + + m_path->removeTests(); + + CPPUNIT_ASSERT( m_suite->findTestPath( "suite", *m_path ) ); + CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_suite == m_path->getChildTest() ); +} + + +void +TestTest::testFindTestPathName() +{ + CPPUNIT_ASSERT( m_suite->findTestPath( "test2", *m_path ) ); + CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() ); + CPPUNIT_ASSERT( m_suite == m_path->getTestAt(0) ); + CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) ); +} + + +void +TestTest::testFindTestPathNameFail() +{ + CPPUNIT_ASSERT( !m_suite->findTestPath( "bad-test", *m_path ) ); + CPPUNIT_ASSERT( !m_path->isValid() ); +} + + +void +TestTest::testFindTest() +{ + CPPUNIT_ASSERT( m_test1 == m_suite->findTest( "test1" ) ); +} + + +void +TestTest::testFindTestThrow() +{ + m_suite->findTest( "no-name" ); +} + + +void +TestTest::testResolveTestPath() +{ + CPPUNIT_NS::TestPath path1 = m_suite->resolveTestPath( "suite"); + CPPUNIT_ASSERT_EQUAL( 1, path1.getTestCount() ); + CPPUNIT_ASSERT( m_suite == path1.getTestAt(0) ); + + CPPUNIT_NS::TestPath path2 = m_suite->resolveTestPath( "suite/test2"); + CPPUNIT_ASSERT_EQUAL( 2, path2.getTestCount() ); + CPPUNIT_ASSERT( m_suite == path2.getTestAt(0) ); + CPPUNIT_ASSERT( m_test2 == path2.getTestAt(1) ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestTest.h new file mode 100644 index 0000000000..d556acecad --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TestTest.h @@ -0,0 +1,67 @@ +#ifndef TESTTEST_H +#define TESTTEST_H + +#include +#include +#include +#include "MockTestCase.h" +#include + + +/*! \class TestTest + * \brief Unit test for class Test. + */ +class TestTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TestTest ); + CPPUNIT_TEST( testFindTestPathPointerThis ); + CPPUNIT_TEST( testFindTestPathPointer ); + CPPUNIT_TEST( testFindTestPathPointerFail ); + CPPUNIT_TEST( testFindTestPathNameThis ); + CPPUNIT_TEST( testFindTestPathName ); + CPPUNIT_TEST( testFindTestPathNameFail ); + CPPUNIT_TEST( testFindTest ); + CPPUNIT_TEST_EXCEPTION( testFindTestThrow, std::invalid_argument ); + CPPUNIT_TEST( testResolveTestPath ); + CPPUNIT_TEST_SUITE_END(); + +public: + /*! Constructs a TestTest object. + */ + TestTest(); + + /// Destructor. + virtual ~TestTest(); + + void setUp(); + void tearDown(); + + void testFindTestPathPointerThis(); + void testFindTestPathPointer(); + void testFindTestPathPointerFail(); + + void testFindTestPathNameThis(); + void testFindTestPathName(); + void testFindTestPathNameFail(); + + void testFindTest(); + void testFindTestThrow(); + + void testResolveTestPath(); + +private: + /// Prevents the use of the copy constructor. + TestTest( const TestTest © ); + + /// Prevents the use of the copy operator. + void operator =( const TestTest © ); + +private: + CPPUNIT_NS::TestSuite *m_suite; + MockTestCase *m_test1; + MockTestCase *m_test2; + CPPUNIT_NS::TestPath *m_path; +}; + + +#endif // TESTTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ToolsSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/ToolsSuite.h new file mode 100644 index 0000000000..a96e803192 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/ToolsSuite.h @@ -0,0 +1,12 @@ +#ifndef CPPUNITTEST_TOOLSSUITE_H +#define CPPUNITTEST_TOOLSSUITE_H + +#include +#include + +inline std::string toolsSuiteName() +{ + return "Tools"; +} + +#endif // CPPUNITTEST_TOOLSSUITE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.cpp new file mode 100644 index 0000000000..aaea99adfa --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.cpp @@ -0,0 +1,55 @@ +#include "TrackedTestCase.h" + +Tracker *TrackedTestCase::ms_tracker = NULL; + +TrackedTestCase::TrackedTestCase() +: CPPUNIT_NS::TestCase( "" ) +{ + if ( ms_tracker != NULL ) + ms_tracker->onConstructor(); +} + + +TrackedTestCase::~TrackedTestCase() +{ + if ( ms_tracker != NULL ) + ms_tracker->onDestructor(); +} + + +void +TrackedTestCase::setUp() +{ + if ( ms_tracker != NULL ) + ms_tracker->onSetUp(); +} + + +void +TrackedTestCase::tearDown() +{ + if ( ms_tracker != NULL ) + ms_tracker->onTearDown(); +} + + +void +TrackedTestCase::test() +{ + if ( ms_tracker != NULL ) + ms_tracker->onTest(); +} + + +void +TrackedTestCase::setTracker( Tracker *tracker ) +{ + ms_tracker = tracker; +} + + +void +TrackedTestCase::removeTracker() +{ + ms_tracker = NULL; +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.h b/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.h new file mode 100644 index 0000000000..f665c50e66 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.h @@ -0,0 +1,45 @@ +#ifndef TRACKEDTESTCASE_H +#define TRACKEDTESTCASE_H + +#include + + +class Tracker +{ +public: + virtual ~Tracker() {} + + virtual void onConstructor() {} + virtual void onDestructor() {} + virtual void onSetUp() {} + virtual void onTearDown() {} + virtual void onTest() {}; +}; + + +class TrackedTestCase : public CPPUNIT_NS::TestCase +{ +public: + TrackedTestCase(); + + virtual ~TrackedTestCase(); + + virtual void setUp(); + virtual void tearDown(); + + void test(); + + static void setTracker( Tracker *tracker ); + static void removeTracker(); + +private: + TrackedTestCase( const TrackedTestCase © ); + + void operator =( const TrackedTestCase © ); + +private: + static Tracker *ms_tracker; +}; + + +#endif // TRACKEDTESTCASE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/UnitTestToolSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/UnitTestToolSuite.h new file mode 100644 index 0000000000..4b1266178a --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/UnitTestToolSuite.h @@ -0,0 +1,12 @@ +#ifndef CPPUNITTEST_UNITTESTTOOLSUITE_H +#define CPPUNITTEST_UNITTESTTOOLSUITE_H + +#include +#include + +inline std::string unitTestToolSuiteName() +{ + return "UnitTestTool"; +} + +#endif // CPPUNITTEST_UNITTESTTOOLSUITE_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.cpp new file mode 100644 index 0000000000..3b5bd4c49a --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.cpp @@ -0,0 +1,225 @@ +#include +#include "ToolsSuite.h" +#include "XmlElementTest.h" +#include "XmlUniformiser.h" + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlElementTest, + toolsSuiteName() ); + + +XmlElementTest::XmlElementTest() +{ +} + + +XmlElementTest::~XmlElementTest() +{ +} + + +void +XmlElementTest::setUp() +{ +} + + +void +XmlElementTest::tearDown() +{ +} + + +void +XmlElementTest::testStringContentConstructor() +{ + CPPUNIT_NS::XmlElement element( "aName", "someContent" ); + CPPUNIT_ASSERT_EQUAL( std::string("aName"), element.name() ); + CPPUNIT_ASSERT_EQUAL( std::string("someContent"), element.content() ); +} + + +void +XmlElementTest::testNumericContentConstructor() +{ + CPPUNIT_NS::XmlElement element( "numericName", 123456789 ); + CPPUNIT_ASSERT_EQUAL( std::string("numericName"), element.name() ); + CPPUNIT_ASSERT_EQUAL( std::string("123456789"), element.content() ); +} + + +void +XmlElementTest::testSetName() +{ + CPPUNIT_NS::XmlElement element( "aName" ); + element.setName( "anotherName" ); + CPPUNIT_ASSERT_EQUAL( std::string("anotherName"), element.name() ); +} + + +void +XmlElementTest::testSetStringContent() +{ + CPPUNIT_NS::XmlElement element( "aName", "someContent" ); + element.setContent( "other" ); + CPPUNIT_ASSERT_EQUAL( std::string("other"), element.content() ); +} + + +void +XmlElementTest::testSetNumericContent() +{ + CPPUNIT_NS::XmlElement element( "aName", "someContent" ); + element.setContent( 87654321 ); + CPPUNIT_ASSERT_EQUAL( std::string("87654321"), element.content() ); +} + + +void +XmlElementTest::testElementCount() +{ + CPPUNIT_NS::XmlElement node( "element", "content" ); + CPPUNIT_ASSERT_EQUAL( 0, node.elementCount() ); + + node.addElement( new CPPUNIT_NS::XmlElement( "child1" ) ); + node.addElement( new CPPUNIT_NS::XmlElement( "child2" ) ); + CPPUNIT_ASSERT_EQUAL( 2, node.elementCount() ); +} + + +void +XmlElementTest::testElementAtNegativeIndexThrow() +{ + CPPUNIT_NS::XmlElement node( "element" ); + node.elementAt( -1 ); +} + + +void +XmlElementTest::testElementAtTooLargeIndexThrow() +{ + CPPUNIT_NS::XmlElement node( "element" ); + node.elementAt( 0 ); +} + + +void +XmlElementTest::testElementAt() +{ + CPPUNIT_NS::XmlElement node( "element" ); + CPPUNIT_NS::XmlElement *element1 = new CPPUNIT_NS::XmlElement( "element1" ); + CPPUNIT_NS::XmlElement *element2 = new CPPUNIT_NS::XmlElement( "element2" ); + node.addElement( element1 ); + node.addElement( element2 ); + + CPPUNIT_ASSERT( element1 == node.elementAt(0) ); + CPPUNIT_ASSERT( element2 == node.elementAt(1) ); +} + + +void +XmlElementTest::testElementForThrow() +{ + CPPUNIT_NS::XmlElement node( "element" ); + node.addElement( new CPPUNIT_NS::XmlElement( "element1" ) ); + node.elementFor( "name2" ); +} + + +void +XmlElementTest::testElementFor() +{ + CPPUNIT_NS::XmlElement node( "element" ); + CPPUNIT_NS::XmlElement *element1 = new CPPUNIT_NS::XmlElement( "element1" ); + CPPUNIT_NS::XmlElement *element2 = new CPPUNIT_NS::XmlElement( "element2" ); + node.addElement( element1 ); + node.addElement( element2 ); + + CPPUNIT_ASSERT( element2 == node.elementFor( "element2" ) ); + CPPUNIT_ASSERT( element1 == node.elementFor( "element1" ) ); +} + + +void +XmlElementTest::testEmptyNodeToString() +{ + CPPUNIT_NS::XmlElement node( "element" ); + std::string expectedXml = ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); +} + + +void +XmlElementTest::testElementWithAttributesToString() +{ + CPPUNIT_NS::XmlElement node( "element" ); + node.addAttribute( "id", 17 ); + node.addAttribute( "date-format", "iso-8901" ); + std::string expectedXml = "" + ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); +} + + +void +XmlElementTest::testEscapedAttributeValueToString() +{ + CPPUNIT_NS::XmlElement node( "element" ); + node.addAttribute( "escaped", "&<>\"'" ); + std::string expectedXml = ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); +} + + +void +XmlElementTest::testElementToStringEscapeContent() +{ + CPPUNIT_NS::XmlElement node( "element", "ChessTest" ); + std::string expectedXml = "" + "ChessTest<class Chess>" + ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); +} + + +void +XmlElementTest::testElementWithChildrenToString() +{ + CPPUNIT_NS::XmlElement node( "element" ); + node.addElement( new CPPUNIT_NS::XmlElement( "child1" ) ); + node.addElement( new CPPUNIT_NS::XmlElement( "child2" ) ); + std::string expectedXml = "" + ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); +} + + +void +XmlElementTest::testElementWithContentToString() +{ + CPPUNIT_NS::XmlElement node( "element", "content\nline2" ); + std::string expectedXml = "content\nline2"; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); +} + + +void +XmlElementTest::testElementWithNumericContentToString() +{ + CPPUNIT_NS::XmlElement node( "element", 123456789 ); + std::string expectedXml = "123456789"; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); +} + + +void +XmlElementTest::testElementWithContentAndChildToString() +{ + CPPUNIT_NS::XmlElement node( "element", "content" ); + node.addElement( new CPPUNIT_NS::XmlElement( "child1" ) ); + std::string expectedXml = "content"; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.h b/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.h new file mode 100644 index 0000000000..875ee515a8 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.h @@ -0,0 +1,77 @@ +#ifndef CPPUNITEST_XMLELEMENTTEST_H +#define CPPUNITEST_XMLELEMENTTEST_H + +#include +#include + + +/*! Unit tests for XmlElement. + */ +class XmlElementTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( XmlElementTest ); + CPPUNIT_TEST( testStringContentConstructor ); + CPPUNIT_TEST( testNumericContentConstructor ); + CPPUNIT_TEST( testSetName ); + CPPUNIT_TEST( testSetStringContent ); + CPPUNIT_TEST( testSetNumericContent ); + CPPUNIT_TEST( testElementCount ); + CPPUNIT_TEST_EXCEPTION( testElementAtNegativeIndexThrow, std::invalid_argument ); + CPPUNIT_TEST_EXCEPTION( testElementAtTooLargeIndexThrow, std::invalid_argument ); + CPPUNIT_TEST( testElementAt ); + CPPUNIT_TEST_EXCEPTION( testElementForThrow, std::invalid_argument ); + CPPUNIT_TEST( testElementFor ); + + CPPUNIT_TEST( testEmptyNodeToString ); + CPPUNIT_TEST( testElementWithAttributesToString ); + CPPUNIT_TEST( testEscapedAttributeValueToString ); + CPPUNIT_TEST( testElementToStringEscapeContent ); + CPPUNIT_TEST( testElementWithChildrenToString ); + CPPUNIT_TEST( testElementWithContentToString ); + CPPUNIT_TEST( testElementWithNumericContentToString ); + CPPUNIT_TEST( testElementWithContentAndChildToString ); + CPPUNIT_TEST_SUITE_END(); + +public: + /*! Constructs a XmlElementTest object. + */ + XmlElementTest(); + + /// Destructor. + virtual ~XmlElementTest(); + + void setUp(); + void tearDown(); + + void testStringContentConstructor(); + void testNumericContentConstructor(); + void testSetName(); + void testSetStringContent(); + void testSetNumericContent(); + void testElementCount(); + void testElementAtNegativeIndexThrow(); + void testElementAtTooLargeIndexThrow(); + void testElementAt(); + void testElementForThrow(); + void testElementFor(); + + void testEmptyNodeToString(); + void testElementWithAttributesToString(); + void testEscapedAttributeValueToString(); + void testElementToStringEscapeContent(); + void testElementWithChildrenToString(); + void testElementWithContentToString(); + void testElementWithNumericContentToString(); + void testElementWithContentAndChildToString(); + +private: + /// Prevents the use of the copy constructor. + XmlElementTest( const XmlElementTest © ); + + /// Prevents the use of the copy operator. + void operator =( const XmlElementTest © ); +}; + + + +#endif // CPPUNITEST_XMLELEMENTTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.cpp new file mode 100644 index 0000000000..d2ab3ba2f4 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.cpp @@ -0,0 +1,355 @@ +#include +#include +#include +#include +#include "OutputSuite.h" +#include "XmlOutputterTest.h" +#include "XmlUniformiser.h" + + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlOutputterTest, + outputSuiteName() ); + + +XmlOutputterTest::XmlOutputterTest() +{ +} + + +XmlOutputterTest::~XmlOutputterTest() +{ +} + + +void +XmlOutputterTest::setUp() +{ + m_dummyTests.clear(); + m_result = new CPPUNIT_NS::TestResultCollector(); +} + + +void +XmlOutputterTest::tearDown() +{ + delete m_result; + for ( unsigned int index =0; index < m_dummyTests.size(); ++index ) + delete m_dummyTests[index]; + m_dummyTests.clear(); +} + + +void +XmlOutputterTest::testWriteXmlResultWithNoTest() +{ + CPPUNIT_NS::OStringStream stream; + CPPUNIT_NS::XmlOutputter outputter( m_result, stream ); + outputter.write(); + + std::string actualXml = stream.str(); + std::string expectedXml = + "" + "" + "" + "" + "0" + "0" + "0" + "0" + "" + ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); +} + + +void +XmlOutputterTest::testWriteXmlResultWithOneFailure() +{ + addTestFailure( "test1", "message failure1", CPPUNIT_NS::SourceLine( "test.cpp", 3 ) ); + + CPPUNIT_NS::OStringStream stream; + CPPUNIT_NS::XmlOutputter outputter( m_result, stream ); + outputter.write(); + + std::string actualXml = stream.str(); + std::string expectedXml = + "" + "" + "" + "test1" + "Assertion" + "" + "test.cpp" + "3" + "" + "message failure1" + "" + "" + "" + "" + "1" + "1" + "0" + "1" + "" + ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); +} + + +void +XmlOutputterTest::testWriteXmlResultWithOneError() +{ + addTestError( "test1", "message error1" ); + + CPPUNIT_NS::OStringStream stream; + CPPUNIT_NS::XmlOutputter outputter( m_result, stream ); + outputter.write(); + + std::string actualXml = stream.str(); + std::string expectedXml = + "" + "" + "" + "test1" + "Error" + "message error1" + "" + "" + "" + "" + "1" + "1" + "1" + "0" + "" + ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); +} + + +void +XmlOutputterTest::testWriteXmlResultWithOneSuccess() +{ + addTest( "test1" ); + + CPPUNIT_NS::OStringStream stream; + CPPUNIT_NS::XmlOutputter outputter( m_result, stream ); + outputter.write(); + + std::string actualXml = stream.str(); + std::string expectedXml = + "" + "" + "" + "" + "test1" + "" + "" + "" + "1" + "0" + "0" + "0" + "" + ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); +} + + +void +XmlOutputterTest::testWriteXmlResultWithThreeFailureTwoErrorsAndTwoSuccess() +{ + addTestFailure( "test1", "failure1" ); + addTestError( "test2", "error1" ); + addTestFailure( "test3", "failure2" ); + addTestFailure( "test4", "failure3" ); + addTest( "test5" ); + addTestError( "test6", "error2" ); + addTest( "test7" ); + + CPPUNIT_NS::OStringStream stream; + CPPUNIT_NS::XmlOutputter outputter( m_result, stream ); + outputter.write(); + + std::string actualXml = stream.str(); + std::string expectedXml = + "" + "" + "" + "test1" + "Assertion" + "failure1" + "" + "" + "test2" + "Error" + "error1" + "" + "" + "test3" + "Assertion" + "failure2" + "" + "" + "test4" + "Assertion" + "failure3" + "" + "" + "test6" + "Error" + "error2" + "" + "" + "" + "" + "test5" + "" + "" + "test7" + "" + "" + "" + "7" + "5" + "2" + "3" + "" + ""; + CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); +} + + +class XmlOutputterTest::MockHook : public CPPUNIT_NS::XmlOutputterHook +{ +public: + MockHook( int &beginCalls, + int &endCalls, + int &statisticsCalls, + int &successfulTestCalls, + int &failedTestCalls ) + : m_successfulTestCalls( successfulTestCalls ) + , m_failedTestCalls( failedTestCalls ) + , m_beginCalls( beginCalls ) + , m_endCalls( endCalls ) + , m_statisticsCalls( statisticsCalls ) + { + } + + void beginDocument( CPPUNIT_NS::XmlDocument *document ) + { + ++m_beginCalls; + } + + void endDocument( CPPUNIT_NS::XmlDocument *document ) + { + ++m_endCalls; + } + + void failTestAdded( CPPUNIT_NS::XmlDocument *document, + CPPUNIT_NS::XmlElement *testElement, + CPPUNIT_NS::Test *test, + CPPUNIT_NS::TestFailure *failure ) + { + ++m_failedTestCalls; + } + + void successfulTestAdded( CPPUNIT_NS::XmlDocument *document, + CPPUNIT_NS::XmlElement *testElement, + CPPUNIT_NS::Test *test ) + { + ++m_successfulTestCalls; + } + + void statisticsAdded( CPPUNIT_NS::XmlDocument *document, + CPPUNIT_NS::XmlElement *statisticsElement ) + { + ++m_statisticsCalls; + } + +private: + int &m_beginCalls; + int &m_endCalls; + int &m_statisticsCalls; + int &m_successfulTestCalls; + int &m_failedTestCalls; +}; + + +void +XmlOutputterTest::testHook() +{ + int begin =0, end =0, statistics =0, successful =0, failed =0; + MockHook hook( begin, end, statistics, successful, failed ); + + addTest( "test1" ); + addTest( "test2" ); + addTest( "test3" ); + addTestFailure( "testfail1", "assertion failed" ); + addTestError( "testerror1", "exception" ); + + CPPUNIT_NS::OStringStream stream; + CPPUNIT_NS::XmlOutputter outputter( m_result, stream ); + outputter.addHook( &hook ); + outputter.write(); + + CPPUNIT_ASSERT_EQUAL( 1, begin ); + CPPUNIT_ASSERT_EQUAL( 1, end ); + CPPUNIT_ASSERT_EQUAL( 1, statistics ); + CPPUNIT_ASSERT_EQUAL( 3, successful ); + CPPUNIT_ASSERT_EQUAL( 2, failed ); +} + + +void +XmlOutputterTest::addTest( std::string testName ) +{ + CPPUNIT_NS::Test *test = makeDummyTest( testName ); + m_result->startTest( test ); + m_result->endTest( test ); +} + + +void +XmlOutputterTest::addTestFailure( std::string testName, + std::string message, + CPPUNIT_NS::SourceLine sourceLine ) +{ + addGenericTestFailure( testName, CPPUNIT_NS::Message(message), sourceLine, false ); +} + + +void +XmlOutputterTest::addTestError( std::string testName, + std::string message, + CPPUNIT_NS::SourceLine sourceLine ) +{ + addGenericTestFailure( testName, CPPUNIT_NS::Message(message), sourceLine, true ); +} + + +void +XmlOutputterTest::addGenericTestFailure( std::string testName, + CPPUNIT_NS::Message message, + CPPUNIT_NS::SourceLine sourceLine, + bool isError ) +{ + CPPUNIT_NS::Test *test = makeDummyTest( testName ); + m_result->startTest( test ); + CPPUNIT_NS::TestFailure failure( test, + new CPPUNIT_NS::Exception( message, sourceLine ), + isError ); + m_result->addFailure( failure ); + m_result->endTest( test ); +} + + +CPPUNIT_NS::Test * +XmlOutputterTest::makeDummyTest( std::string testName ) +{ + CPPUNIT_NS::Test *test = new CPPUNIT_NS::TestCase( testName ); + m_dummyTests.push_back( test ); + return test; +} + diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.h b/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.h new file mode 100644 index 0000000000..697a452cca --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.h @@ -0,0 +1,78 @@ +#ifndef CPPUNITEST_XMLTESTRESULTOUTPUTTERTEST_H +#define CPPUNITEST_XMLTESTRESULTOUTPUTTERTEST_H + +#include +#include +#include +#include +#include + + +/*! \class XmlOutputterTest + * \brief Unit tests for XmlOutputter. + */ +class XmlOutputterTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( XmlOutputterTest ); + CPPUNIT_TEST( testWriteXmlResultWithNoTest ); + CPPUNIT_TEST( testWriteXmlResultWithOneFailure ); + CPPUNIT_TEST( testWriteXmlResultWithOneError ); + CPPUNIT_TEST( testWriteXmlResultWithOneSuccess ); + CPPUNIT_TEST( testWriteXmlResultWithThreeFailureTwoErrorsAndTwoSuccess ); + CPPUNIT_TEST( testHook ); + CPPUNIT_TEST_SUITE_END(); + +public: + /*! Constructs a XmlOutputterTest object. + */ + XmlOutputterTest(); + + /// Destructor. + virtual ~XmlOutputterTest(); + + void setUp(); + void tearDown(); + void testWriteXmlResultWithNoTest(); + void testWriteXmlResultWithOneFailure(); + void testWriteXmlResultWithOneError(); + void testWriteXmlResultWithOneSuccess(); + void testWriteXmlResultWithThreeFailureTwoErrorsAndTwoSuccess(); + + void testHook(); + +private: + class MockHook; + + /// Prevents the use of the copy constructor. + XmlOutputterTest( const XmlOutputterTest © ); + + /// Prevents the use of the copy operator. + void operator =( const XmlOutputterTest © ); + + std::string statistics( int tests, + int total, + int error, + int failure ); + + void addTest( std::string testName ); + void addTestFailure( std::string testName, + std::string message, + CPPUNIT_NS::SourceLine sourceLine = CPPUNIT_NS::SourceLine() ); + void addTestError( std::string testName, + std::string message, + CPPUNIT_NS::SourceLine sourceLine = CPPUNIT_NS::SourceLine() ); + void addGenericTestFailure( std::string testName, + CPPUNIT_NS::Message message, + CPPUNIT_NS::SourceLine sourceLine, + bool isError ); + + CPPUNIT_NS::Test *makeDummyTest( std::string testName ); + +private: + CPPUNIT_NS::TestResultCollector *m_result; + CppUnitDeque m_dummyTests; +}; + + + +#endif // CPPUNITEST_XMLTESTRESULTOUTPUTTERTEST_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.cpp b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.cpp new file mode 100644 index 0000000000..44ad9b8347 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.cpp @@ -0,0 +1,236 @@ +#include "XmlUniformiser.h" + + +int +notEqualIndex( std::string expectedXml, + std::string actualXml ) +{ + unsigned int index = 0; + while ( index < actualXml.length() && + index < expectedXml.length() && + actualXml[index] == expectedXml[index] ) + ++index; + + return index; +} + + +/// Asserts that two XML string are equivalent. +void +checkXmlEqual( std::string expectedXml, + std::string actualXml, + CPPUNIT_NS::SourceLine sourceLine ) +{ + std::string expected = XmlUniformiser( expectedXml ).stripped(); + std::string actual = XmlUniformiser( actualXml ).stripped(); + + if ( expected == actual ) + return; + + int index = notEqualIndex( expected, actual ); + CPPUNIT_NS::OStringStream message; + message << "differ at index: " << index << "\n" + << "expected: " << expected.substr(index) << "\n" + << "but was : " << actual.substr( index ); + CPPUNIT_NS::Asserter::failNotEqual( expected, + actual, + sourceLine, + message.str() ); +} + + + +XmlUniformiser::XmlUniformiser( const std::string &xml ) : + m_xml( xml ), + m_index( 0 ) +{ +} + + +std::string +XmlUniformiser::stripped() +{ + while ( isValidIndex() ) + { + skipSpaces(); + if ( startsWith( " 0 ) + ++m_index; +} + + +void +XmlUniformiser::copyNext( int count ) +{ + while ( count-- > 0 && isValidIndex() ) + m_stripped += m_xml[ m_index++ ]; +} + + +bool +XmlUniformiser::startsWith( std::string expected ) +{ + std::string actual = m_xml.substr( m_index, expected.length() ); + return actual == expected; +} + + +void +XmlUniformiser::skipProcessed() +{ + while ( isValidIndex() && !startsWith( "?>" ) ) + skipNext(); + if ( isValidIndex() ) + skipNext( 2 ); +} + + +void +XmlUniformiser::skipComment() +{ + while ( isValidIndex() && !startsWith( "-->" ) ) + skipNext(); + if ( isValidIndex() ) + skipNext( 3 ); +} + + +void +XmlUniformiser::copyElement() +{ + copyElementName(); + copyElementAttributes(); +} + + +void +XmlUniformiser::copyElementName() +{ + while ( isValidIndex() && + !( isSpace() || startsWith( ">" ) ) ) + copyNext(); +} + + +void +XmlUniformiser::copyElementAttributes() +{ + do + { + bool hadSpace = isSpace(); + skipSpaces(); + if ( startsWith( ">" ) ) + break; + + if ( hadSpace ) + m_stripped += ' '; + + copyAttributeName(); + skipSpaces(); + if ( startsWith( "=" ) ) + { + copyNext(); + copyAttributeValue(); + } + else // attribute should always be valued, ne ? + m_stripped += ' '; + } + while ( isValidIndex() ); + copyNext(); +} + + +void +XmlUniformiser::copyAttributeName() +{ + while ( isValidIndex() && !isEndOfAttributeName() ) + copyNext(); +} + + +bool +XmlUniformiser::isEndOfAttributeName() +{ + return isSpace() || startsWith( ">" ) || startsWith( "=" ); +} + + +void +XmlUniformiser::copyAttributeValue() +{ + skipSpaces(); + copyUntilDoubleQuote(); + copyUntilDoubleQuote(); +} + + +void +XmlUniformiser::copyUntilDoubleQuote() +{ + while ( isValidIndex() && !startsWith("\"") ) + copyNext(); + copyNext(); // '"' +} + + +void +XmlUniformiser::copyElementContent() +{ + while ( isValidIndex() && !startsWith( "<" ) ) + copyNext(); + removeTrailingSpaces(); +} + + +void +XmlUniformiser::removeTrailingSpaces() +{ + int index = m_stripped.length(); + while ( index-1 > 0 && isSpace( m_stripped[index-1] ) ) + --index; + m_stripped.resize( index ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.h b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.h new file mode 100644 index 0000000000..545ece3c1b --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.h @@ -0,0 +1,63 @@ +#ifndef CPPUNITTEST_XMLUNIFORMISER_H +#define CPPUNITTEST_XMLUNIFORMISER_H + +#include +#include +#include + + +/*! Uniformise an XML string. + * + * Strips spaces between attribut in Element. + * \warning Attribute values must be double-quoted (att="value"). + * No support for embedded DTD declaration + */ +class XmlUniformiser +{ +public: + XmlUniformiser( const std::string &xml ); + std::string stripped(); + +private: + void skipSpaces(); + bool isValidIndex(); + void skipNext( int count =1 ); + void copyNext( int count =1 ); + void skipProcessed(); + void skipComment(); + void copyElement(); + void copyElementContent(); + bool isSpace( char c ); + bool isSpace(); + bool startsWith( std::string expected ); + void copyElementName(); + void copyElementAttributes(); + void copyAttributeName(); + bool isEndOfAttributeName(); + void copyAttributeValue(); + void copyUntilDoubleQuote(); + void removeTrailingSpaces(); + +private: + unsigned int m_index; + std::string m_xml; + std::string m_stripped; +}; + + + + +void +checkXmlEqual( std::string expectedXml, + std::string actualXml, + CPPUNIT_NS::SourceLine sourceLine ); + + +/// Asserts that two XML strings are equivalent. +#define CPPUNITTEST_ASSERT_XML_EQUAL( expected, actual ) \ + ::checkXmlEqual( expected, actual, \ + CPPUNIT_SOURCELINE() ) + + + +#endif // XMLUNIFORMISER_H diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.cpp new file mode 100644 index 0000000000..a04a1dddef --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.cpp @@ -0,0 +1,144 @@ +#include +#include "UnitTestToolSuite.h" +#include "XmlUniformiserTest.h" +#include "XmlUniformiser.h" + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlUniformiserTest, + unitTestToolSuiteName() ); + + +XmlUniformiserTest::XmlUniformiserTest() +{ +} + + +XmlUniformiserTest::~XmlUniformiserTest() +{ +} + + +void +XmlUniformiserTest::setUp() +{ +} + + +void +XmlUniformiserTest::tearDown() +{ +} + + +void +XmlUniformiserTest::testEmpty() +{ + check( "", "" ); +} + + +void +XmlUniformiserTest::testSkipProcessed() +{ + check( "", + "" ); +} + + +void +XmlUniformiserTest::testOpenElementWithoutAttributeButSomeSpaces() +{ + check( " ", + "" ); +} + + +void +XmlUniformiserTest::testOpenCloseElement() +{ + check( " ", + "" ); +} + + +void +XmlUniformiserTest::testElementWithEmptyAttribute() +{ + check( "", + "" ); +} + + +void +XmlUniformiserTest::testElementWithEmptyAttributeButSomeSpaces() +{ + check( "", + "" ); +} + + +void +XmlUniformiserTest::testElementWithOneAttribute() +{ + check( "", + "" ); +} + + +void +XmlUniformiserTest::testElementWithThreeAttributes() +{ + check( "", + "" ); +} + + +void +XmlUniformiserTest::testElementWithContent() +{ + check( "\nContent\n\n", + "Content" ); +} + + +void +XmlUniformiserTest::testElementsHierarchyWithContents() +{ + check( "\n" + "2001-10-04\n" + "\n\n" + "TokenParserTest\n" + "\n\n\n", + "" + "2001-10-04" + "" + "TokenParserTest" + "" ); +} + + +void +XmlUniformiserTest::testSkipComment() +{ + check( "", + "" ); +} + + +void +XmlUniformiserTest::testAssertXmlEqual() +{ + CPPUNIT_ASSERT_ASSERTION_FAIL( + CPPUNITTEST_ASSERT_XML_EQUAL( "", "" ) ); + CPPUNIT_ASSERT_ASSERTION_PASS( + CPPUNITTEST_ASSERT_XML_EQUAL( "", "" ) ); +} + + +void +XmlUniformiserTest::check( const std::string &xml, + const std::string &expectedStrippedXml ) +{ + std::string actual = XmlUniformiser( xml ).stripped(); + CPPUNIT_ASSERT_EQUAL( expectedStrippedXml, actual ); +} diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.h b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.h new file mode 100644 index 0000000000..be2d6da435 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.h @@ -0,0 +1,67 @@ +#ifndef XMLUNIFORMISERTEST_H +#define XMLUNIFORMISERTEST_H + +#include + + +/*! \class XmlUniformiserTest + * \brief Unit test for XmlUniformiser. + */ +class XmlUniformiserTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( XmlUniformiserTest ); + CPPUNIT_TEST( testEmpty ); + CPPUNIT_TEST( testSkipProcessed ); + CPPUNIT_TEST( testOpenElementWithoutAttributeButSomeSpaces ); + CPPUNIT_TEST( testOpenCloseElement ); + CPPUNIT_TEST( testElementWithEmptyAttribute ); + CPPUNIT_TEST( testElementWithEmptyAttributeButSomeSpaces ); + CPPUNIT_TEST( testElementWithOneAttribute ); + CPPUNIT_TEST( testElementWithThreeAttributes ); + CPPUNIT_TEST( testSkipComment ); + CPPUNIT_TEST( testElementWithContent ); + CPPUNIT_TEST( testElementsHierarchyWithContents ); + CPPUNIT_TEST( testAssertXmlEqual ); + CPPUNIT_TEST_SUITE_END(); + +public: + /*! Constructs a XmlUniformiserTest object. + */ + XmlUniformiserTest(); + + /// Destructor. + virtual ~XmlUniformiserTest(); + + void setUp(); + void tearDown(); + + void testEmpty(); + void testSkipProcessed(); + void testOpenElementWithoutAttributeButSomeSpaces(); + void testOpenCloseElement(); + void testElementWithEmptyAttribute(); + void testElementWithEmptyAttributeButSomeSpaces(); + void testElementWithOneAttribute(); + void testElementWithThreeAttributes(); + void testSkipComment(); + void testElementWithContent(); + void testElementsHierarchyWithContents(); + + void testAssertXmlEqual(); + +private: + void check( const std::string &xml, + const std::string &expectedStrippedXml ); + + /// Prevents the use of the copy constructor. + XmlUniformiserTest( const XmlUniformiserTest © ); + + /// Prevents the use of the copy operator. + void operator =( const XmlUniformiserTest © ); + +private: +}; + + + +#endif // XMLUNIFORMISERTEST_H diff --git a/lib/cppunit-1.10.0/examples/examples.dsw b/lib/cppunit-1.10.0/examples/examples.dsw new file mode 100644 index 0000000000..fc77400f00 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/examples.dsw @@ -0,0 +1,254 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "ClockerPlugIn"=.\ClockerPlugIn\ClockerPlugIn.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency +}}} + +############################################################################### + +Project: "CppUnitTestApp"=.\msvc6\CppUnitTestApp\CppUnitTestApp.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name TestRunner + End Project Dependency +}}} + +############################################################################### + +Project: "CppUnitTestMain"=.\cppunittest\CppUnitTestMain.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency +}}} + +############################################################################### + +Project: "CppUnitTestPlugIn"=.\cppunittest\CppUnitTestPlugIn.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency +}}} + +############################################################################### + +Project: "DllPlugInTester"=..\src\DllPlugInTester\DllPlugInTester.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency +}}} + +############################################################################### + +Project: "DllPlugInTesterTest"=..\src\DllPlugInTester\DllPlugInTesterTest.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "DumperPlugIn"=.\DumperPlugIn\DumperPlugIn.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency +}}} + +############################################################################### + +Project: "HostApp"=.\msvc6\HostApp\HostApp.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name TestRunner + End Project Dependency +}}} + +############################################################################### + +Project: "TestPlugInRunner"=..\src\msvc6\testpluginrunner\TestPlugInRunner.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency +}}} + +############################################################################### + +Project: "TestRunner"=..\src\msvc6\testrunner\TestRunner.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency +}}} + +############################################################################### + +Project: "cppunit"=..\src\cppunit\cppunit.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "cppunit_dll"=..\src\cppunit\cppunit_dll.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "hierarchy"=.\hierarchy\hierarchy.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency +}}} + +############################################################################### + +Project: "money"=.\money\money.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency +}}} + +############################################################################### + +Project: "simple"=.\simple\simple.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency +}}} + +############################################################################### + +Project: "simple_plugin"=.\SIMPLE\simple_plugin.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency + Begin Project Dependency + Project_Dep_Name DllPlugInTester + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lib/cppunit-1.10.0/examples/examples.opt b/lib/cppunit-1.10.0/examples/examples.opt new file mode 100644 index 0000000000..179dea9cb5 Binary files /dev/null and b/lib/cppunit-1.10.0/examples/examples.opt differ diff --git a/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.cpp b/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.cpp new file mode 100644 index 0000000000..f74af114cf --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.cpp @@ -0,0 +1,12 @@ +#include "BoardGame.h" + +bool +BoardGame::reset() +{ + return true; +} + + +BoardGame::~BoardGame() +{ +} diff --git a/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.h b/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.h new file mode 100644 index 0000000000..d1864c523c --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.h @@ -0,0 +1,18 @@ +#ifndef __BOARDGAME_H__ +#define __BOARDGAME_H__ + +/** Example class to show hierarchy testing. + * + * Shamelessly ripped and adapted from + * + * ClassHierarchyTestingInCppUnit + * + */ +class BoardGame { + public: + /// expected to return true + virtual bool reset(); + virtual ~BoardGame(); +}; + +#endif diff --git a/lib/cppunit-1.10.0/examples/hierarchy/BoardGameTest.h b/lib/cppunit-1.10.0/examples/hierarchy/BoardGameTest.h new file mode 100644 index 0000000000..01989441d1 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/BoardGameTest.h @@ -0,0 +1,49 @@ +#ifndef __BOARDGAMETEST_H__ +#define __BOARDGAMETEST_H__ + +#include +#include + +template +class BoardGameTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( BoardGameTest ); + CPPUNIT_TEST( testReset ); + CPPUNIT_TEST( testResetShouldFail ); + CPPUNIT_TEST_SUITE_END(); +protected: + GAMECLASS *m_game; + +public: + BoardGameTest() + { + } + + int countTestCases () const + { + return 1; + } + + void setUp() + { + m_game = new GAMECLASS; + } + + void tearDown() + { + delete m_game; + } + + void testReset() + { + CPPUNIT_ASSERT( m_game->reset() ); + } + + void testResetShouldFail() + { + std::cout << "The following test fails, this is intended:" << std::endl; + CPPUNIT_ASSERT( !m_game->reset() ); + } +}; + +#endif diff --git a/lib/cppunit-1.10.0/examples/hierarchy/Chess.cpp b/lib/cppunit-1.10.0/examples/hierarchy/Chess.cpp new file mode 100644 index 0000000000..a49263cc0e --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/Chess.cpp @@ -0,0 +1,7 @@ +#include "Chess.h" + +int +Chess::getNumberOfPieces() const +{ + return 32; +} diff --git a/lib/cppunit-1.10.0/examples/hierarchy/Chess.h b/lib/cppunit-1.10.0/examples/hierarchy/Chess.h new file mode 100644 index 0000000000..9b050fcf24 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/Chess.h @@ -0,0 +1,11 @@ +#ifndef __CHESS_H__ +#define __CHESS_H__ + +#include "BoardGame.h" + +class Chess: public BoardGame { + public: + virtual int getNumberOfPieces() const; +}; + +#endif diff --git a/lib/cppunit-1.10.0/examples/hierarchy/ChessTest.h b/lib/cppunit-1.10.0/examples/hierarchy/ChessTest.h new file mode 100644 index 0000000000..eda6c5e45c --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/ChessTest.h @@ -0,0 +1,25 @@ +#ifndef __CHESSTEST_H__ +#define __CHESSTEST_H__ + +#include "BoardGameTest.h" + +template +class ChessTest : public BoardGameTest +{ + CPPUNIT_TEST_SUB_SUITE( ChessTest, BoardGameTest ); + CPPUNIT_TEST( testNumberOfPieces ); + CPPUNIT_TEST_SUITE_END(); +public: + ChessTest() + { + } + + void testNumberOfPieces() + { + CPPUNIT_ASSERT( m_game->getNumberOfPieces () == 32 ); + } +}; + + + +#endif diff --git a/lib/cppunit-1.10.0/examples/hierarchy/Makefile.am b/lib/cppunit-1.10.0/examples/hierarchy/Makefile.am new file mode 100644 index 0000000000..9aa5873662 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/Makefile.am @@ -0,0 +1,19 @@ +EXTRA_DIST = hierarchy.dsw hierarchy.dsp + +TESTS = hierarchy +check_PROGRAMS = $(TESTS) + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +hierarchy_SOURCES= BoardGame.cpp \ + Chess.cpp \ + main.cpp \ + BoardGame.h \ + Chess.h \ + BoardGameTest.h \ + ChessTest.h + +hierarchy_LDADD= \ + $(top_builddir)/src/cppunit/libcppunit.la + +hierarchy_LDFLAGS = $(LIBADD_DL) diff --git a/lib/cppunit-1.10.0/examples/hierarchy/Makefile.in b/lib/cppunit-1.10.0/examples/hierarchy/Makefile.in new file mode 100644 index 0000000000..99dbac538a --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/Makefile.in @@ -0,0 +1,531 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = hierarchy.dsw hierarchy.dsp + +TESTS = hierarchy +check_PROGRAMS = $(TESTS) + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +hierarchy_SOURCES = BoardGame.cpp \ + Chess.cpp \ + main.cpp \ + BoardGame.h \ + Chess.h \ + BoardGameTest.h \ + ChessTest.h + + +hierarchy_LDADD = \ + $(top_builddir)/src/cppunit/libcppunit.la + + +hierarchy_LDFLAGS = $(LIBADD_DL) +subdir = examples/hierarchy +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +check_PROGRAMS = hierarchy$(EXEEXT) +am_hierarchy_OBJECTS = BoardGame.$(OBJEXT) Chess.$(OBJEXT) \ + main.$(OBJEXT) +hierarchy_OBJECTS = $(am_hierarchy_OBJECTS) +hierarchy_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/BoardGame.Po ./$(DEPDIR)/Chess.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/main.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(hierarchy_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(hierarchy_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/hierarchy/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +hierarchy$(EXEEXT): $(hierarchy_OBJECTS) $(hierarchy_DEPENDENCIES) + @rm -f hierarchy$(EXEEXT) + $(CXXLINK) $(hierarchy_LDFLAGS) $(hierarchy_OBJECTS) $(hierarchy_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BoardGame.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Chess.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list='$(TESTS)'; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -n "$$skipped" && echo "$$skipped"; \ + test -n "$$report" && echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am + +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool ctags distclean \ + distclean-compile distclean-depend distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man 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-info-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: diff --git a/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsp b/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsp new file mode 100644 index 0000000000..dc78c78668 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsp @@ -0,0 +1,118 @@ +# Microsoft Developer Studio Project File - Name="hierarchy" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=hierarchy - Win32 Debug Crossplatform Setting +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "hierarchy.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "hierarchy.mak" CFG="hierarchy - Win32 Debug Crossplatform Setting" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "hierarchy - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "hierarchy - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "hierarchy - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\cppunit.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "hierarchy - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /YX /FD /GZ /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "hierarchy - Win32 Release" +# Name "hierarchy - Win32 Debug" +# Begin Source File + +SOURCE=.\BoardGame.cpp +# End Source File +# Begin Source File + +SOURCE=.\BoardGame.h +# End Source File +# Begin Source File + +SOURCE=.\BoardGameTest.h +# End Source File +# Begin Source File + +SOURCE=.\Chess.cpp +# End Source File +# Begin Source File + +SOURCE=.\Chess.h +# End Source File +# Begin Source File + +SOURCE=.\ChessTest.h +# End Source File +# Begin Source File + +SOURCE=.\main.cpp +# End Source File +# Begin Source File + +SOURCE=.\Makefile.am +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsw b/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsw new file mode 100644 index 0000000000..6a13d79a60 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsw @@ -0,0 +1,44 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "cppunit"=..\..\src\cppunit\cppunit.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "hierarchy"=.\hierarchy.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lib/cppunit-1.10.0/examples/hierarchy/main.cpp b/lib/cppunit-1.10.0/examples/hierarchy/main.cpp new file mode 100644 index 0000000000..6b7dbea676 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/hierarchy/main.cpp @@ -0,0 +1,23 @@ +#include + +#include "BoardGame.h" +#include "Chess.h" +#include "BoardGameTest.h" +#include "ChessTest.h" + + + +int +main(int argc, char** argv) +{ + CPPUNIT_NS::TextUi::TestRunner runner; + + runner.addTest( BoardGameTest::suite() ); + runner.addTest( ChessTest::suite() ); + + bool wasSucessful = runner.run(); + + // should be: + // return wasSuccessful ? 0 : 1; + return 0; +} diff --git a/lib/cppunit-1.10.0/examples/money/Makefile.am b/lib/cppunit-1.10.0/examples/money/Makefile.am new file mode 100644 index 0000000000..414e65bfc9 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/Makefile.am @@ -0,0 +1,21 @@ +# Include cookbook.html in distro +EXTRA_DIST = money.dsp money.dsw configure.in StdAfx.cpp + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + + +# Rules to make the production code +#bin_PROGRAMS = Money +#main_SOURCES = Money.h + +# Rules for the test code (use `make check` to execute) +TESTS = MoneyApp +check_PROGRAMS = $(TESTS) + +MoneyApp_SOURCES = Money.h MoneyTest.h MoneyTest.cpp MoneyApp.cpp StdAfx.h +MoneyApp_CXXFLAGS = $(CPPUNIT_CFLAGS) +MoneyApp_LDADD= \ + $(top_builddir)/src/cppunit/libcppunit.la + +MoneyApp_LDFLAGS = $(CPPUNIT_LIBS) $(LIBADD_DL) + diff --git a/lib/cppunit-1.10.0/examples/money/Makefile.in b/lib/cppunit-1.10.0/examples/money/Makefile.in new file mode 100644 index 0000000000..d89925782b --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/Makefile.in @@ -0,0 +1,596 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +# Include cookbook.html in distro +EXTRA_DIST = money.dsp money.dsw configure.in StdAfx.cpp + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +# Rules to make the production code +#bin_PROGRAMS = Money +#main_SOURCES = Money.h + +# Rules for the test code (use `make check` to execute) +TESTS = MoneyApp +check_PROGRAMS = $(TESTS) + +MoneyApp_SOURCES = Money.h MoneyTest.h MoneyTest.cpp MoneyApp.cpp StdAfx.h +MoneyApp_CXXFLAGS = $(CPPUNIT_CFLAGS) +MoneyApp_LDADD = \ + $(top_builddir)/src/cppunit/libcppunit.la + + +MoneyApp_LDFLAGS = $(CPPUNIT_LIBS) $(LIBADD_DL) +subdir = examples/money +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +check_PROGRAMS = MoneyApp$(EXEEXT) +am_MoneyApp_OBJECTS = MoneyApp-MoneyTest.$(OBJEXT) \ + MoneyApp-MoneyApp.$(OBJEXT) +MoneyApp_OBJECTS = $(am_MoneyApp_OBJECTS) +MoneyApp_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/MoneyApp-MoneyApp.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/MoneyApp-MoneyTest.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(MoneyApp_SOURCES) +DIST_COMMON = Makefile.am Makefile.in configure.in +SOURCES = $(MoneyApp_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/money/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +MoneyApp$(EXEEXT): $(MoneyApp_OBJECTS) $(MoneyApp_DEPENDENCIES) + @rm -f MoneyApp$(EXEEXT) + $(CXXLINK) $(MoneyApp_LDFLAGS) $(MoneyApp_OBJECTS) $(MoneyApp_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MoneyApp-MoneyApp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MoneyApp-MoneyTest.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +MoneyApp-MoneyTest.o: MoneyTest.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyTest.o -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o MoneyApp-MoneyTest.o `test -f 'MoneyTest.cpp' || echo '$(srcdir)/'`MoneyTest.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" "$(DEPDIR)/MoneyApp-MoneyTest.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MoneyTest.cpp' object='MoneyApp-MoneyTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/MoneyApp-MoneyTest.Po' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyTest.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyTest.o `test -f 'MoneyTest.cpp' || echo '$(srcdir)/'`MoneyTest.cpp + +MoneyApp-MoneyTest.obj: MoneyTest.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyTest.obj -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o MoneyApp-MoneyTest.obj `if test -f 'MoneyTest.cpp'; then $(CYGPATH_W) 'MoneyTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MoneyTest.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" "$(DEPDIR)/MoneyApp-MoneyTest.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MoneyTest.cpp' object='MoneyApp-MoneyTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/MoneyApp-MoneyTest.Po' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyTest.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyTest.obj `if test -f 'MoneyTest.cpp'; then $(CYGPATH_W) 'MoneyTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MoneyTest.cpp'; fi` + +MoneyApp-MoneyTest.lo: MoneyTest.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyTest.lo -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o MoneyApp-MoneyTest.lo `test -f 'MoneyTest.cpp' || echo '$(srcdir)/'`MoneyTest.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" "$(DEPDIR)/MoneyApp-MoneyTest.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MoneyTest.cpp' object='MoneyApp-MoneyTest.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/MoneyApp-MoneyTest.Plo' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyTest.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyTest.lo `test -f 'MoneyTest.cpp' || echo '$(srcdir)/'`MoneyTest.cpp + +MoneyApp-MoneyApp.o: MoneyApp.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyApp.o -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o MoneyApp-MoneyApp.o `test -f 'MoneyApp.cpp' || echo '$(srcdir)/'`MoneyApp.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" "$(DEPDIR)/MoneyApp-MoneyApp.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MoneyApp.cpp' object='MoneyApp-MoneyApp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/MoneyApp-MoneyApp.Po' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyApp.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyApp.o `test -f 'MoneyApp.cpp' || echo '$(srcdir)/'`MoneyApp.cpp + +MoneyApp-MoneyApp.obj: MoneyApp.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyApp.obj -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o MoneyApp-MoneyApp.obj `if test -f 'MoneyApp.cpp'; then $(CYGPATH_W) 'MoneyApp.cpp'; else $(CYGPATH_W) '$(srcdir)/MoneyApp.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" "$(DEPDIR)/MoneyApp-MoneyApp.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MoneyApp.cpp' object='MoneyApp-MoneyApp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/MoneyApp-MoneyApp.Po' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyApp.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyApp.obj `if test -f 'MoneyApp.cpp'; then $(CYGPATH_W) 'MoneyApp.cpp'; else $(CYGPATH_W) '$(srcdir)/MoneyApp.cpp'; fi` + +MoneyApp-MoneyApp.lo: MoneyApp.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyApp.lo -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o MoneyApp-MoneyApp.lo `test -f 'MoneyApp.cpp' || echo '$(srcdir)/'`MoneyApp.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" "$(DEPDIR)/MoneyApp-MoneyApp.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MoneyApp.cpp' object='MoneyApp-MoneyApp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/MoneyApp-MoneyApp.Plo' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyApp.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyApp.lo `test -f 'MoneyApp.cpp' || echo '$(srcdir)/'`MoneyApp.cpp + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list='$(TESTS)'; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -n "$$skipped" && echo "$$skipped"; \ + test -n "$$report" && echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am + +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool ctags distclean \ + distclean-compile distclean-depend distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man 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-info-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: diff --git a/lib/cppunit-1.10.0/examples/money/Money.h b/lib/cppunit-1.10.0/examples/money/Money.h new file mode 100644 index 0000000000..309e3a1da4 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/Money.h @@ -0,0 +1,61 @@ +// Money.h +#ifndef MONEY_H +#define MONEY_H + +#include +#include + +class IncompatibleMoneyError : public std::runtime_error +{ +public: + IncompatibleMoneyError() : std::runtime_error( "Incompatible moneys" ) + { + } +}; + + +class Money +{ +public: + Money( double amount, std::string currency ) + : m_amount( amount ) + , m_currency( currency ) + { + } + + double getAmount() const + { + return m_amount; + } + + std::string getCurrency() const + { + return m_currency; + } + + bool operator ==( const Money &other ) const + { + return m_amount == other.m_amount && + m_currency == other.m_currency; + } + + bool operator !=( const Money &other ) const + { + return !(*this == other); + } + + Money &operator +=( const Money &other ) + { + if ( m_currency != other.m_currency ) + throw IncompatibleMoneyError(); + + m_amount += other.m_amount; + return *this; + } + +private: + double m_amount; + std::string m_currency; +}; + +#endif diff --git a/lib/cppunit-1.10.0/examples/money/MoneyApp.cpp b/lib/cppunit-1.10.0/examples/money/MoneyApp.cpp new file mode 100644 index 0000000000..e6242fa93d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/MoneyApp.cpp @@ -0,0 +1,25 @@ +#include "StdAfx.h" +#include +#include +#include + + +int main(int argc, char* argv[]) +{ + // Get the top level suite from the registry + CPPUNIT_NS::Test *suite = CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest(); + + // Adds the test to the list of test to run + CPPUNIT_NS::TextUi::TestRunner runner; + runner.addTest( suite ); + + // Change the default outputter to a compiler error format outputter + runner.setOutputter( new CPPUNIT_NS::CompilerOutputter( &runner.result(), + std::cerr ) ); + // Run the test. + bool wasSucessful = runner.run(); + + // Return error code 1 if the one of test failed. + return wasSucessful ? 0 : 1; +} + diff --git a/lib/cppunit-1.10.0/examples/money/MoneyTest.cpp b/lib/cppunit-1.10.0/examples/money/MoneyTest.cpp new file mode 100644 index 0000000000..bdebbc5054 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/MoneyTest.cpp @@ -0,0 +1,82 @@ +// MoneyTest.cpp + +#include "StdAfx.h" +#include "Money.h" +#include "MoneyTest.h" + +// Registers the fixture into the 'registry' +CPPUNIT_TEST_SUITE_REGISTRATION( MoneyTest ); + + +void +MoneyTest::setUp() +{ +} + + +void +MoneyTest::tearDown() +{ +} + + +void +MoneyTest::testConstructor() +{ + // Set up + const std::string currencyFF( "FF" ); + const double longNumber = 1234.5678; + + // Process + Money money( longNumber, currencyFF ); + + // Check + CPPUNIT_ASSERT_EQUAL( longNumber, money.getAmount() ); + CPPUNIT_ASSERT_EQUAL( currencyFF, money.getCurrency() ); +} + + +void +MoneyTest::testEqual() +{ + // Set up + const Money money123FF( 123, "FF" ); + const Money money123USD( 123, "USD" ); + const Money money12FF( 12, "FF" ); + const Money money12USD( 12, "USD" ); + + // Process & Check + CPPUNIT_ASSERT( money123FF == money123FF ); // == + CPPUNIT_ASSERT( money12FF != money123FF ); // != amount + CPPUNIT_ASSERT( money123USD != money123FF ); // != currency + CPPUNIT_ASSERT( money12USD != money123FF ); // != currency and != amount +} + + +void +MoneyTest::testAdd() +{ + // Set up + const Money money12FF( 12, "FF" ); + const Money expectedMoney( 135, "FF" ); + + // Process + Money money( 123, "FF" ); + money += money12FF; + + // Check + CPPUNIT_ASSERT( expectedMoney == money ); // add works + CPPUNIT_ASSERT( &money == &(money += money12FF) ); // add returns ref. on 'this'. +} + + +void +MoneyTest::testAddThrow() +{ + // Set up + const Money money123FF( 123, "FF" ); + + // Process + Money money( 123, "USD" ); + money += money123FF; // should throw an exception +} diff --git a/lib/cppunit-1.10.0/examples/money/MoneyTest.h b/lib/cppunit-1.10.0/examples/money/MoneyTest.h new file mode 100644 index 0000000000..44e1808a76 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/MoneyTest.h @@ -0,0 +1,26 @@ +// MoneyTest.h +#ifndef MONEYTEST_H +#define MONEYTEST_H + +#include + +class MoneyTest : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( MoneyTest ); + CPPUNIT_TEST( testConstructor ); + CPPUNIT_TEST( testEqual ); + CPPUNIT_TEST( testAdd ); + CPPUNIT_TEST_EXCEPTION( testAddThrow, IncompatibleMoneyError ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + + void testConstructor(); + void testEqual(); + void testAdd(); + void testAddThrow(); +}; + +#endif // MONEYTEST_H diff --git a/lib/cppunit-1.10.0/examples/money/StdAfx.cpp b/lib/cppunit-1.10.0/examples/money/StdAfx.cpp new file mode 100644 index 0000000000..6c550b2822 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/StdAfx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// money.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "StdAfx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/lib/cppunit-1.10.0/examples/money/StdAfx.h b/lib/cppunit-1.10.0/examples/money/StdAfx.h new file mode 100644 index 0000000000..8e024359a1 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/StdAfx.h @@ -0,0 +1,19 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__E8E36A23_EF1C_4C21_A2C0_D0E979CF0267__INCLUDED_) +#define AFX_STDAFX_H__E8E36A23_EF1C_4C21_A2C0_D0E979CF0267__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +// TODO: reference additional headers your program requires here + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__E8E36A23_EF1C_4C21_A2C0_D0E979CF0267__INCLUDED_) diff --git a/lib/cppunit-1.10.0/examples/money/configure.in b/lib/cppunit-1.10.0/examples/money/configure.in new file mode 100644 index 0000000000..5770e391a5 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/configure.in @@ -0,0 +1,10 @@ +dnl Process this file with autoconf to produce a configure script. +dnl Don't forget to run `aclocal -I /usr/local/share/aclocal` before +dnl running autoconf! This is required for AM_PATH_CPPUNIT to work. +AC_INIT(Makefile.am) +AM_INIT_AUTOMAKE(cppunit-cookbook,1.6.2) +AM_PATH_CPPUNIT(1.6.2) +AC_PROG_CXX +AC_PROG_CC +AC_PROG_INSTALL +AC_OUTPUT(Makefile) diff --git a/lib/cppunit-1.10.0/examples/money/money.dsp b/lib/cppunit-1.10.0/examples/money/money.dsp new file mode 100644 index 0000000000..0304217dd1 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/money.dsp @@ -0,0 +1,135 @@ +# Microsoft Developer Studio Project File - Name="money" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=money - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "money.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "money.mak" CFG="money - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "money - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "money - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "money - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\Release\money.exe +SOURCE="$(InputPath)" +PostBuild_Desc=Unit testing... +PostBuild_Cmds=$(TargetPath) +# End Special Build Tool + +!ELSEIF "$(CFG)" == "money - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/moneyd.exe" /pdbtype:sept /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\Debug\moneyd.exe +SOURCE="$(InputPath)" +PostBuild_Desc=Unit testing... +PostBuild_Cmds=$(TargetPath) +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "money - Win32 Release" +# Name "money - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\MoneyApp.cpp +# End Source File +# Begin Source File + +SOURCE=.\MoneyTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\Money.h +# End Source File +# Begin Source File + +SOURCE=.\MoneyTest.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/examples/money/money.dsw b/lib/cppunit-1.10.0/examples/money/money.dsw new file mode 100644 index 0000000000..cb1b94cac3 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/money/money.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "money"=.\money.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp new file mode 100644 index 0000000000..e39da5acbc --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp @@ -0,0 +1,81 @@ +// CppUnitTestApp.cpp : Defines the class behaviors for the application. +// + +#include "stdafx.h" +#include "CppUnitTestApp.h" +#include "CppUnitTestAppDlg.h" +#include +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CppUnitTestApp + +BEGIN_MESSAGE_MAP(CppUnitTestApp, CWinApp) + //{{AFX_MSG_MAP(CppUnitTestApp) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG + ON_COMMAND(ID_HELP, CWinApp::OnHelp) +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CppUnitTestApp construction + +CppUnitTestApp::CppUnitTestApp() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + +///////////////////////////////////////////////////////////////////////////// +// The one and only CppUnitTestApp object + +CppUnitTestApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// CppUnitTestApp initialization + +BOOL +CppUnitTestApp::InitInstance() +{ + AfxEnableControlContainer(); + + // Standard initialization + // If you are not using these features and wish to reduce the size + // of your final executable, you should remove from the following + // the specific initialization routines you do not need. + +#ifdef _AFXDLL +# if _MSC_VER < 1300 // vc6 + Enable3dControls(); // Call this when using MFC in a shared DLL +# endif +#else + Enable3dControlsStatic(); // Call this when linking to MFC statically +#endif + + SetRegistryKey(_T("Local AppWizard-Generated Applications")); + + RunTests(); + + + // Since the dialog has been closed, return FALSE so that we exit the + // application, rather than start the application's message pump. + return FALSE; +} + + +void +CppUnitTestApp::RunTests() +{ + CPPUNIT_NS::MfcUi::TestRunner runner; + + runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() ); + + runner.run(); +} diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp new file mode 100644 index 0000000000..c22459e7a8 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp @@ -0,0 +1,488 @@ +# Microsoft Developer Studio Project File - Name="CppUnitTestApp" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=CppUnitTestApp - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "CppUnitTestApp.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "CppUnitTestApp.mak" CFG="CppUnitTestApp - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "CppUnitTestApp - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "CppUnitTestApp - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "CppUnitTestApp - Win32 Release" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../include" /I "../.." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 +# ADD LINK32 ../../../Lib/cppunit.lib ../../../Lib/testrunner.lib /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "CppUnitTestApp - Win32 Debug" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../../include" /I "../.." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ../../../Lib/cppunitd.lib ../../../Lib/testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "CppUnitTestApp - Win32 Release" +# Name "CppUnitTestApp - Win32 Debug" +# Begin Group "GUI" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\CppUnitTestApp.cpp +# End Source File +# Begin Source File + +SOURCE=.\CppUnitTestApp.h +# End Source File +# Begin Source File + +SOURCE=.\CppUnitTestApp.rc +# End Source File +# Begin Source File + +SOURCE=.\CppUnitTestAppDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\CppUnitTestAppDlg.h +# End Source File +# Begin Source File + +SOURCE=.\Resource.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\res\CppUnitTestApp.ico +# End Source File +# Begin Source File + +SOURCE=.\res\CppUnitTestApp.rc2 +# End Source File +# End Group +# Begin Group "DLL Dependencies" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\lib\testrunner.dll + +!IF "$(CFG)" == "CppUnitTestApp - Win32 Release" + +# Begin Custom Build - $(IntDir)\$(InputName).dll +IntDir=.\Release +InputPath=..\..\..\lib\testrunner.dll +InputName=testrunner + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "CppUnitTestApp - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\lib\testrunnerd.dll + +!IF "$(CFG)" == "CppUnitTestApp - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "CppUnitTestApp - Win32 Debug" + +# Begin Custom Build - $(IntDir)\$(InputName).dll +IntDir=.\Debug +InputPath=..\..\..\lib\testrunnerd.dll +InputName=testrunnerd + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# Begin Group "Tests" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\cppunittest\BaseTestCase.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\BaseTestCase.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\CoreSuite.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\CppUnitTestSuite.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\ExceptionTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\ExceptionTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\ExceptionTestCaseDecoratorTest.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\ExceptionTestCaseDecoratorTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\ExtensionSuite.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\FailureException.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\HelperMacrosTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\HelperMacrosTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\HelperSuite.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\MessageTest.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\MessageTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\MockFunctor.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\MockProtector.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\MockTestCase.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\MockTestCase.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\MockTestListener.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\MockTestListener.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\OrthodoxTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\OrthodoxTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\OutputSuite.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\RepeatedTestTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\RepeatedTestTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\StringToolsTest.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\StringToolsTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\SubclassedTestCase.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\SubclassedTestCase.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\SynchronizedTestResult.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestAssertTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestAssertTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestCallerTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestCallerTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestCaseTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestCaseTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestDecoratorTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestDecoratorTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestFailureTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestFailureTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestPathTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestPathTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestResultCollectorTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestResultCollectorTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestResultTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestResultTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestSetUpTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestSetUpTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestSuiteTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestSuiteTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TestTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\ToolsSuite.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TrackedTestCase.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\TrackedTestCase.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\UnitTestToolSuite.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\XmlElementTest.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\XmlElementTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\XmlOutputterTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\XmlOutputterTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\XmlUniformiser.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\XmlUniformiser.h +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\XmlUniformiserTest.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\cppunittest\XmlUniformiserTest.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\cppunittest\Makefile.am +# End Source File +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsw b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsw new file mode 100644 index 0000000000..e42e5508d5 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsw @@ -0,0 +1,80 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "CppUnitTestApp"=.\CppUnitTestApp.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency + Begin Project Dependency + Project_Dep_Name TestRunner + End Project Dependency + Begin Project Dependency + Project_Dep_Name DSPlugIn + End Project Dependency +}}} + +############################################################################### + +Project: "DSPlugIn"=..\..\..\src\msvc6\DSPlugIn\DSPlugIn.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "TestRunner"=..\..\..\src\msvc6\testrunner\TestRunner.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency + Begin Project Dependency + Project_Dep_Name DSPlugIn + End Project Dependency +}}} + +############################################################################### + +Project: "cppunit"=..\..\..\src\cppunit\cppunit.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.h b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.h new file mode 100644 index 0000000000..542f3f9681 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.h @@ -0,0 +1,52 @@ +// CppUnitTestApp.h : main header file for the CPPUNITTESTAPP application +// + +#if !defined(AFX_CPPUNITTESTAPP_H__6569C745_ED89_4902_9794_AD8422583BC1__INCLUDED_) +#define AFX_CPPUNITTESTAPP_H__6569C745_ED89_4902_9794_AD8422583BC1__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +#include "resource.h" // main symbols + +///////////////////////////////////////////////////////////////////////////// +// CppUnitTestApp: +// See CppUnitTestApp.cpp for the implementation of this class +// + +class CppUnitTestApp : public CWinApp +{ +public: + CppUnitTestApp(); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CppUnitTestApp) + public: + virtual BOOL InitInstance(); + //}}AFX_VIRTUAL + +// Implementation + + //{{AFX_MSG(CppUnitTestApp) + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + +private: + void RunTests(); +}; + + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CPPUNITTESTAPP_H__6569C745_ED89_4902_9794_AD8422583BC1__INCLUDED_) diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.rc b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.rc new file mode 100644 index 0000000000..04d775a5da --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.rc @@ -0,0 +1,219 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 55 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About CppUnitTestApp" +FONT 8, "MS Sans Serif" +BEGIN + ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 + LTEXT "CppUnitTestApp Version 1.0",IDC_STATIC,40,10,119,8, + SS_NOPREFIX + LTEXT "Copyright (C) 2001",IDC_STATIC,40,25,119,8 + DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP +END + +IDD_CPPUNITTESTAPP_DIALOG DIALOGEX 0, 0, 320, 200 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_APPWINDOW +CAPTION "CppUnitTestApp" +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,260,7,50,14 + PUSHBUTTON "Cancel",IDCANCEL,260,23,50,14 + LTEXT "TODO: Place dialog controls here.",IDC_STATIC,50,90,200, + 8 +END + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "\0" + VALUE "FileDescription", "CppUnitTestApp MFC Application\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "CppUnitTestApp\0" + VALUE "LegalCopyright", "Copyright (C) 2001\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "CppUnitTestApp.EXE\0" + VALUE "ProductName", "CppUnitTestApp Application\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_ABOUTBOX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 228 + TOPMARGIN, 7 + BOTTOMMARGIN, 48 + END + + IDD_CPPUNITTESTAPP_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 313 + TOPMARGIN, 7 + BOTTOMMARGIN, 193 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ABOUTBOX "&About CppUnitTestApp..." +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// French (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif //_WIN32\r\n" + "#include ""res\\CppUnitTestApp.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON DISCARDABLE "res\\CppUnitTestApp.ico" +#endif // French (France) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 +#include "res\CppUnitTestApp.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.cpp b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.cpp new file mode 100644 index 0000000000..882e6f935d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.cpp @@ -0,0 +1,170 @@ +// CppUnitTestAppDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "CppUnitTestApp.h" +#include "CppUnitTestAppDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CAboutDlg dialog used for App About + +class CAboutDlg : public CDialog +{ +public: + CAboutDlg(); + +// Dialog Data + //{{AFX_DATA(CAboutDlg) + enum { IDD = IDD_ABOUTBOX }; + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CAboutDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + //{{AFX_MSG(CAboutDlg) + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) +{ + //{{AFX_DATA_INIT(CAboutDlg) + //}}AFX_DATA_INIT +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CAboutDlg) + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) + //{{AFX_MSG_MAP(CAboutDlg) + // No message handlers + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CppUnitTestAppDlg dialog + +CppUnitTestAppDlg::CppUnitTestAppDlg(CWnd* pParent /*=NULL*/) + : CDialog(CppUnitTestAppDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CppUnitTestAppDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); +} + +void CppUnitTestAppDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CppUnitTestAppDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CppUnitTestAppDlg, CDialog) + //{{AFX_MSG_MAP(CppUnitTestAppDlg) + ON_WM_SYSCOMMAND() + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CppUnitTestAppDlg message handlers + +BOOL CppUnitTestAppDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + // Add "About..." menu item to system menu. + + // IDM_ABOUTBOX must be in the system command range. + ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); + ASSERT(IDM_ABOUTBOX < 0xF000); + + CMenu* pSysMenu = GetSystemMenu(FALSE); + if (pSysMenu != NULL) + { + CString strAboutMenu; + strAboutMenu.LoadString(IDS_ABOUTBOX); + if (!strAboutMenu.IsEmpty()) + { + pSysMenu->AppendMenu(MF_SEPARATOR); + pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); + } + } + + // Set the icon for this dialog. The framework does this automatically + // when the application's main window is not a dialog + SetIcon(m_hIcon, TRUE); // Set big icon + SetIcon(m_hIcon, FALSE); // Set small icon + + // TODO: Add extra initialization here + + return TRUE; // return TRUE unless you set the focus to a control +} + +void CppUnitTestAppDlg::OnSysCommand(UINT nID, LPARAM lParam) +{ + if ((nID & 0xFFF0) == IDM_ABOUTBOX) + { + CAboutDlg dlgAbout; + dlgAbout.DoModal(); + } + else + { + CDialog::OnSysCommand(nID, lParam); + } +} + +// If you add a minimize button to your dialog, you will need the code below +// to draw the icon. For MFC applications using the document/view model, +// this is automatically done for you by the framework. + +void CppUnitTestAppDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // device context for painting + + SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); + + // Center icon in client rectangle + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // Draw the icon + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialog::OnPaint(); + } +} + +// The system calls this to obtain the cursor to display while the user drags +// the minimized window. +HCURSOR CppUnitTestAppDlg::OnQueryDragIcon() +{ + return (HCURSOR) m_hIcon; +} diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.h b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.h new file mode 100644 index 0000000000..cc11da8e19 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.h @@ -0,0 +1,49 @@ +// CppUnitTestAppDlg.h : header file +// + +#if !defined(AFX_CPPUNITTESTAPPDLG_H__25E1CF20_72A4_4E25_B930_626DF60AD4C7__INCLUDED_) +#define AFX_CPPUNITTESTAPPDLG_H__25E1CF20_72A4_4E25_B930_626DF60AD4C7__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +///////////////////////////////////////////////////////////////////////////// +// CppUnitTestAppDlg dialog + +class CppUnitTestAppDlg : public CDialog +{ +// Construction +public: + CppUnitTestAppDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CppUnitTestAppDlg) + enum { IDD = IDD_CPPUNITTESTAPP_DIALOG }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CppUnitTestAppDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + HICON m_hIcon; + + // Generated message map functions + //{{AFX_MSG(CppUnitTestAppDlg) + virtual BOOL OnInitDialog(); + afx_msg void OnSysCommand(UINT nID, LPARAM lParam); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CPPUNITTESTAPPDLG_H__25E1CF20_72A4_4E25_B930_626DF60AD4C7__INCLUDED_) diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/ReadMe.txt b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/ReadMe.txt new file mode 100644 index 0000000000..8dcfccb40d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/ReadMe.txt @@ -0,0 +1,88 @@ +======================================================================== + MICROSOFT FOUNDATION CLASS LIBRARY : CppUnitTestApp +======================================================================== + + +AppWizard has created this CppUnitTestApp application for you. This application +not only demonstrates the basics of using the Microsoft Foundation classes +but is also a starting point for writing your application. + +This file contains a summary of what you will find in each of the files that +make up your CppUnitTestApp application. + +CppUnitTestApp.dsp + This file (the project file) contains information at the project level and + is used to build a single project or subproject. Other users can share the + project (.dsp) file, but they should export the makefiles locally. + +CppUnitTestApp.h + This is the main header file for the application. It includes other + project specific headers (including Resource.h) and declares the + CppUnitTestApp application class. + +CppUnitTestApp.cpp + This is the main application source file that contains the application + class CppUnitTestApp. + +CppUnitTestApp.rc + This is a listing of all of the Microsoft Windows resources that the + program uses. It includes the icons, bitmaps, and cursors that are stored + in the RES subdirectory. This file can be directly edited in Microsoft + Visual C++. + +CppUnitTestApp.clw + This file contains information used by ClassWizard to edit existing + classes or add new classes. ClassWizard also uses this file to store + information needed to create and edit message maps and dialog data + maps and to create prototype member functions. + +res\CppUnitTestApp.ico + This is an icon file, which is used as the application's icon. This + icon is included by the main resource file CppUnitTestApp.rc. + +res\CppUnitTestApp.rc2 + This file contains resources that are not edited by Microsoft + Visual C++. You should place all resources not editable by + the resource editor in this file. + + + + +///////////////////////////////////////////////////////////////////////////// + +AppWizard creates one dialog class: + +CppUnitTestAppDlg.h, CppUnitTestAppDlg.cpp - the dialog + These files contain your CppUnitTestAppDlg class. This class defines + the behavior of your application's main dialog. The dialog's + template is in CppUnitTestApp.rc, which can be edited in Microsoft + Visual C++. + + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named CppUnitTestApp.pch and a precompiled types file named StdAfx.obj. + +Resource.h + This is the standard header file, which defines new resource IDs. + Microsoft Visual C++ reads and updates this file. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +If your application uses MFC in a shared DLL, and your application is +in a language other than the operating system's current language, you +will need to copy the corresponding localized resources MFC42XXX.DLL +from the Microsoft Visual C++ CD-ROM onto the system or system32 directory, +and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation. +For example, MFC42DEU.DLL contains resources translated to German.) If you +don't do this, some of the UI elements of your application will remain in the +language of the operating system. + +///////////////////////////////////////////////////////////////////////////// diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/Resource.h b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/Resource.h new file mode 100644 index 0000000000..2a20997700 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/Resource.h @@ -0,0 +1,21 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by CPPUNITTESTAPP.RC +// +#define IDR_MAINFRAME 128 +#define IDM_ABOUTBOX 0x0010 +#define IDD_ABOUTBOX 100 +#define IDS_ABOUTBOX 101 +#define IDD_CPPUNITTESTAPP_DIALOG 102 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS + +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 32771 +#endif +#endif diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.cpp b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.cpp new file mode 100644 index 0000000000..e83293961f --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// CppUnitTestApp.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + + + diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.h b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.h new file mode 100644 index 0000000000..81f2a0c237 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.h @@ -0,0 +1,28 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__EB0CB528_6505_4130_843B_9CA567127807__INCLUDED_) +#define AFX_STDAFX_H__EB0CB528_6505_4130_843B_9CA567127807__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include // MFC core and standard components +#include // MFC extensions +#include // MFC Automation classes +#include // MFC support for Internet Explorer 4 Common Controls +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +#pragma warning( disable : 4786 ) // remove warning "debug symbol length > 255..." + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__EB0CB528_6505_4130_843B_9CA567127807__INCLUDED_) diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.ico b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.ico new file mode 100644 index 0000000000..7eef0bcbe6 Binary files /dev/null and b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.ico differ diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.rc2 b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.rc2 new file mode 100644 index 0000000000..b8d1fca22a --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.rc2 @@ -0,0 +1,13 @@ +// +// CPPUNITTESTAPP.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.cpp new file mode 100644 index 0000000000..a71b7bd98d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.cpp @@ -0,0 +1,50 @@ +#include "ExampleTestCase.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( ExampleTestCase ); + +void ExampleTestCase::example () +{ + CPPUNIT_ASSERT_DOUBLES_EQUAL (1.0, 1.1, 0.05); + CPPUNIT_ASSERT (1 == 0); + CPPUNIT_ASSERT (1 == 1); +} + + +void ExampleTestCase::anotherExample () +{ + CPPUNIT_ASSERT (1 == 2); +} + +void ExampleTestCase::setUp () +{ + m_value1 = 2.0; + m_value2 = 3.0; +} + +void ExampleTestCase::testAdd () +{ + double result = m_value1 + m_value2; + CPPUNIT_ASSERT (result == 6.0); +} + + +void ExampleTestCase::testDivideByZero () +{ + int zero = 0; + int result = 8 / zero; +} + + +void ExampleTestCase::testEquals () +{ + std::auto_ptr l1 (new long (12)); + std::auto_ptr l2 (new long (12)); + + CPPUNIT_ASSERT_EQUAL (12, 12); + CPPUNIT_ASSERT_EQUAL (12L, 12L); + CPPUNIT_ASSERT_EQUAL (*l1, *l2); + + CPPUNIT_ASSERT (12L == 12L); + CPPUNIT_ASSERT_EQUAL (12, 13); + CPPUNIT_ASSERT_DOUBLES_EQUAL (12.0, 11.99, 0.5); +} diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.h new file mode 100644 index 0000000000..9cb2b99f0f --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.h @@ -0,0 +1,41 @@ + +#ifndef CPP_UNIT_EXAMPLETESTCASE_H +#define CPP_UNIT_EXAMPLETESTCASE_H + +#include + +/* + * A test case that is designed to produce + * example errors and failures + * + */ + +class ExampleTestCase : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( ExampleTestCase ); + CPPUNIT_TEST( example ); + CPPUNIT_TEST( anotherExample ); + CPPUNIT_TEST( testAdd ); + CPPUNIT_TEST( testDivideByZero ); + CPPUNIT_TEST( testEquals ); + CPPUNIT_TEST_SUITE_END(); +protected: + + double m_value1; + double m_value2; + +public: + + void setUp (); + +protected: + void example (); + void anotherExample (); + void testAdd (); + void testDivideByZero (); + void testEquals (); + +}; + + +#endif \ No newline at end of file diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.cpp new file mode 100644 index 0000000000..d76abefb4a --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.cpp @@ -0,0 +1,174 @@ +// HostApp.cpp : Defines the class behaviors for the application. +// + +#include "stdafx.h" +#include "HostApp.h" + +#include "MainFrm.h" +#include "HostAppDoc.h" +#include "HostAppView.h" + +// CppUnit: MFC TestRunner +#include +// CppUnit: TestFactoryRegistry to retreive the top test suite that contains all registered tests. +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +static AFX_EXTENSION_MODULE extTestRunner; + +///////////////////////////////////////////////////////////////////////////// +// CHostAppApp + +BEGIN_MESSAGE_MAP(CHostAppApp, CWinApp) + //{{AFX_MSG_MAP(CHostAppApp) + ON_COMMAND(ID_APP_ABOUT, OnAppAbout) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG_MAP + // Standard file based document commands + ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) + ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) + // Standard print setup command + ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CHostAppApp construction + +CHostAppApp::CHostAppApp() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + +///////////////////////////////////////////////////////////////////////////// +// The one and only CHostAppApp object + +CHostAppApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// CHostAppApp initialization + +BOOL CHostAppApp::InitInstance() +{ + // Standard initialization + // If you are not using these features and wish to reduce the size + // of your final executable, you should remove from the following + // the specific initialization routines you do not need. + +#ifdef _AFXDLL +# if _MSC_VER < 1300 // vc6 + Enable3dControls(); // Call this when using MFC in a shared DLL +# endif +#else + Enable3dControlsStatic(); // Call this when linking to MFC statically +#endif + + // Change the registry key under which our settings are stored. + // You should modify this string to be something appropriate + // such as the name of your company or organization. + SetRegistryKey(_T("Local AppWizard-Generated Applications")); + + LoadStdProfileSettings(); // Load standard INI file options (including MRU) + + // Register the application's document templates. Document templates + // serve as the connection between documents, frame windows and views. + + CSingleDocTemplate* pDocTemplate; + pDocTemplate = new CSingleDocTemplate( + IDR_MAINFRAME, + RUNTIME_CLASS(CHostAppDoc), + RUNTIME_CLASS(CMainFrame), // main SDI frame window + RUNTIME_CLASS(CHostAppView)); + AddDocTemplate(pDocTemplate); + + RunUnitTests(); + +/* + // Parse command line for standard shell commands, DDE, file open + CCommandLineInfo cmdInfo; + ParseCommandLine(cmdInfo); + + // Dispatch commands specified on the command line + if (!ProcessShellCommand(cmdInfo)) + return FALSE; + + // The one and only window has been initialized, so show and update it. + m_pMainWnd->ShowWindow(SW_SHOW); + m_pMainWnd->UpdateWindow(); +*/ + + return TRUE; +} + + +void +CHostAppApp::RunUnitTests() +{ + CPPUNIT_NS::MfcUi::TestRunner runner; + runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() ); + + runner.run(); +} + + +///////////////////////////////////////////////////////////////////////////// +// CAboutDlg dialog used for App About + +class CAboutDlg : public CDialog +{ +public: + CAboutDlg(); + +// Dialog Data + //{{AFX_DATA(CAboutDlg) + enum { IDD = IDD_ABOUTBOX }; + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CAboutDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + //{{AFX_MSG(CAboutDlg) + // No message handlers + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) +{ + //{{AFX_DATA_INIT(CAboutDlg) + //}}AFX_DATA_INIT +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CAboutDlg) + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) + //{{AFX_MSG_MAP(CAboutDlg) + // No message handlers + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// App command to run the dialog +void CHostAppApp::OnAppAbout() +{ + CAboutDlg aboutDlg; + aboutDlg.DoModal(); +} + +///////////////////////////////////////////////////////////////////////////// +// CHostAppApp commands diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsp new file mode 100644 index 0000000000..0614435e58 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsp @@ -0,0 +1,446 @@ +# Microsoft Developer Studio Project File - Name="HostApp" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=HostApp - Win32 Debug No Type Info Name +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "HostApp.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "HostApp.mak" CFG="HostApp - Win32 Debug No Type Info Name" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "HostApp - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "HostApp - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "HostApp - Win32 Release Unicode" (based on "Win32 (x86) Application") +!MESSAGE "HostApp - Win32 Debug Unicode" (based on "Win32 (x86) Application") +!MESSAGE "HostApp - Win32 Debug No Type Info Name" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "HostApp - Win32 Release" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 +# ADD LINK32 ../../../Lib/cppunit.lib ../../../Lib/testrunner.lib /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# SUBTRACT LINK32 /pdb:none /map /nodefaultlib + +!ELSEIF "$(CFG)" == "HostApp - Win32 Release Unicode" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "HostApp___Win32_Release_Unicode" +# PROP BASE Intermediate_Dir "HostApp___Win32_Release_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseUnicode" +# PROP Intermediate_Dir "ReleaseUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /D "_UNICODE" /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ../../../Lib/cppunit.lib ../../../Lib/testrunner.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 ../../../Lib/cppunit.lib ../../../Lib/testrunneru.lib /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug Unicode" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "HostApp___Win32_Debug_Unicode" +# PROP BASE Intermediate_Dir "HostApp___Win32_Debug_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugUnicode" +# PROP Intermediate_Dir "DebugUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /D "_UNICODE" /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# SUBTRACT BASE LINK32 /pdb:none /map /nodefaultlib +# ADD LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerud.lib /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /debug /machine:I386 /pdbtype:sept +# SUBTRACT LINK32 /pdb:none /map /nodefaultlib + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug No Type Info Name" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "HostApp___Win32_Debug_No_Type_Info_Name" +# PROP BASE Intermediate_Dir "HostApp___Win32_Debug_No_Type_Info_Name" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugNoTypeInfoName" +# PROP Intermediate_Dir "DebugNoTypeInfoName" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GR- /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /D CPPUNIT_USE_TYPEINFO_NAME=0 /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# SUBTRACT BASE LINK32 /pdb:none /map /nodefaultlib +# ADD LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# SUBTRACT LINK32 /pdb:none /map /nodefaultlib + +!ENDIF + +# Begin Target + +# Name "HostApp - Win32 Release" +# Name "HostApp - Win32 Debug" +# Name "HostApp - Win32 Release Unicode" +# Name "HostApp - Win32 Debug Unicode" +# Name "HostApp - Win32 Debug No Type Info Name" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\ExampleTestCase.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=.\HostApp.cpp +# End Source File +# Begin Source File + +SOURCE=.\HostApp.rc +# End Source File +# Begin Source File + +SOURCE=.\HostAppDoc.cpp +# End Source File +# Begin Source File + +SOURCE=.\HostAppView.cpp +# End Source File +# Begin Source File + +SOURCE=.\MainFrm.cpp +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\ExampleTestCase.h +# End Source File +# Begin Source File + +SOURCE=.\HostApp.h +# End Source File +# Begin Source File + +SOURCE=.\HostAppDoc.h +# End Source File +# Begin Source File + +SOURCE=.\HostAppView.h +# End Source File +# Begin Source File + +SOURCE=.\MainFrm.h +# End Source File +# Begin Source File + +SOURCE=.\Resource.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\res\HostApp.ico +# End Source File +# Begin Source File + +SOURCE=.\res\HostApp.rc2 +# End Source File +# Begin Source File + +SOURCE=.\res\HostAppDoc.ico +# End Source File +# Begin Source File + +SOURCE=.\res\Toolbar.bmp +# End Source File +# End Group +# Begin Group "DLL Dependencies" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\lib\testrunner.dll + +!IF "$(CFG)" == "HostApp - Win32 Release" + +# Begin Custom Build - $(IntDir)\$(InputName).dll +IntDir=.\Release +InputPath=..\..\..\lib\testrunner.dll +InputName=testrunner + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Release Unicode" + +# Begin Custom Build - $(IntDir)\$(InputName).dll +IntDir=.\ReleaseUnicode +InputPath=..\..\..\lib\testrunner.dll +InputName=testrunner + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug Unicode" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug No Type Info Name" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\lib\testrunnerd.dll + +!IF "$(CFG)" == "HostApp - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug" + +# Begin Custom Build - $(IntDir)\$(InputName).dll +IntDir=.\Debug +InputPath=..\..\..\lib\testrunnerd.dll +InputName=testrunnerd + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "HostApp - Win32 Release Unicode" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug Unicode" + +# Begin Custom Build - $(IntDir)\$(InputName).dll +IntDir=.\DebugUnicode +InputPath=..\..\..\lib\testrunnerd.dll +InputName=testrunnerd + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug No Type Info Name" + +# Begin Custom Build - $(IntDir)\$(InputName).dll +IntDir=.\DebugNoTypeInfoName +InputPath=..\..\..\lib\testrunnerd.dll +InputName=testrunnerd + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\lib\testrunneru.dll + +!IF "$(CFG)" == "HostApp - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Release Unicode" + +# Begin Custom Build - Updating DLL $(InputPath) +IntDir=.\ReleaseUnicode +InputPath=..\..\..\lib\testrunneru.dll +InputName=testrunneru + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug No Type Info Name" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\lib\testrunnerud.dll + +!IF "$(CFG)" == "HostApp - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug Unicode" + +# Begin Custom Build - Updating DLL $(InputPath) +IntDir=.\DebugUnicode +InputPath=..\..\..\lib\testrunnerud.dll +InputName=testrunnerud + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "HostApp - Win32 Debug No Type Info Name" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Group +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsw b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsw new file mode 100644 index 0000000000..0cea5a4edc --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsw @@ -0,0 +1,80 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "DSPlugIn"=..\..\..\src\msvc6\DSPlugIn\DSPlugIn.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "HostApp"=.\HostApp.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency + Begin Project Dependency + Project_Dep_Name TestRunner + End Project Dependency + Begin Project Dependency + Project_Dep_Name DSPlugIn + End Project Dependency +}}} + +############################################################################### + +Project: "TestRunner"=..\..\..\src\msvc6\testrunner\TestRunner.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency + Begin Project Dependency + Project_Dep_Name DSPlugIn + End Project Dependency +}}} + +############################################################################### + +Project: "cppunit"=..\..\..\src\cppunit\cppunit.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.h new file mode 100644 index 0000000000..2dadfff8ed --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.h @@ -0,0 +1,53 @@ +// HostApp.h : main header file for the HOSTAPP application +// + +#if !defined(AFX_HOSTAPP_H__A9C94DE7_1663_11D2_A499_00805FC1C042__INCLUDED_) +#define AFX_HOSTAPP_H__A9C94DE7_1663_11D2_A499_00805FC1C042__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +#include "resource.h" // main symbols + +///////////////////////////////////////////////////////////////////////////// +// CHostAppApp: +// See HostApp.cpp for the implementation of this class +// + +class CHostAppApp : public CWinApp +{ +public: + CHostAppApp(); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CHostAppApp) + public: + virtual BOOL InitInstance(); + //}}AFX_VIRTUAL + +// Implementation + + //{{AFX_MSG(CHostAppApp) + afx_msg void OnAppAbout(); + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP(); + +private: + void RunUnitTests(); +}; + + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_HOSTAPP_H__A9C94DE7_1663_11D2_A499_00805FC1C042__INCLUDED_) diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.rc b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.rc new file mode 100644 index 0000000000..097a02ab0d --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.rc @@ -0,0 +1,389 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif\r\n" + "#include ""res\\HostApp.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#include ""afxprint.rc"" // printing/print preview resources\r\n" + "#endif\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON DISCARDABLE "res\\HostApp.ico" +IDR_HOSTAPTYPE ICON DISCARDABLE "res\\HostAppDoc.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDR_MAINFRAME BITMAP MOVEABLE PURE "res\\Toolbar.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// Toolbar +// + +IDR_MAINFRAME TOOLBAR DISCARDABLE 16, 15 +BEGIN + BUTTON ID_FILE_NEW + BUTTON ID_FILE_OPEN + BUTTON ID_FILE_SAVE + SEPARATOR + BUTTON ID_EDIT_CUT + BUTTON ID_EDIT_COPY + BUTTON ID_EDIT_PASTE + SEPARATOR + BUTTON ID_FILE_PRINT + BUTTON ID_APP_ABOUT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_MAINFRAME MENU PRELOAD DISCARDABLE +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&New\tCtrl+N", ID_FILE_NEW + MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN + MENUITEM "&Save\tCtrl+S", ID_FILE_SAVE + MENUITEM "Save &As...", ID_FILE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Print...\tCtrl+P", ID_FILE_PRINT + MENUITEM "Print Pre&view", ID_FILE_PRINT_PREVIEW + MENUITEM "P&rint Setup...", ID_FILE_PRINT_SETUP + MENUITEM SEPARATOR + MENUITEM "Recent File", ID_FILE_MRU_FILE1, GRAYED + MENUITEM SEPARATOR + MENUITEM "E&xit", ID_APP_EXIT + END + POPUP "&Edit" + BEGIN + MENUITEM "&Undo\tCtrl+Z", ID_EDIT_UNDO + MENUITEM SEPARATOR + MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT + MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY + MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE + END + POPUP "&View" + BEGIN + MENUITEM "&Toolbar", ID_VIEW_TOOLBAR + MENUITEM "&Status Bar", ID_VIEW_STATUS_BAR + END + POPUP "&Help" + BEGIN + MENUITEM "&About HostApp...", ID_APP_ABOUT + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE +BEGIN + "N", ID_FILE_NEW, VIRTKEY, CONTROL + "O", ID_FILE_OPEN, VIRTKEY, CONTROL + "S", ID_FILE_SAVE, VIRTKEY, CONTROL + "P", ID_FILE_PRINT, VIRTKEY, CONTROL + "Z", ID_EDIT_UNDO, VIRTKEY, CONTROL + "X", ID_EDIT_CUT, VIRTKEY, CONTROL + "C", ID_EDIT_COPY, VIRTKEY, CONTROL + "V", ID_EDIT_PASTE, VIRTKEY, CONTROL + VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT + VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT + VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL + VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT + VK_F6, ID_NEXT_PANE, VIRTKEY + VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 55 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About HostApp" +FONT 8, "MS Sans Serif" +BEGIN + ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 + LTEXT "HostApp Version 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX + LTEXT "Copyright (C) 1998",IDC_STATIC,40,25,119,8 + DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP +END + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "\0" + VALUE "FileDescription", "HostApp MFC Application\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "HostApp\0" + VALUE "LegalCopyright", "Copyright (C) 1998\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "HostApp.EXE\0" + VALUE "ProductName", "HostApp Application\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_ABOUTBOX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 210 + TOPMARGIN, 7 + BOTTOMMARGIN, 48 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE PRELOAD DISCARDABLE +BEGIN + IDR_MAINFRAME "HostApp\n\nHostAp\n\n\nHostApp.Document\nHostAp Document" +END + +STRINGTABLE PRELOAD DISCARDABLE +BEGIN + AFX_IDS_APP_TITLE "HostApp" + AFX_IDS_IDLEMESSAGE "Ready" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_INDICATOR_EXT "EXT" + ID_INDICATOR_CAPS "CAP" + ID_INDICATOR_NUM "NUM" + ID_INDICATOR_SCRL "SCRL" + ID_INDICATOR_OVR "OVR" + ID_INDICATOR_REC "REC" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_FILE_NEW "Create a new document\nNew" + ID_FILE_OPEN "Open an existing document\nOpen" + ID_FILE_CLOSE "Close the active document\nClose" + ID_FILE_SAVE "Save the active document\nSave" + ID_FILE_SAVE_AS "Save the active document with a new name\nSave As" + ID_FILE_PAGE_SETUP "Change the printing options\nPage Setup" + ID_FILE_PRINT_SETUP "Change the printer and printing options\nPrint Setup" + ID_FILE_PRINT "Print the active document\nPrint" + ID_FILE_PRINT_PREVIEW "Display full pages\nPrint Preview" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_APP_ABOUT "Display program information, version number and copyright\nAbout" + ID_APP_EXIT "Quit the application; prompts to save documents\nExit" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_FILE_MRU_FILE1 "Open this document" + ID_FILE_MRU_FILE2 "Open this document" + ID_FILE_MRU_FILE3 "Open this document" + ID_FILE_MRU_FILE4 "Open this document" + ID_FILE_MRU_FILE5 "Open this document" + ID_FILE_MRU_FILE6 "Open this document" + ID_FILE_MRU_FILE7 "Open this document" + ID_FILE_MRU_FILE8 "Open this document" + ID_FILE_MRU_FILE9 "Open this document" + ID_FILE_MRU_FILE10 "Open this document" + ID_FILE_MRU_FILE11 "Open this document" + ID_FILE_MRU_FILE12 "Open this document" + ID_FILE_MRU_FILE13 "Open this document" + ID_FILE_MRU_FILE14 "Open this document" + ID_FILE_MRU_FILE15 "Open this document" + ID_FILE_MRU_FILE16 "Open this document" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_NEXT_PANE "Switch to the next window pane\nNext Pane" + ID_PREV_PANE "Switch back to the previous window pane\nPrevious Pane" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_WINDOW_SPLIT "Split the active window into panes\nSplit" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_EDIT_CLEAR "Erase the selection\nErase" + ID_EDIT_CLEAR_ALL "Erase everything\nErase All" + ID_EDIT_COPY "Copy the selection and put it on the Clipboard\nCopy" + ID_EDIT_CUT "Cut the selection and put it on the Clipboard\nCut" + ID_EDIT_FIND "Find the specified text\nFind" + ID_EDIT_PASTE "Insert Clipboard contents\nPaste" + ID_EDIT_REPEAT "Repeat the last action\nRepeat" + ID_EDIT_REPLACE "Replace specific text with different text\nReplace" + ID_EDIT_SELECT_ALL "Select the entire document\nSelect All" + ID_EDIT_UNDO "Undo the last action\nUndo" + ID_EDIT_REDO "Redo the previously undone action\nRedo" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_VIEW_TOOLBAR "Show or hide the toolbar\nToggle ToolBar" + ID_VIEW_STATUS_BAR "Show or hide the status bar\nToggle StatusBar" +END + +STRINGTABLE DISCARDABLE +BEGIN + AFX_IDS_SCSIZE "Change the window size" + AFX_IDS_SCMOVE "Change the window position" + AFX_IDS_SCMINIMIZE "Reduce the window to an icon" + AFX_IDS_SCMAXIMIZE "Enlarge the window to full size" + AFX_IDS_SCNEXTWINDOW "Switch to the next document window" + AFX_IDS_SCPREVWINDOW "Switch to the previous document window" + AFX_IDS_SCCLOSE "Close the active window and prompts to save the documents" +END + +STRINGTABLE DISCARDABLE +BEGIN + AFX_IDS_SCRESTORE "Restore the window to normal size" + AFX_IDS_SCTASKLIST "Activate Task List" +END + +STRINGTABLE DISCARDABLE +BEGIN + AFX_IDS_PREVIEW_CLOSE "Close print preview mode\nCancel Preview" +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif +#include "res\HostApp.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#include "afxprint.rc" // printing/print preview resources +#endif +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.cpp new file mode 100644 index 0000000000..297716d901 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.cpp @@ -0,0 +1,80 @@ +// HostAppDoc.cpp : implementation of the CHostAppDoc class +// + +#include "stdafx.h" +#include "HostApp.h" + +#include "HostAppDoc.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CHostAppDoc + +IMPLEMENT_DYNCREATE(CHostAppDoc, CDocument) + +BEGIN_MESSAGE_MAP(CHostAppDoc, CDocument) + //{{AFX_MSG_MAP(CHostAppDoc) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CHostAppDoc construction/destruction + +CHostAppDoc::CHostAppDoc() +{ + // TODO: add one-time construction code here +} + +CHostAppDoc::~CHostAppDoc() +{ +} + + + +BOOL CHostAppDoc::OnNewDocument() +{ + if (!CDocument::OnNewDocument()) + return FALSE; + + return TRUE; +} + + + +///////////////////////////////////////////////////////////////////////////// +// CHostAppDoc serialization + +void CHostAppDoc::Serialize(CArchive& ar) +{ + if (ar.IsStoring()) + { + // TODO: add storing code here + } + else + { + // TODO: add loading code here + } +} + +///////////////////////////////////////////////////////////////////////////// +// CHostAppDoc diagnostics + +#ifdef _DEBUG +void CHostAppDoc::AssertValid() const +{ + CDocument::AssertValid(); +} + +void CHostAppDoc::Dump(CDumpContext& dc) const +{ + CDocument::Dump(dc); +} +#endif //_DEBUG + +///////////////////////////////////////////////////////////////////////////// +// CHostAppDoc commands diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.h new file mode 100644 index 0000000000..4c01daf9f0 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.h @@ -0,0 +1,56 @@ +// HostAppDoc.h : interface of the CHostAppDoc class +// +///////////////////////////////////////////////////////////////////////////// + + +#if !defined(AFX_HOSTAPPDOC_H) +#define AFX_HOSTAPPDOC_H + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + + +class CHostAppDoc : public CDocument +{ +protected: // create from serialization only + CHostAppDoc(); + DECLARE_DYNCREATE(CHostAppDoc) + +// Attributes +public: + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CHostAppDoc) + public: + virtual BOOL OnNewDocument(); + virtual void Serialize(CArchive& ar); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CHostAppDoc(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: + +// Generated message map functions +protected: + //{{AFX_MSG(CHostAppDoc) + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_HOSTAPPDOC_H) diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.cpp new file mode 100644 index 0000000000..2080264589 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.cpp @@ -0,0 +1,105 @@ +// HostAppView.cpp : implementation of the CHostAppView class +// + +#include "stdafx.h" +#include "HostApp.h" + +#include "HostAppDoc.h" +#include "HostAppView.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CHostAppView + +IMPLEMENT_DYNCREATE(CHostAppView, CView) + +BEGIN_MESSAGE_MAP(CHostAppView, CView) + //{{AFX_MSG_MAP(CHostAppView) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG_MAP + // Standard printing commands + ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) + ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) + ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CHostAppView construction/destruction + +CHostAppView::CHostAppView() +{ + // TODO: add construction code here + +} + +CHostAppView::~CHostAppView() +{ +} + +BOOL CHostAppView::PreCreateWindow(CREATESTRUCT& cs) +{ + // TODO: Modify the Window class or styles here by modifying + // the CREATESTRUCT cs + + return CView::PreCreateWindow(cs); +} + +///////////////////////////////////////////////////////////////////////////// +// CHostAppView drawing + +void CHostAppView::OnDraw(CDC* pDC) +{ + CHostAppDoc* pDoc = GetDocument(); + ASSERT_VALID(pDoc); + + // TODO: add draw code for native data here +} + +///////////////////////////////////////////////////////////////////////////// +// CHostAppView printing + +BOOL CHostAppView::OnPreparePrinting(CPrintInfo* pInfo) +{ + // default preparation + return DoPreparePrinting(pInfo); +} + +void CHostAppView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) +{ + // TODO: add extra initialization before printing +} + +void CHostAppView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) +{ + // TODO: add cleanup after printing +} + +///////////////////////////////////////////////////////////////////////////// +// CHostAppView diagnostics + +#ifdef _DEBUG +void CHostAppView::AssertValid() const +{ + CView::AssertValid(); +} + +void CHostAppView::Dump(CDumpContext& dc) const +{ + CView::Dump(dc); +} + +CHostAppDoc* CHostAppView::GetDocument() // non-debug version is inline +{ + ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CHostAppDoc))); + return (CHostAppDoc*)m_pDocument; +} +#endif //_DEBUG + +///////////////////////////////////////////////////////////////////////////// +// CHostAppView message handlers diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.h new file mode 100644 index 0000000000..0a1db291ce --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.h @@ -0,0 +1,66 @@ +// HostAppView.h : interface of the CHostAppView class +// +///////////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_HOSTAPPVIEW_H) +#define AFX_HOSTAPPVIEW_H + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +class CHostAppView : public CView +{ +protected: // create from serialization only + CHostAppView(); + DECLARE_DYNCREATE(CHostAppView) + +// Attributes +public: + CHostAppDoc* GetDocument(); + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CHostAppView) + public: + virtual void OnDraw(CDC* pDC); // overridden to draw this view + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + protected: + virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); + virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); + virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CHostAppView(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: + +// Generated message map functions +protected: + //{{AFX_MSG(CHostAppView) + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +#ifndef _DEBUG // debug version in HostAppView.cpp +inline CHostAppDoc* CHostAppView::GetDocument() + { return (CHostAppDoc*)m_pDocument; } +#endif + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_HOSTAPPVIEW_H) diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.cpp new file mode 100644 index 0000000000..8fbaec93e2 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.cpp @@ -0,0 +1,107 @@ +// MainFrm.cpp : implementation of the CMainFrame class +// + +#include "stdafx.h" +#include "HostApp.h" + +#include "MainFrm.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CMainFrame + +IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) + +BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) + //{{AFX_MSG_MAP(CMainFrame) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code ! + ON_WM_CREATE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +static UINT indicators[] = +{ + ID_SEPARATOR, // status line indicator + ID_INDICATOR_CAPS, + ID_INDICATOR_NUM, + ID_INDICATOR_SCRL, +}; + +///////////////////////////////////////////////////////////////////////////// +// CMainFrame construction/destruction + +CMainFrame::CMainFrame() +{ + // TODO: add member initialization code here + +} + +CMainFrame::~CMainFrame() +{ +} + +int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CFrameWnd::OnCreate(lpCreateStruct) == -1) + return -1; + + if (!m_wndToolBar.Create(this) || + !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) + { + TRACE0("Failed to create toolbar\n"); + return -1; // fail to create + } + + if (!m_wndStatusBar.Create(this) || + !m_wndStatusBar.SetIndicators(indicators, + sizeof(indicators)/sizeof(UINT))) + { + TRACE0("Failed to create status bar\n"); + return -1; // fail to create + } + + // TODO: Remove this if you don't want tool tips or a resizeable toolbar + m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | + CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); + + // TODO: Delete these three lines if you don't want the toolbar to + // be dockable + m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); + EnableDocking(CBRS_ALIGN_ANY); + DockControlBar(&m_wndToolBar); + + return 0; +} + +BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) +{ + // TODO: Modify the Window class or styles here by modifying + // the CREATESTRUCT cs + + return CFrameWnd::PreCreateWindow(cs); +} + +///////////////////////////////////////////////////////////////////////////// +// CMainFrame diagnostics + +#ifdef _DEBUG +void CMainFrame::AssertValid() const +{ + CFrameWnd::AssertValid(); +} + +void CMainFrame::Dump(CDumpContext& dc) const +{ + CFrameWnd::Dump(dc); +} + +#endif //_DEBUG + +///////////////////////////////////////////////////////////////////////////// +// CMainFrame message handlers diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.h new file mode 100644 index 0000000000..12f5c9354c --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.h @@ -0,0 +1,57 @@ +// MainFrm.h : interface of the CMainFrame class +// +///////////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_MAINFRM_H__A9C94DEB_1663_11D2_A499_00805FC1C042__INCLUDED_) +#define AFX_MAINFRM_H__A9C94DEB_1663_11D2_A499_00805FC1C042__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +class CMainFrame : public CFrameWnd +{ +protected: // create from serialization only + CMainFrame(); + DECLARE_DYNCREATE(CMainFrame) + +// Attributes +public: + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CMainFrame) + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CMainFrame(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: // control bar embedded members + CStatusBar m_wndStatusBar; + CToolBar m_wndToolBar; + +// Generated message map functions +protected: + //{{AFX_MSG(CMainFrame) + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_MAINFRM_H__A9C94DEB_1663_11D2_A499_00805FC1C042__INCLUDED_) diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/Makefile.am b/lib/cppunit-1.10.0/examples/msvc6/HostApp/Makefile.am new file mode 100644 index 0000000000..eafbce5dfe --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = res + +EXTRA_DIST = HostApp.rc + diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/Resource.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/Resource.h new file mode 100644 index 0000000000..91d050e28c --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/Resource.h @@ -0,0 +1,20 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by HostApp.rc +// +#define IDD_ABOUTBOX 100 +#define IDR_MAINFRAME 128 +#define IDR_HOSTAPTYPE 129 +#define ID_TESTS_RUNALL 32771 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_3D_CONTROLS 1 +#define _APS_NEXT_RESOURCE_VALUE 130 +#define _APS_NEXT_COMMAND_VALUE 32772 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.cpp new file mode 100644 index 0000000000..23ace16333 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.cpp @@ -0,0 +1,6 @@ +// stdafx.cpp : source file that includes just the standard includes +// HostApp.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.h new file mode 100644 index 0000000000..ded2a3880b --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.h @@ -0,0 +1,26 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__A9C94DE9_1663_11D2_A499_00805FC1C042__INCLUDED_) +#define AFX_STDAFX_H__A9C94DE9_1663_11D2_A499_00805FC1C042__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include // MFC core and standard components +#include // MFC extensions +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +#pragma warning( disable : 4786 ) + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__A9C94DE9_1663_11D2_A499_00805FC1C042__INCLUDED_) diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.ico b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.ico new file mode 100644 index 0000000000..7eef0bcbe6 Binary files /dev/null and b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.ico differ diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.rc2 b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.rc2 new file mode 100644 index 0000000000..fdaa3e57fc --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.rc2 @@ -0,0 +1,13 @@ +// +// HOSTAPP.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostAppDoc.ico b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostAppDoc.ico new file mode 100644 index 0000000000..2a1f1ae6ef Binary files /dev/null and b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostAppDoc.ico differ diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Makefile.am b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Makefile.am new file mode 100644 index 0000000000..ed67e207dd --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = res + +EXTRA_DIST = Toolbar.bmp HostApp.ico HostAppDoc.ico HostApp.rc2 + diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Toolbar.bmp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Toolbar.bmp new file mode 100644 index 0000000000..d501723c1c Binary files /dev/null and b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Toolbar.bmp differ diff --git a/lib/cppunit-1.10.0/examples/msvc6/Makefile.am b/lib/cppunit-1.10.0/examples/msvc6/Makefile.am new file mode 100644 index 0000000000..abce471c53 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/msvc6/Makefile.am @@ -0,0 +1,2 @@ +SUBDIRS = HostApp CppUnitTestApp + diff --git a/lib/cppunit-1.10.0/examples/qt/Example.pro b/lib/cppunit-1.10.0/examples/qt/Example.pro new file mode 100644 index 0000000000..c23a1e8941 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/qt/Example.pro @@ -0,0 +1,11 @@ +TEMPLATE = app +CONFIG = qt warn_on release thread +win32-msvc:INCLUDEPATH = ../../include +win32-msvc:LIBS = ../../lib/cppunit.lib ../../lib/qttestrunner.lib +win32-msvc:TMAKE_CXXFLAGS = /GX /GR +win32-msvc:DEFINES = QT_DLL QTTESTRUNNER_DLL +HEADERS = ExampleTestCase.h +SOURCES = ExampleTestCase.cpp \ + Main.cpp +INTERFACES = +TARGET = example \ No newline at end of file diff --git a/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.cpp b/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.cpp new file mode 100644 index 0000000000..db0195e8c4 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.cpp @@ -0,0 +1,50 @@ +#include "ExampleTestCase.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( ExampleTestCase ); + +void ExampleTestCase::example () +{ + CPPUNIT_ASSERT_DOUBLES_EQUAL (1.0, 1.1, 0.05); + CPPUNIT_ASSERT (1 == 0); + CPPUNIT_ASSERT (1 == 1); +} + + +void ExampleTestCase::anotherExample () +{ + CPPUNIT_ASSERT (1 == 2); +} + +void ExampleTestCase::setUp () +{ + m_value1 = 2.0; + m_value2 = 3.0; +} + +void ExampleTestCase::testAdd () +{ + double result = m_value1 + m_value2; + CPPUNIT_ASSERT (result == 6.0); +} + + +void ExampleTestCase::testDivideByZero () +{ + int zero = 0; + int result = 8 / zero; +} + + +void ExampleTestCase::testEquals () +{ + std::auto_ptr l1 (new long (12)); + std::auto_ptr l2 (new long (12)); + + CPPUNIT_ASSERT_EQUAL (12, 12); + CPPUNIT_ASSERT_EQUAL (12L, 12L); + CPPUNIT_ASSERT_EQUAL (*l1, *l2); + + CPPUNIT_ASSERT (12L == 12L); + CPPUNIT_ASSERT_EQUAL (12, 13); + CPPUNIT_ASSERT_DOUBLES_EQUAL (12.0, 11.99, 0.5); +} diff --git a/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.h b/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.h new file mode 100644 index 0000000000..cba472c35e --- /dev/null +++ b/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.h @@ -0,0 +1,41 @@ +#ifndef CPP_UNIT_EXAMPLETESTCASE_H +#define CPP_UNIT_EXAMPLETESTCASE_H + +#include +#include + +/* + * A test case that is designed to produce + * example errors and failures + * + */ + +class ExampleTestCase : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( ExampleTestCase ); + CPPUNIT_TEST( example ); + CPPUNIT_TEST( anotherExample ); + CPPUNIT_TEST( testAdd ); + CPPUNIT_TEST( testDivideByZero ); + CPPUNIT_TEST( testEquals ); + CPPUNIT_TEST_SUITE_END(); +protected: + + double m_value1; + double m_value2; + +public: + + void setUp (); + +protected: + void example (); + void anotherExample (); + void testAdd (); + void testDivideByZero (); + void testEquals (); + +}; + + +#endif diff --git a/lib/cppunit-1.10.0/examples/qt/Main.cpp b/lib/cppunit-1.10.0/examples/qt/Main.cpp new file mode 100644 index 0000000000..cb90f8bdd2 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/qt/Main.cpp @@ -0,0 +1,16 @@ +#include +#include +#include + + +int main( int argc, char** argv ) +{ + QApplication app( argc, argv ); + + CPPUNIT_NS::QtUi::TestRunner runner; + runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() ); + runner.run( true ); + + return 0; +} + diff --git a/lib/cppunit-1.10.0/examples/qt/build.bat b/lib/cppunit-1.10.0/examples/qt/build.bat new file mode 100755 index 0000000000..5c3d7c6191 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/qt/build.bat @@ -0,0 +1,3 @@ +tmake Example.pro -o Makefile +nmake clean +nmake diff --git a/lib/cppunit-1.10.0/examples/qt/run.bat b/lib/cppunit-1.10.0/examples/qt/run.bat new file mode 100755 index 0000000000..b9296461da --- /dev/null +++ b/lib/cppunit-1.10.0/examples/qt/run.bat @@ -0,0 +1,2 @@ +SET PATH=%PATH%;..\..\lib +Example.exe \ No newline at end of file diff --git a/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.cpp b/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.cpp new file mode 100644 index 0000000000..296823d4d7 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.cpp @@ -0,0 +1,53 @@ +#include "ExampleTestCase.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( ExampleTestCase ); + +void ExampleTestCase::example() +{ + CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, 1.1, 0.05 ); + CPPUNIT_ASSERT( 1 == 0 ); + CPPUNIT_ASSERT( 1 == 1 ); +} + + +void ExampleTestCase::anotherExample() +{ + CPPUNIT_ASSERT (1 == 2); +} + +void ExampleTestCase::setUp() +{ + m_value1 = 2.0; + m_value2 = 3.0; +} + +void ExampleTestCase::testAdd() +{ + double result = m_value1 + m_value2; + CPPUNIT_ASSERT( result == 6.0 ); +} + + +void ExampleTestCase::testDivideByZero() +{ + int zero = 0; + int result = 8 / zero; +} + + +void ExampleTestCase::testEquals() +{ + long* l1 = new long(12); + long* l2 = new long(12); + + CPPUNIT_ASSERT_EQUAL( 12, 12 ); + CPPUNIT_ASSERT_EQUAL( 12L, 12L ); + CPPUNIT_ASSERT_EQUAL( *l1, *l2 ); + + delete l1; + delete l2; + + CPPUNIT_ASSERT( 12L == 12L ); + CPPUNIT_ASSERT_EQUAL( 12, 13 ); + CPPUNIT_ASSERT_DOUBLES_EQUAL( 12.0, 11.99, 0.5 ); +} diff --git a/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.h b/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.h new file mode 100644 index 0000000000..f7fccaac8c --- /dev/null +++ b/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.h @@ -0,0 +1,39 @@ + +#ifndef CPP_UNIT_EXAMPLETESTCASE_H +#define CPP_UNIT_EXAMPLETESTCASE_H + +#include + +/* + * A test case that is designed to produce + * example errors and failures + * + */ + +class ExampleTestCase : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( ExampleTestCase ); + CPPUNIT_TEST( example ); + CPPUNIT_TEST( anotherExample ); + CPPUNIT_TEST( testAdd ); + CPPUNIT_TEST( testDivideByZero ); + CPPUNIT_TEST( testEquals ); + CPPUNIT_TEST_SUITE_END(); + +protected: + double m_value1; + double m_value2; + +public: + void setUp(); + +protected: + void example(); + void anotherExample(); + void testAdd(); + void testDivideByZero(); + void testEquals(); +}; + + +#endif diff --git a/lib/cppunit-1.10.0/examples/simple/Main.cpp b/lib/cppunit-1.10.0/examples/simple/Main.cpp new file mode 100644 index 0000000000..9aff95fc61 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/simple/Main.cpp @@ -0,0 +1,34 @@ +#include +#include +#include +#include +#include +#include + + +int +main( int argc, char* argv[] ) +{ + // Create the event manager and test controller + CPPUNIT_NS::TestResult controller; + + // Add a listener that colllects test result + CPPUNIT_NS::TestResultCollector result; + controller.addListener( &result ); + + // Add a listener that print dots as test run. + CPPUNIT_NS::BriefTestProgressListener progress; + controller.addListener( &progress ); + + // Add the top suite to the test runner + CPPUNIT_NS::TestRunner runner; + runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() ); + runner.run( controller ); + + // Print test in a compiler compatible format. + CPPUNIT_NS::CompilerOutputter outputter( &result, std::cerr ); + outputter.write(); + + return result.wasSuccessful() ? 0 : 1; +} + diff --git a/lib/cppunit-1.10.0/examples/simple/Makefile.am b/lib/cppunit-1.10.0/examples/simple/Makefile.am new file mode 100644 index 0000000000..3a6bca99f0 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/simple/Makefile.am @@ -0,0 +1,12 @@ +EXTRA_DIST = simple.dsp simple_plugin.dsp SimplePlugIn.cpp + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +bin_PROGRAMS=simple + +simple_SOURCES= ExampleTestCase.cpp Main.cpp ExampleTestCase.h + +simple_LDADD= \ + $(top_builddir)/src/cppunit/libcppunit.la + +simple_LDFLAGS = $(LIBADD_DL) diff --git a/lib/cppunit-1.10.0/examples/simple/Makefile.in b/lib/cppunit-1.10.0/examples/simple/Makefile.in new file mode 100644 index 0000000000..a1107d5034 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/simple/Makefile.in @@ -0,0 +1,471 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = simple.dsp simple_plugin.dsp SimplePlugIn.cpp + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +bin_PROGRAMS = simple + +simple_SOURCES = ExampleTestCase.cpp Main.cpp ExampleTestCase.h + +simple_LDADD = \ + $(top_builddir)/src/cppunit/libcppunit.la + + +simple_LDFLAGS = $(LIBADD_DL) +subdir = examples/simple +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = simple$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_simple_OBJECTS = ExampleTestCase.$(OBJEXT) Main.$(OBJEXT) +simple_OBJECTS = $(am_simple_OBJECTS) +simple_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ExampleTestCase.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/Main.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(simple_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(simple_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/simple/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +simple$(EXEEXT): $(simple_OBJECTS) $(simple_DEPENDENCIES) + @rm -f simple$(EXEEXT) + $(CXXLINK) $(simple_LDFLAGS) $(simple_OBJECTS) $(simple_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExampleTestCase.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Main.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(bindir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man 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-info-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: diff --git a/lib/cppunit-1.10.0/examples/simple/SimplePlugIn.cpp b/lib/cppunit-1.10.0/examples/simple/SimplePlugIn.cpp new file mode 100644 index 0000000000..1d24f0607c --- /dev/null +++ b/lib/cppunit-1.10.0/examples/simple/SimplePlugIn.cpp @@ -0,0 +1,8 @@ +// EasyTestPlugIn.cpp : Defines the entry point for the DLL application. +// + +#include + + +// Implements all the plug-in stuffs, WinMain... +CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/lib/cppunit-1.10.0/examples/simple/simple.dsp b/lib/cppunit-1.10.0/examples/simple/simple.dsp new file mode 100644 index 0000000000..f57c137ad0 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/simple/simple.dsp @@ -0,0 +1,104 @@ +# Microsoft Developer Studio Project File - Name="simple" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=simple - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "simple.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "simple.mak" CFG="simple - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "simple - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "simple - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "simple - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib/" + +!ELSEIF "$(CFG)" == "simple - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../lib/" + +!ENDIF + +# Begin Target + +# Name "simple - Win32 Release" +# Name "simple - Win32 Debug" +# Begin Source File + +SOURCE=.\ExampleTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\ExampleTestCase.h +# End Source File +# Begin Source File + +SOURCE=.\Main.cpp +# End Source File +# Begin Source File + +SOURCE=.\Makefile.am +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/examples/simple/simple_plugin.dsp b/lib/cppunit-1.10.0/examples/simple/simple_plugin.dsp new file mode 100644 index 0000000000..9d86084558 --- /dev/null +++ b/lib/cppunit-1.10.0/examples/simple/simple_plugin.dsp @@ -0,0 +1,117 @@ +# Microsoft Developer Studio Project File - Name="simple_plugin" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=simple_plugin - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "simple_plugin.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "simple_plugin.mak" CFG="simple_plugin - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "simple_plugin - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "simple_plugin - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "simple_plugin - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "simple_plugin___Win32_Release" +# PROP BASE Intermediate_Dir "simple_plugin___Win32_Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleasePlugIn" +# PROP Intermediate_Dir "ReleasePlugIn" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SIMPLE_PLUGIN_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SIMPLE_PLUGIN_EXPORTS" /D "CPPUNIT_DLL" /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /dll /machine:I386 /libpath:"../../lib/" +# Begin Special Build Tool +TargetPath=.\ReleasePlugIn\simple_plugin.dll +SOURCE="$(InputPath)" +PostBuild_Desc=Running tests... +PostBuild_Cmds=..\..\lib\DllPlugInTester_dll.exe $(TargetPath) +# End Special Build Tool + +!ELSEIF "$(CFG)" == "simple_plugin - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "simple_plugin___Win32_Debug" +# PROP BASE Intermediate_Dir "simple_plugin___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugPlugIn" +# PROP Intermediate_Dir "DebugPlugIn" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SIMPLE_PLUGIN_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SIMPLE_PLUGIN_EXPORTS" /D "CPPUNIT_DLL" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"DebugPlugIn/simple_plugind.dll" /pdbtype:sept /libpath:"../../lib/" +# Begin Special Build Tool +TargetPath=.\DebugPlugIn\simple_plugind.dll +SOURCE="$(InputPath)" +PostBuild_Desc=Running tests... +PostBuild_Cmds=..\..\lib\DllPlugInTesterd_dll.exe -b --xml tests.xml -c $(TargetPath) +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "simple_plugin - Win32 Release" +# Name "simple_plugin - Win32 Debug" +# Begin Source File + +SOURCE=.\ExampleTestCase.cpp +# End Source File +# Begin Source File + +SOURCE=.\ExampleTestCase.h +# End Source File +# Begin Source File + +SOURCE=.\SimplePlugIn.cpp +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/include/Makefile.am b/lib/cppunit-1.10.0/include/Makefile.am new file mode 100644 index 0000000000..872ec70636 --- /dev/null +++ b/lib/cppunit-1.10.0/include/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = cppunit + +# already handled by toplevel dist-hook. +# DIST_SUBDIRS = msvc6 diff --git a/lib/cppunit-1.10.0/include/Makefile.in b/lib/cppunit-1.10.0/include/Makefile.in new file mode 100644 index 0000000000..4557173cfe --- /dev/null +++ b/lib/cppunit-1.10.0/include/Makefile.in @@ -0,0 +1,451 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = cppunit +subdir = include +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = Makefile.am Makefile.in +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# 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): + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + 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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +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: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ + pdf-recursive ps ps-am ps-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + + +# already handled by toplevel dist-hook. +# DIST_SUBDIRS = msvc6 +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/AdditionalMessage.h b/lib/cppunit-1.10.0/include/cppunit/AdditionalMessage.h new file mode 100644 index 0000000000..917d75414e --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/AdditionalMessage.h @@ -0,0 +1,76 @@ +#ifndef CPPUNIT_ADDITIONALMESSAGE_H +#define CPPUNIT_ADDITIONALMESSAGE_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief An additional Message for assertions. + * \ingroup CreatingNewAssertions + * + * Provides a implicit constructor that takes a single string. This allow this + * class to be used as the message arguments in macros. + * + * The constructed object is either a Message with a single detail string if + * a string was passed to the macro, or a copy of the Message passed to the macro. + * + * Here is an example of usage: + * \code + * + * void checkStringEquals( const std::string &expected, + * const std::string &actual, + * const CppUnit::SourceLine &sourceLine, + * const CppUnit::AdditionalMessage &message ); + * + * #define XTLUT_ASSERT_STRING_EQUAL_MESSAGE( expected, actual, message ) \ + * ::XtlUt::Impl::checkStringEquals( ::Xtl::toString(expected), \ + * ::Xtl::toString(actual), \ + * CPPUNIT_SOURCELINE(), \ + * message ) + * \endcode + * + * In the previous example, the user can specify a simple string for \a message, + * or a complex Message object. + * + * \see Message + */ +class CPPUNIT_API AdditionalMessage : public Message +{ +public: + typedef Message SuperClass; + + /// Constructs an empty Message. + AdditionalMessage(); + + /*! \brief Constructs a Message with the specified detail string. + * \param detail1 Detail string of the message. If empty, then it is not added. + */ + AdditionalMessage( const std::string &detail1 ); + + /*! \brief Constructs a Message with the specified detail string. + * \param detail1 Detail string of the message. If empty, then it is not added. + */ + AdditionalMessage( const char *detail1 ); + + /*! \brief Constructs a copy of the specified message. + * \param other Message to copy. + */ + AdditionalMessage( const Message &other ); + + /*! \brief Assignment operator. + * \param other Message to copy. + * \return Reference on this object. + */ + AdditionalMessage &operator =( const Message &other ); + +private: +}; + + +CPPUNIT_NS_END + + + +#endif // CPPUNIT_ADDITIONALMESSAGE_H diff --git a/lib/cppunit-1.10.0/include/cppunit/Asserter.h b/lib/cppunit-1.10.0/include/cppunit/Asserter.h new file mode 100644 index 0000000000..94dadaad71 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/Asserter.h @@ -0,0 +1,143 @@ +#ifndef CPPUNIT_ASSERTER_H +#define CPPUNIT_ASSERTER_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class Message; + + +/*! \brief A set of functions to help writing assertion macros. + * \ingroup CreatingNewAssertions + * + * Here is an example of assertion, a simplified version of the + * actual assertion implemented in examples/cppunittest/XmlUniformiser.h: + * \code + * #include + * #include + * + * void + * checkXmlEqual( std::string expectedXml, + * std::string actualXml, + * CppUnit::SourceLine sourceLine ) + * { + * std::string expected = XmlUniformiser( expectedXml ).stripped(); + * std::string actual = XmlUniformiser( actualXml ).stripped(); + * + * if ( expected == actual ) + * return; + * + * ::CppUnit::Asserter::failNotEqual( expected, + * actual, + * sourceLine ); + * } + * + * /// Asserts that two XML strings are equivalent. + * #define CPPUNITTEST_ASSERT_XML_EQUAL( expected, actual ) \ + * checkXmlEqual( expected, actual, \ + * CPPUNIT_SOURCELINE() ) + * \endcode + */ +struct Asserter +{ + /*! \brief Throws a Exception with the specified message and location. + */ + static void CPPUNIT_API fail( const Message &message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Throws a Exception with the specified message and location. + * \deprecated Use fail( Message, SourceLine ) instead. + */ + static void CPPUNIT_API fail( std::string message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Throws a Exception with the specified message and location. + * \param shouldFail if \c true then the exception is thrown. Otherwise + * nothing happen. + * \param message Message explaining the assertion failiure. + * \param sourceLine Location of the assertion. + */ + static void CPPUNIT_API failIf( bool shouldFail, + const Message &message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Throws a Exception with the specified message and location. + * \deprecated Use failIf( bool, Message, SourceLine ) instead. + * \param shouldFail if \c true then the exception is thrown. Otherwise + * nothing happen. + * \param message Message explaining the assertion failiure. + * \param sourceLine Location of the assertion. + */ + static void CPPUNIT_API failIf( bool shouldFail, + std::string message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Returns a expected value string for a message. + * Typically used to create 'not equal' message, or to check that a message + * contains the expected content when writing unit tests for your custom + * assertions. + * + * \param expectedValue String that represents the expected value. + * \return \a expectedValue prefixed with "Expected: ". + * \see makeActual(). + */ + static std::string CPPUNIT_API makeExpected( const std::string &expectedValue ); + + /*! \brief Returns an actual value string for a message. + * Typically used to create 'not equal' message, or to check that a message + * contains the expected content when writing unit tests for your custom + * assertions. + * + * \param actualValue String that represents the actual value. + * \return \a actualValue prefixed with "Actual : ". + * \see makeExpected(). + */ + static std::string CPPUNIT_API makeActual( const std::string &actualValue ); + + static Message CPPUNIT_API makeNotEqualMessage( const std::string &expectedValue, + const std::string &actualValue, + const AdditionalMessage &additionalMessage = AdditionalMessage(), + const std::string &shortDescription = "equality assertion failed"); + + /*! \brief Throws an Exception with the specified message and location. + * \param expected Text describing the expected value. + * \param actual Text describing the actual value. + * \param sourceLine Location of the assertion. + * \param additionalMessage Additional message. Usually used to report + * what are the differences between the expected and actual value. + * \param shortDescription Short description for the failure message. + */ + static void CPPUNIT_API failNotEqual( std::string expected, + std::string actual, + const SourceLine &sourceLine, + const AdditionalMessage &additionalMessage = AdditionalMessage(), + std::string shortDescription = "equality assertion failed" ); + + /*! \brief Throws an Exception with the specified message and location. + * \param shouldFail if \c true then the exception is thrown. Otherwise + * nothing happen. + * \param expected Text describing the expected value. + * \param actual Text describing the actual value. + * \param sourceLine Location of the assertion. + * \param additionalMessage Additional message. Usually used to report + * where the "difference" is located. + * \param shortDescription Short description for the failure message. + */ + static void CPPUNIT_API failNotEqualIf( bool shouldFail, + std::string expected, + std::string actual, + const SourceLine &sourceLine, + const AdditionalMessage &additionalMessage = AdditionalMessage(), + std::string shortDescription = "equality assertion failed" ); + +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_ASSERTER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/BriefTestProgressListener.h b/lib/cppunit-1.10.0/include/cppunit/BriefTestProgressListener.h new file mode 100644 index 0000000000..137ca44b31 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/BriefTestProgressListener.h @@ -0,0 +1,43 @@ +#ifndef CPPUNIT_BRIEFTESTPROGRESSLISTENER_H +#define CPPUNIT_BRIEFTESTPROGRESSLISTENER_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief TestListener that prints the name of each test before running it. + * \ingroup TrackingTestExecution + */ +class CPPUNIT_API BriefTestProgressListener : public TestListener +{ +public: + /*! Constructs a BriefTestProgressListener object. + */ + BriefTestProgressListener(); + + /// Destructor. + virtual ~BriefTestProgressListener(); + + void startTest( Test *test ); + + void addFailure( const TestFailure &failure ); + + void endTest( Test *test ); + +private: + /// Prevents the use of the copy constructor. + BriefTestProgressListener( const BriefTestProgressListener © ); + + /// Prevents the use of the copy operator. + void operator =( const BriefTestProgressListener © ); + +private: + bool m_lastTestFailed; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_BRIEFTESTPROGRESSLISTENER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/CompilerOutputter.h b/lib/cppunit-1.10.0/include/cppunit/CompilerOutputter.h new file mode 100644 index 0000000000..e5ca0b331d --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/CompilerOutputter.h @@ -0,0 +1,146 @@ +#ifndef CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H +#define CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class Exception; +class SourceLine; +class Test; +class TestFailure; +class TestResultCollector; + +/*! + * \brief Outputs a TestResultCollector in a compiler compatible format. + * \ingroup WritingTestResult + * + * Printing the test results in a compiler compatible format (assertion + * location has the same format as compiler error), allow you to use your + * IDE to jump to the assertion failure. Location format can be customized (see + * setLocationFormat() ). + * + * For example, when running the test in a post-build with VC++, if an assertion + * fails, you can jump to the assertion by pressing F4 (jump to next error). + * + * Heres is an example of usage (from examples/cppunittest/CppUnitTestMain.cpp): + * \code + * int main( int argc, char* argv[] ) { + * // if command line contains "-selftest" then this is the post build check + * // => the output must be in the compiler error format. + * bool selfTest = (argc > 1) && + * (std::string("-selftest") == argv[1]); + * + * CppUnit::TextUi::TestRunner runner; + * runner.addTest( CppUnitTest::suite() ); // Add the top suite to the test runner + * + * if ( selfTest ) + * { // Change the default outputter to a compiler error format outputter + * // The test runner owns the new outputter. + * runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), + * std::cerr ) ); + * } + * + * // Run the test and don't wait a key if post build check. + * bool wasSuccessful = runner.run( "", !selfTest ); + * + * // Return error code 1 if the one of test failed. + * return wasSuccessful ? 0 : 1; + * } + * \endcode + */ +class CPPUNIT_API CompilerOutputter : public Outputter +{ +public: + /*! \brief Constructs a CompilerOutputter object. + * \param result Result of the test run. + * \param stream Stream used to output test result. + * \param locationFormat Error location format used by your compiler. Default + * to \c CPPUNIT_COMPILER_LOCATION_FORMAT which is defined + * in the configuration file. See setLocationFormat() for detail. + * \see setLocationFormat(). + */ + CompilerOutputter( TestResultCollector *result, + std::ostream &stream, + const std::string &locationFormat = CPPUNIT_COMPILER_LOCATION_FORMAT ); + + /// Destructor. + virtual ~CompilerOutputter(); + + /*! \brief Sets the error location format. + * + * Indicates the format used to report location of failed assertion. This format should + * match the one used by your compiler. + * + * The location format is a string in which the occurence of the following character + * sequence are replaced: + * + * - "%l" => replaced by the line number + * - "%p" => replaced by the full path name of the file ("G:\prg\vc\cppunit\MyTest.cpp") + * - "%f" => replaced by the base name of the file ("MyTest.cpp") + * + * Some examples: + * + * - VC++ error location format: "%p(%l):" => produce "G:\prg\MyTest.cpp(43):" + * - GCC error location format: "%f:%l:" => produce "MyTest.cpp(43):" + * + * Thoses are the two compilers currently supported (gcc format is used if + * VC++ is not detected). If you want your compiler to be automatically supported by + * CppUnit, send a mail to the mailing list (preferred), or submit a feature request + * that indicates how to detect your compiler with the preprocessor (#ifdef...) and + * your compiler location format. + */ + void setLocationFormat( const std::string &locationFormat ); + + /*! \brief Creates an instance of an outputter that matches your current compiler. + * \deprecated This class is specialized through parameterization instead of subclassing... + * Use CompilerOutputter::CompilerOutputter instead. + */ + static CompilerOutputter *defaultOutputter( TestResultCollector *result, + std::ostream &stream ); + + void write(); + + void setNoWrap(); + + void setWrapColumn( int wrapColumn ); + + int wrapColumn() const; + + virtual void printSuccess(); + virtual void printFailureReport(); + virtual void printFailuresList(); + virtual void printStatistics(); + virtual void printFailureDetail( TestFailure *failure ); + virtual void printFailureLocation( SourceLine sourceLine ); + virtual void printFailureType( TestFailure *failure ); + virtual void printFailedTestName( TestFailure *failure ); + virtual void printFailureMessage( TestFailure *failure ); + +private: + /// Prevents the use of the copy constructor. + CompilerOutputter( const CompilerOutputter © ); + + /// Prevents the use of the copy operator. + void operator =( const CompilerOutputter © ); + + virtual bool processLocationFormatCommand( char command, + const SourceLine &sourceLine ); + + virtual std::string extractBaseName( const std::string &fileName ) const; + +private: + TestResultCollector *m_result; + std::ostream &m_stream; + std::string m_locationFormat; + int m_wrapColumn; +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/Exception.h b/lib/cppunit-1.10.0/include/cppunit/Exception.h new file mode 100644 index 0000000000..bf5fcacf66 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/Exception.h @@ -0,0 +1,90 @@ +#ifndef CPPUNIT_EXCEPTION_H +#define CPPUNIT_EXCEPTION_H + +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Exceptions thrown by failed assertions. + * \ingroup BrowsingCollectedTestResult + * + * Exception is an exception that serves + * descriptive strings through its what() method + */ +class CPPUNIT_API Exception : public std::exception +{ +public: + /*! \brief Constructs the exception with the specified message and source location. + * \param message Message associated to the exception. + * \param sourceLine Source location related to the exception. + */ + Exception( const Message &message = Message(), + const SourceLine &sourceLine = SourceLine() ); + +#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED + /*! + * \deprecated Use other constructor instead. + */ + Exception( std::string message, + long lineNumber, + std::string fileName ); +#endif + + /*! \brief Constructs a copy of an exception. + * \param other Exception to copy. + */ + Exception( const Exception &other ); + + /// Destructs the exception + virtual ~Exception() throw(); + + /// Performs an assignment + Exception &operator =( const Exception &other ); + + /// Returns descriptive message + const char *what() const throw(); + + /// Location where the error occured + SourceLine sourceLine() const; + + /// Message related to the exception. + Message message() const; + + /// Set the message. + void setMessage( const Message &message ); + +#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED + /// The line on which the error occurred + long lineNumber() const; + + /// The file in which the error occurred + std::string fileName() const; + + static const std::string UNKNOWNFILENAME; + static const long UNKNOWNLINENUMBER; +#endif + + /// Clones the exception. + virtual Exception *clone() const; + +protected: + // VC++ does not recognize call to parent class when prefixed + // with a namespace. This is a workaround. + typedef std::exception SuperClass; + + Message m_message; + SourceLine m_sourceLine; + std::string m_whatMessage; +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_EXCEPTION_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/Makefile.am new file mode 100644 index 0000000000..c743a67c54 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/Makefile.am @@ -0,0 +1,42 @@ +SUBDIRS = extensions ui plugin config tools portability + +DISTCLEANFILES = config-auto.h + +libcppunitincludedir = $(includedir)/cppunit +libcppunitinclude_HEADERS = \ + config-auto.h \ + AdditionalMessage.h \ + Asserter.h \ + BriefTestProgressListener.h \ + CompilerOutputter.h \ + Exception.h \ + Message.h \ + Outputter.h \ + Portability.h \ + Protector.h \ + SourceLine.h \ + SynchronizedObject.h \ + Test.h \ + TestAssert.h \ + TestCase.h \ + TestCaller.h \ + TestComposite.h \ + TestFailure.h \ + TestFixture.h \ + TestLeaf.h \ + TestPath.h \ + TestResult.h \ + TestResultCollector.h \ + TestRunner.h \ + TestSuccessListener.h \ + TestSuite.h \ + TextOutputter.h \ + TextTestProgressListener.h \ + TextTestResult.h \ + TextTestRunner.h \ + TestListener.h \ + XmlOutputter.h \ + XmlOutputterHook.h + +dist-hook: + rm -f $(distdir)/config-auto.h diff --git a/lib/cppunit-1.10.0/include/cppunit/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/Makefile.in new file mode 100644 index 0000000000..b1d417a95d --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/Makefile.in @@ -0,0 +1,516 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = extensions ui plugin config tools portability + +DISTCLEANFILES = config-auto.h + +libcppunitincludedir = $(includedir)/cppunit +libcppunitinclude_HEADERS = \ + config-auto.h \ + AdditionalMessage.h \ + Asserter.h \ + BriefTestProgressListener.h \ + CompilerOutputter.h \ + Exception.h \ + Message.h \ + Outputter.h \ + Portability.h \ + Protector.h \ + SourceLine.h \ + SynchronizedObject.h \ + Test.h \ + TestAssert.h \ + TestCase.h \ + TestCaller.h \ + TestComposite.h \ + TestFailure.h \ + TestFixture.h \ + TestLeaf.h \ + TestPath.h \ + TestResult.h \ + TestResultCollector.h \ + TestRunner.h \ + TestSuccessListener.h \ + TestSuite.h \ + TextOutputter.h \ + TextTestProgressListener.h \ + TextTestResult.h \ + TextTestRunner.h \ + TestListener.h \ + XmlOutputter.h \ + XmlOutputterHook.h + +subdir = include/cppunit +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +HEADERS = $(libcppunitinclude_HEADERS) + + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +uninstall-libcppunitincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +# 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): + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: install-libcppunitincludeHEADERS + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +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: uninstall-info-am uninstall-libcppunitincludeHEADERS + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive \ + install-libcppunitincludeHEADERS install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-libcppunitincludeHEADERS \ + uninstall-recursive + + +dist-hook: + rm -f $(distdir)/config-auto.h +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/Message.h b/lib/cppunit-1.10.0/include/cppunit/Message.h new file mode 100644 index 0000000000..9b12431eed --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/Message.h @@ -0,0 +1,152 @@ +#ifndef CPPUNIT_MESSAGE_H +#define CPPUNIT_MESSAGE_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + + +CPPUNIT_NS_BEGIN + + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +#endif + +/*! \brief Message associated to an Exception. + * \ingroup CreatingNewAssertions + * A message is composed of two items: + * - a short description (~20/30 characters) + * - a list of detail strings + * + * The short description is used to indicate how the detail strings should be + * interpreted. It usually indicates the failure types, such as + * "assertion failed", "forced failure", "unexpected exception caught", + * "equality assertion failed"... It should not contains new line character (\n). + * + * Detail strings are used to provide more information about the failure. It + * can contains the asserted expression, the expected and actual values in an + * equality assertion, some addional messages... Detail strings can contains + * new line characters (\n). + */ +class CPPUNIT_API Message +{ +public: + Message(); + + explicit Message( const std::string &shortDescription ); + + Message( const std::string &shortDescription, + const std::string &detail1 ); + + Message( const std::string &shortDescription, + const std::string &detail1, + const std::string &detail2 ); + + Message( const std::string &shortDescription, + const std::string &detail1, + const std::string &detail2, + const std::string &detail3 ); + + /*! \brief Returns the short description. + * \return Short description. + */ + const std::string &shortDescription() const; + + /*! \brief Returns the number of detail string. + * \return Number of detail string. + */ + int detailCount() const; + + /*! \brief Returns the detail at the specified index. + * \param index Zero based index of the detail string to return. + * \returns Detail string at the specified index. + * \exception std::invalid_argument if \a index < 0 or index >= detailCount(). + */ + std::string detailAt( int index ) const; + + /*! \brief Returns a string that represents a list of the detail strings. + * + * Example: + * \code + * Message message( "not equal", "Expected: 3", "Actual: 7" ); + * std::string details = message.details(); + * // details contains: + * // "- Expected: 3\n- Actual: 7\n" \endcode + * + * \return A string that is a concatenation of all the detail strings. Each detail + * string is prefixed with '- ' and suffixed with '\n' before being + * concatenated to the other. + */ + std::string details() const; + + /*! \brief Removes all detail strings. + */ + void clearDetails(); + + /*! \brief Adds a single detail string. + * \param detail Detail string to add. + */ + void addDetail( const std::string &detail ); + + /*! \brief Adds two detail strings. + * \param detail1 Detail string to add. + * \param detail2 Detail string to add. + */ + void addDetail( const std::string &detail1, + const std::string &detail2 ); + + /*! \brief Adds three detail strings. + * \param detail1 Detail string to add. + * \param detail2 Detail string to add. + * \param detail3 Detail string to add. + */ + void addDetail( const std::string &detail1, + const std::string &detail2, + const std::string &detail3 ); + + /*! \brief Adds the detail strings of the specified message. + * \param message All the detail strings of this message are added to this one. + */ + void addDetail( const Message &message ); + + /*! \brief Sets the short description. + * \param shortDescription New short description. + */ + void setShortDescription( const std::string &shortDescription ); + + /*! \brief Tests if a message is identical to another one. + * \param other Message this message is compared to. + * \return \c true if the two message are identical, \c false otherwise. + */ + bool operator ==( const Message &other ) const; + + + /*! \brief Tests if a message is different from another one. + * \param other Message this message is compared to. + * \return \c true if the two message are not identical, \c false otherwise. + */ + bool operator !=( const Message &other ) const; + +private: + std::string m_shortDescription; + + typedef CppUnitDeque Details; + Details m_details; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_MESSAGE_H diff --git a/lib/cppunit-1.10.0/include/cppunit/Outputter.h b/lib/cppunit-1.10.0/include/cppunit/Outputter.h new file mode 100644 index 0000000000..f31d6815dc --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/Outputter.h @@ -0,0 +1,26 @@ +#ifndef CPPUNIT_OUTPUTTER_H +#define CPPUNIT_OUTPUTTER_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Abstract outputter to print test result summary. + * \ingroup WritingTestResult + */ +class CPPUNIT_API Outputter +{ +public: + /// Destructor. + virtual ~Outputter() {} + + virtual void write() =0; +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_OUTPUTTER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/Portability.h b/lib/cppunit-1.10.0/include/cppunit/Portability.h new file mode 100644 index 0000000000..b2080e0442 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/Portability.h @@ -0,0 +1,209 @@ +#ifndef CPPUNIT_PORTABILITY_H +#define CPPUNIT_PORTABILITY_H + +/* include platform specific config */ +#if defined(__BORLANDC__) +# include +#elif defined (_MSC_VER) +# include +#else +# include +#endif + +// Version number of package +#ifndef CPPUNIT_VERSION +#define CPPUNIT_VERSION "1.9.10" +#endif + +#include // define CPPUNIT_API & CPPUNIT_NEED_DLL_DECL +#include + + +/* Options that the library user may switch on or off. + * If the user has not done so, we chose default values. + */ + + +/* Define to 1 if you wish to have the old-style macros + assert(), assertEqual(), assertDoublesEqual(), and assertLongsEqual() */ +#if !defined(CPPUNIT_ENABLE_NAKED_ASSERT) +# define CPPUNIT_ENABLE_NAKED_ASSERT 0 +#endif + +/* Define to 1 if you wish to have the old-style CU_TEST family + of macros. */ +#if !defined(CPPUNIT_ENABLE_CU_TEST_MACROS) +# define CPPUNIT_ENABLE_CU_TEST_MACROS 0 +#endif + +/* Define to 1 if the preprocessor expands (#foo) to "foo" (quotes incl.) + I don't think there is any C preprocess that does NOT support this! */ +#if !defined(CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION) +# define CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION 1 +#endif + +/* Assumes that STL and CppUnit are in global space if the compiler does not + support namespace. */ +#if !defined(CPPUNIT_HAVE_NAMESPACES) +# if !defined(CPPUNIT_NO_NAMESPACE) +# define CPPUNIT_NO_NAMESPACE 1 +# endif // !defined(CPPUNIT_NO_NAMESPACE) +# if !defined(CPPUNIT_NO_STD_NAMESPACE) +# define CPPUNIT_NO_STD_NAMESPACE 1 +# endif // !defined(CPPUNIT_NO_STD_NAMESPACE) +#endif // !defined(CPPUNIT_HAVE_NAMESPACES) + +/* Define CPPUNIT_STD_NEED_ALLOCATOR to 1 if you need to specify + * the allocator you used when instantiating STL container. Typically + * used for compilers that do not support template default parameter. + * CPPUNIT_STD_ALLOCATOR will be used as the allocator. Default is + * std::allocator. On some compilers, you may need to change this to + * std::allocator. + */ +#if CPPUNIT_STD_NEED_ALLOCATOR +# if !defined(CPPUNIT_STD_ALLOCATOR) +# define CPPUNIT_STD_ALLOCATOR std::allocator +# endif // !defined(CPPUNIT_STD_ALLOCATOR) +#endif // defined(CPPUNIT_STD_NEED_ALLOCATOR) + + +// Compiler error location format for CompilerOutputter +// If not define, assumes that it's gcc +// See class CompilerOutputter for format. +#if !defined(CPPUNIT_COMPILER_LOCATION_FORMAT) +# define CPPUNIT_COMPILER_LOCATION_FORMAT "%f:%l:" +#endif + +// If CPPUNIT_HAVE_CPP_CAST is defined, then c++ style cast will be used, +// otherwise, C style cast are used. +#if defined( CPPUNIT_HAVE_CPP_CAST ) +# define CPPUNIT_CONST_CAST( TargetType, pointer ) \ + const_cast( pointer ) + +# define CPPUNIT_STATIC_CAST( TargetType, pointer ) \ + static_cast( pointer ) +#else // defined( CPPUNIT_HAVE_CPP_CAST ) +# define CPPUNIT_CONST_CAST( TargetType, pointer ) \ + ((TargetType)( pointer )) +# define CPPUNIT_STATIC_CAST( TargetType, pointer ) \ + ((TargetType)( pointer )) +#endif // defined( CPPUNIT_HAVE_CPP_CAST ) + +// If CPPUNIT_NO_STD_NAMESPACE is defined then STL are in the global space. +// => Define macro 'std' to nothing +#if defined(CPPUNIT_NO_STD_NAMESPACE) +# undef std +# define std +#endif // defined(CPPUNIT_NO_STD_NAMESPACE) + +// If CPPUNIT_NO_NAMESPACE is defined, then put CppUnit classes in the +// global namespace: the compiler does not support namespace. +#if defined(CPPUNIT_NO_NAMESPACE) +# define CPPUNIT_NS_BEGIN +# define CPPUNIT_NS_END +# define CPPUNIT_NS +#else // defined(CPPUNIT_NO_NAMESPACE) +# define CPPUNIT_NS_BEGIN namespace CppUnit { +# define CPPUNIT_NS_END } +# define CPPUNIT_NS CppUnit +#endif // defined(CPPUNIT_NO_NAMESPACE) + +/*! Stringize a symbol. + * + * Use this macro to convert a preprocessor symbol to a string. + * + * Example of usage: + * \code + * #define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTestPlugIn + * const char *name = CPPUNIT_STRINGIZE( CPPUNIT_PLUGIN_EXPORTED_NAME ); + * \endcode + */ +#define CPPUNIT_STRINGIZE( symbol ) _CPPUNIT_DO_STRINGIZE( symbol ) + +/// \internal +#define _CPPUNIT_DO_STRINGIZE( symbol ) #symbol + +/*! Joins to symbol after expanding them into string. + * + * Use this macro to join two symbols. Example of usage: + * + * \code + * #define MAKE_UNIQUE_NAME(prefix) CPPUNIT_JOIN( prefix, __LINE__ ) + * \endcode + * + * The macro defined in the example concatenate a given prefix with the line number + * to obtain a 'unique' identifier. + * + * \internal From boost documentation: + * The following piece of macro magic joins the two + * arguments together, even when one of the arguments is + * itself a macro (see 16.3.1 in C++ standard). The key + * is that macro expansion of macro arguments does not + * occur in CPPUNIT_JOIN2 but does in CPPUNIT_JOIN. + */ +#define CPPUNIT_JOIN( symbol1, symbol2 ) _CPPUNIT_DO_JOIN( symbol1, symbol2 ) + +/// \internal +#define _CPPUNIT_DO_JOIN( symbol1, symbol2 ) _CPPUNIT_DO_JOIN2( symbol1, symbol2 ) + +/// \internal +#define _CPPUNIT_DO_JOIN2( symbol1, symbol2 ) symbol1##symbol2 + +/*! Adds the line number to the specified string to create a unique identifier. + * \param prefix Prefix added to the line number to create a unique identifier. + * \see CPPUNIT_TEST_SUITE_REGISTRATION for an example of usage. + */ +#define CPPUNIT_MAKE_UNIQUE_NAME( prefix ) CPPUNIT_JOIN( prefix, __LINE__ ) + +/*! Defines wrap colunm for %CppUnit. Used by CompilerOuputter. + */ +#if !defined(CPPUNIT_WRAP_COLUMN) +# define CPPUNIT_WRAP_COLUMN 79 +#endif + + +/* perform portability hacks */ + + +/* Define CPPUNIT_SSTREAM as a stream with a "std::string str()" + * method. + */ +#if CPPUNIT_HAVE_SSTREAM +# include + CPPUNIT_NS_BEGIN + + typedef std::ostringstream OStringStream; + + CPPUNIT_NS_END +#elif CPPUNIT_HAVE_CLASS_STRSTREAM +# include +# if CPPUNIT_HAVE_STRSTREAM +# include +# else // CPPUNIT_HAVE_STRSTREAM +# include +# endif // CPPUNIT_HAVE_CLASS_STRSTREAM + + CPPUNIT_NS_BEGIN + + class OStringStream : public std::ostrstream + { + public: + std::string str() + { +// (*this) << '\0'; +// std::string msg(std::ostrstream::str()); +// std::ostrstream::freeze(false); +// return msg; +// Alternative implementation that don't rely on freeze which is not +// available on some platforms: + return std::string( std::ostrstream::str(), pcount() ); + } + }; + + CPPUNIT_NS_END +#else // CPPUNIT_HAVE_CLASS_STRSTREAM +# error Cannot define CppUnit::OStringStream. +#endif // CPPUNIT_HAVE_SSTREAM + + +#endif // CPPUNIT_PORTABILITY_H diff --git a/lib/cppunit-1.10.0/include/cppunit/Protector.h b/lib/cppunit-1.10.0/include/cppunit/Protector.h new file mode 100644 index 0000000000..d14e75f641 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/Protector.h @@ -0,0 +1,94 @@ +#ifndef CPPUNIT_PROTECTOR_H +#define CPPUNIT_PROTECTOR_H + +#include + +CPPUNIT_NS_BEGIN + +class Exception; +class Message; +class ProtectorContext; +class TestResult; + + +class CPPUNIT_API Functor +{ +public: + virtual ~Functor(); + + virtual bool operator()() const =0; +}; + + +/*! \brief Protects one or more test case run. + * + * Protector are used to globably 'decorate' a test case. The most common + * usage of Protector is to catch exception that do not subclass std::exception, + * such as MFC CException class or Rogue Wave RWXMsg class, and capture the + * message associated to the exception. In fact, CppUnit capture message from + * Exception and std::exception using a Protector. + * + * Protector are chained. When you add a Protector using + * TestResult::pushProtector(), your protector is in fact passed as a Functor + * to the first protector of the chain. + * + * TestCase protects call to setUp(), runTest() and tearDown() by calling + * TestResult::protect(). + * + * Because the protector chain is handled by TestResult, a protector can be + * active for a single test, or a complete test run. + * + * Here are some possible usages: + * - run all test case in a separate thread and assumes the test failed if it + * did not finish in a given time (infinite loop work around) + * - performance tracing : time only the runTest() time. + * \sa TestResult, TestCase, TestListener. + */ +class CPPUNIT_API Protector +{ +public: + virtual ~Protector(); + + virtual bool protect( const Functor &functor, + const ProtectorContext &context ) =0; + +protected: + void reportError( const ProtectorContext &context, + const Exception &error ) const; + + void reportError( const ProtectorContext &context, + const Message &message, + const SourceLine &sourceLine = SourceLine() ) const; + + void reportFailure( const ProtectorContext &context, + const Exception &failure ) const; + + Message actualMessage( const Message &message, + const ProtectorContext &context ) const; +}; + + +/*! \brief Scoped protector push to TestResult. + * + * Adds the specified Protector to the specified TestResult for the object + * life-time. + */ +class CPPUNIT_API ProtectorGuard +{ +public: + /// Pushes the specified protector. + ProtectorGuard( TestResult *result, + Protector *protector ); + + /// Pops the protector. + ~ProtectorGuard(); + +private: + TestResult *m_result; +}; + +CPPUNIT_NS_END + + +#endif // CPPUNIT_PROTECTOR_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/SourceLine.h b/lib/cppunit-1.10.0/include/cppunit/SourceLine.h new file mode 100644 index 0000000000..71eeaed1c1 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/SourceLine.h @@ -0,0 +1,58 @@ +#ifndef CPPUNIT_SOURCELINE_H +#define CPPUNIT_SOURCELINE_H + +#include +#include + +/*! \brief Constructs a SourceLine object initialized with the location where the macro is expanded. + * \ingroup CreatingNewAssertions + * \relates CppUnit::SourceLine + * Used to write your own assertion macros. + * \see Asserter for example of usage. + */ +#define CPPUNIT_SOURCELINE() CPPUNIT_NS::SourceLine( __FILE__, __LINE__ ) + + +CPPUNIT_NS_BEGIN + + +/*! \brief Represents a source line location. + * \ingroup CreatingNewAssertions + * \ingroup BrowsingCollectedTestResult + * + * Used to capture the failure location in assertion. + * + * Use the CPPUNIT_SOURCELINE() macro to construct that object. Typically used when + * writing an assertion macro in association with Asserter. + * + * \see Asserter. + */ +class CPPUNIT_API SourceLine +{ +public: + SourceLine(); + + SourceLine( const std::string &fileName, + int lineNumber ); + + /// Destructor. + virtual ~SourceLine(); + + bool isValid() const; + + int lineNumber() const; + + std::string fileName() const; + + bool operator ==( const SourceLine &other ) const; + bool operator !=( const SourceLine &other ) const; + +private: + std::string m_fileName; + int m_lineNumber; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_SOURCELINE_H diff --git a/lib/cppunit-1.10.0/include/cppunit/SynchronizedObject.h b/lib/cppunit-1.10.0/include/cppunit/SynchronizedObject.h new file mode 100644 index 0000000000..0f7d094aa5 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/SynchronizedObject.h @@ -0,0 +1,80 @@ +#ifndef CPPUNIT_SYNCHRONIZEDOBJECT_H +#define CPPUNIT_SYNCHRONIZEDOBJECT_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Base class for synchronized object. + * + * Synchronized object are object which members are used concurrently by mutiple + * threads. + * + * This class define the class SynchronizationObject which must be subclassed + * to implement an actual lock. + * + * Each instance of this class holds a pointer on a lock object. + * + * See src/msvc6/MfcSynchronizedObject.h for an example. + */ +class CPPUNIT_API SynchronizedObject +{ +public: + /*! \brief Abstract synchronization object (mutex) + */ + class SynchronizationObject + { + public: + SynchronizationObject() {} + virtual ~SynchronizationObject() {} + + virtual void lock() {} + virtual void unlock() {} + }; + + /*! Constructs a SynchronizedObject object. + */ + SynchronizedObject( SynchronizationObject *syncObject =0 ); + + /// Destructor. + virtual ~SynchronizedObject(); + +protected: + /*! \brief Locks a synchronization object in the current scope. + */ + class ExclusiveZone + { + SynchronizationObject *m_syncObject; + + public: + ExclusiveZone( SynchronizationObject *syncObject ) + : m_syncObject( syncObject ) + { + m_syncObject->lock(); + } + + ~ExclusiveZone() + { + m_syncObject->unlock (); + } + }; + + virtual void setSynchronizationObject( SynchronizationObject *syncObject ); + +protected: + SynchronizationObject *m_syncObject; + +private: + /// Prevents the use of the copy constructor. + SynchronizedObject( const SynchronizedObject © ); + + /// Prevents the use of the copy operator. + void operator =( const SynchronizedObject © ); +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_SYNCHRONIZEDOBJECT_H diff --git a/lib/cppunit-1.10.0/include/cppunit/Test.h b/lib/cppunit-1.10.0/include/cppunit/Test.h new file mode 100644 index 0000000000..a56be0fbea --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/Test.h @@ -0,0 +1,117 @@ +#ifndef CPPUNIT_TEST_H +#define CPPUNIT_TEST_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class TestResult; +class TestPath; + +/*! \brief Base class for all test objects. + * \ingroup BrowsingCollectedTestResult + * + * All test objects should be a subclass of Test. Some test objects, + * TestCase for example, represent one individual test. Other test + * objects, such as TestSuite, are comprised of several tests. + * + * When a Test is run, the result is collected by a TestResult object. + * + * \see TestCase + * \see TestSuite + */ +class CPPUNIT_API Test +{ +public: + virtual ~Test() {}; + + /*! \brief Run the test, collecting results. + */ + virtual void run( TestResult *result ) =0; + + /*! \brief Return the number of test cases invoked by run(). + * + * The base unit of testing is the class TestCase. This + * method returns the number of TestCase objects invoked by + * the run() method. + */ + virtual int countTestCases () const =0; + + /*! \brief Returns the number of direct child of the test. + */ + virtual int getChildTestCount() const =0; + + /*! \brief Returns the child test of the specified index. + * + * This method test if the index is valid, then call doGetChildTestAt() if + * the index is valid. Otherwise std::out_of_range exception is thrown. + * + * You should override doGetChildTestAt() method. + * + * \param index Zero based index of the child test to return. + * \return Pointer on the test. Never \c NULL. + * \exception std::out_of_range is \a index is < 0 or >= getChildTestCount(). + */ + virtual Test *getChildTestAt( int index ) const; + + /*! \brief Returns the test name. + * + * Each test has a name. This name may be used to find the + * test in a suite or registry of tests. + */ + virtual std::string getName () const =0; + + /*! \brief Finds the test with the specified name and its parents test. + * \param testName Name of the test to find. + * \param testPath If the test is found, then all the tests traversed to access + * \a test are added to \a testPath, including \c this and \a test. + * \return \c true if a test with the specified name is found, \c false otherwise. + */ + virtual bool findTestPath( const std::string &testName, + TestPath &testPath ) const; + + /*! \brief Finds the specified test and its parents test. + * \param test Test to find. + * \param testPath If the test is found, then all the tests traversed to access + * \a test are added to \a testPath, including \c this and \a test. + * \return \c true if the specified test is found, \c false otherwise. + */ + virtual bool findTestPath( const Test *test, + TestPath &testPath ) const; + + /*! \brief Finds the test with the specified name in the hierarchy. + * \param testName Name of the test to find. + * \return Pointer on the first test found that is named \a testName. Never \c NULL. + * \exception std::invalid_argument if no test named \a testName is found. + */ + virtual Test *findTest( const std::string &testName ) const; + + /*! \brief Resolved the specified test path with this test acting as 'root'. + * \param testPath Test path string to resolve. + * \return Resolved TestPath. + * \exception std::invalid_argument if \a testPath could not be resolved. + * \see TestPath. + */ + virtual TestPath resolveTestPath( const std::string &testPath ) const; + +protected: + /*! Throws an exception if the specified index is invalid. + * \param index Zero base index of a child test. + * \exception std::out_of_range is \a index is < 0 or >= getChildTestCount(). + */ + virtual void checkIsValidIndex( int index ) const; + + /*! \brief Returns the child test of the specified valid index. + * \param index Zero based valid index of the child test to return. + * \return Pointer on the test. Never \c NULL. + */ + virtual Test *doGetChildTestAt( int index ) const =0; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TEST_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/TestAssert.h b/lib/cppunit-1.10.0/include/cppunit/TestAssert.h new file mode 100644 index 0000000000..695ccb5dd2 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestAssert.h @@ -0,0 +1,289 @@ +#ifndef CPPUNIT_TESTASSERT_H +#define CPPUNIT_TESTASSERT_H + +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Traits used by CPPUNIT_ASSERT_EQUAL(). + * + * Here is an example of specialization of that traits: + * + * \code + * template<> + * struct assertion_traits // specialization for the std::string type + * { + * static bool equal( const std::string& x, const std::string& y ) + * { + * return x == y; + * } + * + * static std::string toString( const std::string& x ) + * { + * std::string text = '"' + x + '"'; // adds quote around the string to see whitespace + * OStringStream ost; + * ost << text; + * return ost.str(); + * } + * }; + * \endcode + */ +template +struct assertion_traits +{ + static bool equal( const T& x, const T& y ) + { + return x == y; + } + + static std::string toString( const T& x ) + { + OStringStream ost; + ost << x; + return ost.str(); + } +}; + + +/*! \brief (Implementation) Asserts that two objects of the same type are equals. + * Use CPPUNIT_ASSERT_EQUAL instead of this function. + * \sa assertion_traits, Asserter::failNotEqual(). + */ +template +void assertEquals( const T& expected, + const T& actual, + SourceLine sourceLine, + const std::string &message ) +{ + if ( !assertion_traits::equal(expected,actual) ) // lazy toString conversion... + { + Asserter::failNotEqual( assertion_traits::toString(expected), + assertion_traits::toString(actual), + sourceLine, + message ); + } +} + +/*! \brief (Implementation) Asserts that two double are equals given a tolerance. + * Use CPPUNIT_ASSERT_DOUBLES_EQUAL instead of this function. + * \sa Asserter::failNotEqual(). + */ +void CPPUNIT_API assertDoubleEquals( double expected, + double actual, + double delta, + SourceLine sourceLine ); + + +/* A set of macros which allow us to get the line number + * and file name at the point of an error. + * Just goes to show that preprocessors do have some + * redeeming qualities. + */ +#if CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION +/** Assertions that a condition is \c true. + * \ingroup Assertions + */ +#define CPPUNIT_ASSERT(condition) \ + ( CPPUNIT_NS::Asserter::failIf( !(condition), \ + CPPUNIT_NS::Message( "assertion failed", \ + "Expression: " #condition), \ + CPPUNIT_SOURCELINE() ) ) +#else +#define CPPUNIT_ASSERT(condition) \ + ( CPPUNIT_NS::Asserter::failIf( !(condition), \ + CPPUNIT_NS::Message( "assertion failed" ), \ + CPPUNIT_SOURCELINE() ) ) +#endif + +/** Assertion with a user specified message. + * \ingroup Assertions + * \param message Message reported in diagnostic if \a condition evaluates + * to \c false. + * \param condition If this condition evaluates to \c false then the + * test failed. + */ +#define CPPUNIT_ASSERT_MESSAGE(message,condition) \ + ( CPPUNIT_NS::Asserter::failIf( !(condition), \ + (message), \ + CPPUNIT_SOURCELINE() ) ) + +/** Fails with the specified message. + * \ingroup Assertions + * \param message Message reported in diagnostic. + */ +#define CPPUNIT_FAIL( message ) \ + ( CPPUNIT_NS::Asserter::fail( CPPUNIT_NS::Message( "forced failure", \ + message ), \ + CPPUNIT_SOURCELINE() ) ) + +#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED +/// Generalized macro for primitive value comparisons +#define CPPUNIT_ASSERT_EQUAL(expected,actual) \ + ( CPPUNIT_NS::assertEquals( (expected), \ + (actual), \ + __LINE__, __FILE__ ) ) +#else +/** Asserts that two values are equals. + * \ingroup Assertions + * + * Equality and string representation can be defined with + * an appropriate CppUnit::assertion_traits class. + * + * A diagnostic is printed if actual and expected values disagree. + * + * Requirement for \a expected and \a actual parameters: + * - They are exactly of the same type + * - They are serializable into a std::strstream using operator <<. + * - They can be compared using operator ==. + * + * The last two requirements (serialization and comparison) can be + * removed by specializing the CppUnit::assertion_traits. + */ +#define CPPUNIT_ASSERT_EQUAL(expected,actual) \ + ( CPPUNIT_NS::assertEquals( (expected), \ + (actual), \ + CPPUNIT_SOURCELINE(), \ + "" ) ) + +/** Asserts that two values are equals, provides additional messafe on failure. + * \ingroup Assertions + * + * Equality and string representation can be defined with + * an appropriate assertion_traits class. + * + * A diagnostic is printed if actual and expected values disagree. + * The message is printed in addition to the expected and actual value + * to provide additional information. + * + * Requirement for \a expected and \a actual parameters: + * - They are exactly of the same type + * - They are serializable into a std::strstream using operator <<. + * - They can be compared using operator ==. + * + * The last two requirements (serialization and comparison) can be + * removed by specializing the CppUnit::assertion_traits. + */ +#define CPPUNIT_ASSERT_EQUAL_MESSAGE(message,expected,actual) \ + ( CPPUNIT_NS::assertEquals( (expected), \ + (actual), \ + CPPUNIT_SOURCELINE(), \ + (message) ) ) +#endif + +/*! \brief Macro for primitive value comparisons + * \ingroup Assertions + */ +#define CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,actual,delta) \ + ( CPPUNIT_NS::assertDoubleEquals( (expected), \ + (actual), \ + (delta), \ + CPPUNIT_SOURCELINE() ) ) + + +/** Asserts that the given expression throws an exception of the specified type. + * \ingroup Assertions + * Example of usage: + * \code + * std::vector v; + * CPPUNIT_ASSERT_THROW( v.at( 50 ), std::out_of_range ); + * \endcode + */ +# define CPPUNIT_ASSERT_THROW( expression, ExceptionType ) \ + do { \ + bool cpputExceptionThrown_ = false; \ + try { \ + expression; \ + } catch ( const ExceptionType & ) { \ + cpputExceptionThrown_ = true; \ + } \ + \ + if ( cpputExceptionThrown_ ) \ + break; \ + \ + CPPUNIT_NS::Asserter::fail( \ + "Expected exception: " #ExceptionType \ + " not thrown.", \ + CPPUNIT_SOURCELINE() ); \ + } while ( false ) + + +// implementation detail +#if CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_EXTRACT_EXCEPTION_TYPE_( exception, no_rtti_message ) \ + CPPUNIT_NS::TypeInfoHelper::getClassName( typeid(exception) ) +#else +#define CPPUNIT_EXTRACT_EXCEPTION_TYPE_( exception, no_rtti_message ) \ + std::string( no_rtti_message ) +#endif // CPPUNIT_USE_TYPEINFO_NAME + +/** Asserts that the given expression does not throw any exceptions. + * \ingroup Assertions + * Example of usage: + * \code + * std::vector v; + * v.push_back( 10 ); + * CPPUNIT_ASSERT_NO_THROW( v.at( 0 ) ); + * \endcode + */ +# define CPPUNIT_ASSERT_NO_THROW( expression ) \ + try { \ + expression; \ + } catch ( const std::exception &e ) { \ + CPPUNIT_NS::Message message( "Unexpected exception caught" ); \ + message.addDetail( "Type: " + \ + CPPUNIT_EXTRACT_EXCEPTION_TYPE_( e, \ + "std::exception or derived" ) ); \ + message.addDetail( std::string("What: ") + e.what() ); \ + CPPUNIT_NS::Asserter::fail( message, \ + CPPUNIT_SOURCELINE() ); \ + } catch ( ... ) { \ + CPPUNIT_NS::Asserter::fail( "Unexpected exception caught", \ + CPPUNIT_SOURCELINE() ); \ + } + +/** Asserts that an assertion fail. + * \ingroup Assertions + * Use to test assertions. + * Example of usage: + * \code + * CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT( 1 == 2 ) ); + * \endcode + */ +# define CPPUNIT_ASSERT_ASSERTION_FAIL( assertion ) \ + CPPUNIT_ASSERT_THROW( assertion, CPPUNIT_NS::Exception ) + + +/** Asserts that an assertion pass. + * \ingroup Assertions + * Use to test assertions. + * Example of usage: + * \code + * CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT( 1 == 1 ) ); + * \endcode + */ +# define CPPUNIT_ASSERT_ASSERTION_PASS( assertion ) \ + CPPUNIT_ASSERT_NO_THROW( assertion ) + + + + +// Backwards compatibility + +#if CPPUNIT_ENABLE_NAKED_ASSERT + +#undef assert +#define assert(c) CPPUNIT_ASSERT(c) +#define assertEqual(e,a) CPPUNIT_ASSERT_EQUAL(e,a) +#define assertDoublesEqual(e,a,d) CPPUNIT_ASSERT_DOUBLES_EQUAL(e,a,d) +#define assertLongsEqual(e,a) CPPUNIT_ASSERT_EQUAL(e,a) + +#endif + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTASSERT_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TestCaller.h b/lib/cppunit-1.10.0/include/cppunit/TestCaller.h new file mode 100644 index 0000000000..dc4d82ed9b --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestCaller.h @@ -0,0 +1,204 @@ +#ifndef CPPUNIT_TESTCALLER_H // -*- C++ -*- +#define CPPUNIT_TESTCALLER_H + +#include +#include + + +#if CPPUNIT_USE_TYPEINFO_NAME +# include +#endif + + +CPPUNIT_NS_BEGIN + +#if 0 +/*! \brief Marker class indicating that no exception is expected by TestCaller. + * This class is an implementation detail. You should never use this class directly. + */ +class CPPUNIT_API NoExceptionExpected +{ +private: + //! Prevent class instantiation. + NoExceptionExpected(); +}; + + +/*! \brief (Implementation) Traits used by TestCaller to expect an exception. + * + * This class is an implementation detail. You should never use this class directly. + */ +template +struct ExpectedExceptionTraits +{ + static void expectedException() + { +#if CPPUNIT_USE_TYPEINFO_NAME + throw Exception( Message( + "expected exception not thrown", + "Expected exception type: " + + TypeInfoHelper::getClassName( typeid( ExceptionType ) ) ) ); +#else + throw Exception( "expected exception not thrown" ); +#endif + } +}; + + +/*! \brief (Implementation) Traits specialization used by TestCaller to + * expect no exception. + * + * This class is an implementation detail. You should never use this class directly. + */ +template<> +struct ExpectedExceptionTraits +{ + static void expectedException() + { + } +}; + + +#endif + +//*** FIXME: rework this when class Fixture is implemented. ***// + + +/*! \brief Generate a test case from a fixture method. + * \ingroup WritingTestFixture + * + * A test caller provides access to a test case method + * on a test fixture class. Test callers are useful when + * you want to run an individual test or add it to a + * suite. + * Test Callers invoke only one Test (i.e. test method) on one + * Fixture of a TestFixture. + * + * Here is an example: + * \code + * class MathTest : public CppUnit::TestFixture { + * ... + * public: + * void setUp(); + * void tearDown(); + * + * void testAdd(); + * void testSubtract(); + * }; + * + * CppUnit::Test *MathTest::suite() { + * CppUnit::TestSuite *suite = new CppUnit::TestSuite; + * + * suite->addTest( new CppUnit::TestCaller( "testAdd", testAdd ) ); + * return suite; + * } + * \endcode + * + * You can use a TestCaller to bind any test method on a TestFixture + * class, as long as it accepts void and returns void. + * + * \see TestCase + */ + +template +class TestCaller : public TestCase +{ + typedef void (Fixture::*TestMethod)(); + +public: + /*! + * Constructor for TestCaller. This constructor builds a new Fixture + * instance owned by the TestCaller. + * \param name name of this TestCaller + * \param test the method this TestCaller calls in runTest() + */ + TestCaller( std::string name, TestMethod test ) : + TestCase( name ), + m_ownFixture( true ), + m_fixture( new Fixture() ), + m_test( test ) + { + } + + /*! + * Constructor for TestCaller. + * This constructor does not create a new Fixture instance but accepts + * an existing one as parameter. The TestCaller will not own the + * Fixture object. + * \param name name of this TestCaller + * \param test the method this TestCaller calls in runTest() + * \param fixture the Fixture to invoke the test method on. + */ + TestCaller(std::string name, TestMethod test, Fixture& fixture) : + TestCase( name ), + m_ownFixture( false ), + m_fixture( &fixture ), + m_test( test ) + { + } + + /*! + * Constructor for TestCaller. + * This constructor does not create a new Fixture instance but accepts + * an existing one as parameter. The TestCaller will own the + * Fixture object and delete it in its destructor. + * \param name name of this TestCaller + * \param test the method this TestCaller calls in runTest() + * \param fixture the Fixture to invoke the test method on. + */ + TestCaller(std::string name, TestMethod test, Fixture* fixture) : + TestCase( name ), + m_ownFixture( true ), + m_fixture( fixture ), + m_test( test ) + { + } + + ~TestCaller() + { + if (m_ownFixture) + delete m_fixture; + } + + void runTest() + { +// try { + (m_fixture->*m_test)(); +// } +// catch ( ExpectedException & ) { +// return; +// } + +// ExpectedExceptionTraits::expectedException(); + } + + void setUp() + { + m_fixture->setUp (); + } + + void tearDown() + { + m_fixture->tearDown (); + } + + std::string toString() const + { + return "TestCaller " + getName(); + } + +private: + TestCaller( const TestCaller &other ); + TestCaller &operator =( const TestCaller &other ); + +private: + bool m_ownFixture; + Fixture *m_fixture; + TestMethod m_test; +}; + + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTCALLER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TestCase.h b/lib/cppunit-1.10.0/include/cppunit/TestCase.h new file mode 100644 index 0000000000..d4b7a46a8f --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestCase.h @@ -0,0 +1,55 @@ +#ifndef CPPUNIT_TESTCASE_H +#define CPPUNIT_TESTCASE_H + +#include +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +class TestResult; + + +/*! \brief A single test object. + * + * This class is used to implement a simple test case: define a subclass + * that overrides the runTest method. + * + * You don't usually need to use that class, but TestFixture and TestCaller instead. + * + * You are expected to subclass TestCase is you need to write a class similiar + * to TestCaller. + */ +class CPPUNIT_API TestCase : public TestLeaf, + public TestFixture +{ +public: + + TestCase( const std::string &name ); + + TestCase(); + + ~TestCase(); + + virtual void run(TestResult *result); + + std::string getName() const; + + //! FIXME: this should probably be pure virtual. + virtual void runTest(); + +private: + TestCase( const TestCase &other ); + TestCase &operator=( const TestCase &other ); + +private: + const std::string m_name; +}; + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTCASE_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TestComposite.h b/lib/cppunit-1.10.0/include/cppunit/TestComposite.h new file mode 100644 index 0000000000..0ded95fcdb --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestComposite.h @@ -0,0 +1,45 @@ +#ifndef CPPUNIT_TESTCOMPSITE_H // -*- C++ -*- +#define CPPUNIT_TESTCOMPSITE_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief A Composite of Tests. + * + * Base class for all test composites. Subclass this class if you need to implement + * a custom TestSuite. + * + * \see Test, TestSuite. + */ +class CPPUNIT_API TestComposite : public Test +{ +public: + TestComposite( const std::string &name = "" ); + + ~TestComposite(); + + void run( TestResult *result ); + + int countTestCases() const; + + std::string getName() const; + +private: + TestComposite( const TestComposite &other ); + TestComposite &operator =( const TestComposite &other ); + + virtual void doStartSuite( TestResult *controller ); + virtual void doRunChildTests( TestResult *controller ); + virtual void doEndSuite( TestResult *controller ); + +private: + const std::string m_name; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTCOMPSITE_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TestFailure.h b/lib/cppunit-1.10.0/include/cppunit/TestFailure.h new file mode 100644 index 0000000000..64199790df --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestFailure.h @@ -0,0 +1,58 @@ +#ifndef CPPUNIT_TESTFAILURE_H // -*- C++ -*- +#define CPPUNIT_TESTFAILURE_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class Exception; +class SourceLine; +class Test; + + +/*! \brief Record of a failed Test execution. + * \ingroup BrowsingCollectedTestResult + * + * A TestFailure collects a failed test together with + * the caught exception. + * + * TestFailure assumes lifetime control for any exception + * passed to it. + */ +class CPPUNIT_API TestFailure +{ +public: + TestFailure( Test *failedTest, + Exception *thrownException, + bool isError ); + + virtual ~TestFailure (); + + virtual Test *failedTest() const; + + virtual Exception *thrownException() const; + + virtual SourceLine sourceLine() const; + + virtual bool isError() const; + + virtual std::string failedTestName() const; + + virtual TestFailure *clone() const; + +protected: + Test *m_failedTest; + Exception *m_thrownException; + bool m_isError; + +private: + TestFailure( const TestFailure &other ); + TestFailure &operator =( const TestFailure& other ); +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTFAILURE_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TestFixture.h b/lib/cppunit-1.10.0/include/cppunit/TestFixture.h new file mode 100644 index 0000000000..1223adbc93 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestFixture.h @@ -0,0 +1,99 @@ +#ifndef CPPUNIT_TESTFIXTURE_H // -*- C++ -*- +#define CPPUNIT_TESTFIXTURE_H + +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief Wraps a test case with setUp and tearDown methods. + * \ingroup WritingTestFixture + * + * A TestFixture is used to provide a common environment for a set + * of test cases. + * + * To define a test fixture, do the following: + * - implement a subclass of TestCase + * - the fixture is defined by instance variables + * - initialize the fixture state by overriding setUp + * (i.e. construct the instance variables of the fixture) + * - clean-up after a test by overriding tearDown. + * + * Each test runs in its own fixture so there + * can be no side effects among test runs. + * Here is an example: + * + * \code + * class MathTest : public CppUnit::TestFixture { + * protected: + * int m_value1, m_value2; + * + * public: + * MathTest() {} + * + * void setUp () { + * m_value1 = 2; + * m_value2 = 3; + * } + * } + * \endcode + * + * For each test implement a method which interacts + * with the fixture. Verify the expected results with assertions specified + * by calling CPPUNIT_ASSERT on the expression you want to test: + * + * \code + * public: + * void testAdd () { + * int result = m_value1 + m_value2; + * CPPUNIT_ASSERT( result == 5 ); + * } + * \endcode + * + * Once the methods are defined you can run them. To do this, use + * a TestCaller. + * + * \code + * CppUnit::Test *test = new CppUnit::TestCaller( "testAdd", + * &MathTest::testAdd ); + * test->run(); + * \endcode + * + * + * The tests to be run can be collected into a TestSuite. + * + * \code + * public: + * static CppUnit::TestSuite *MathTest::suite () { + * CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite; + * suiteOfTests->addTest(new CppUnit::TestCaller( + * "testAdd", &MathTest::testAdd)); + * suiteOfTests->addTest(new CppUnit::TestCaller( + * "testDivideByZero", &MathTest::testDivideByZero)); + * return suiteOfTests; + * } + * \endcode + * + * A set of macros have been created for convenience. They are located in HelperMacros.h. + * + * \see TestResult, TestSuite, TestCaller, + * \see CPPUNIT_TEST_SUB_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END, + * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_EXCEPTION, CPPUNIT_TEST_FAIL. + */ +class CPPUNIT_API TestFixture +{ +public: + virtual ~TestFixture() {}; + + //! \brief Set up context before running a test. + virtual void setUp() {}; + + //! Clean up after the test run. + virtual void tearDown() {}; +}; + + +CPPUNIT_NS_END + + +#endif diff --git a/lib/cppunit-1.10.0/include/cppunit/TestLeaf.h b/lib/cppunit-1.10.0/include/cppunit/TestLeaf.h new file mode 100644 index 0000000000..c83b075975 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestLeaf.h @@ -0,0 +1,44 @@ +#ifndef CPPUNIT_TESTLEAF_H +#define CPPUNIT_TESTLEAF_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief A single test object. + * + * Base class for single test case: a test that doesn't have any children. + * + */ +class CPPUNIT_API TestLeaf: public Test +{ +public: + /*! Returns 1 as the default number of test cases invoked by run(). + * + * You may override this method when many test cases are invoked (RepeatedTest + * for example). + * + * \return 1. + * \see Test::countTestCases(). + */ + int countTestCases() const; + + /*! Returns the number of child of this test case: 0. + * + * You should never override this method: a TestLeaf as no children by definition. + * + * \return 0. + */ + int getChildTestCount() const; + + /*! Always throws std::out_of_range. + * \see Test::doGetChildTestAt(). + */ + Test *doGetChildTestAt( int index ) const; +}; + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTLEAF_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TestListener.h b/lib/cppunit-1.10.0/include/cppunit/TestListener.h new file mode 100644 index 0000000000..cb256fa65d --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestListener.h @@ -0,0 +1,148 @@ +#ifndef CPPUNIT_TESTLISTENER_H // -*- C++ -*- +#define CPPUNIT_TESTLISTENER_H + +#include + + +CPPUNIT_NS_BEGIN + + +class Exception; +class Test; +class TestFailure; +class TestResult; + + +/*! \brief Listener for test progress and result. + * \ingroup TrackingTestExecution + * + * Implementing the Observer pattern a TestListener may be registered + * to a TestResult to obtain information on the testing progress. Use + * specialized sub classes of TestListener for text output + * (TextTestProgressListener). Do not use the Listener for the test + * result output, use a subclass of Outputter instead. + * + * The test framework distinguishes between failures and errors. + * A failure is anticipated and checked for with assertions. Errors are + * unanticipated problems signified by exceptions that are not generated + * by the framework. + * + * Here is an example to track test time: + * + * + * \code + * #include + * #include + * #include // for clock() + * + * class TimingListener : public CppUnit::TestListener + * { + * public: + * void startTest( CppUnit::Test *test ) + * { + * _chronometer.start(); + * } + * + * void endTest( CppUnit::Test *test ) + * { + * _chronometer.end(); + * addTest( test, _chronometer.elapsedTime() ); + * } + * + * // ... (interface to add/read test timing result) + * + * private: + * Clock _chronometer; + * }; + * \endcode + * + * And another example that track failure/success at test suite level and captures + * the TestPath of each suite: + * \code + * class SuiteTracker : public CppUnit::TestListener + * { + * public: + * void startSuite( CppUnit::Test *suite ) + * { + * m_currentPath.add( suite ); + * } + * + * void addFailure( const TestFailure &failure ) + * { + * m_suiteFailure.top() = false; + * } + * + * void endSuite( CppUnit::Test *suite ) + * { + * m_suiteStatus.insert( std::make_pair( suite, m_suiteFailure.top() ) ); + * m_suitePaths.insert( std::make_pair( suite, m_currentPath ) ); + * + * m_currentPath.up(); + * m_suiteFailure.pop(); + * } + * + * private: + * std::stack m_suiteFailure; + * CppUnit::TestPath m_currentPath; + * std::map m_suiteStatus; + * std::map m_suitePaths; + * }; + * \endcode + * + * \see TestResult + */ +class CPPUNIT_API TestListener +{ +public: + virtual ~TestListener() {} + + /// Called when just before a TestCase is run. + virtual void startTest( Test *test ) {} + + /*! \brief Called when a failure occurs while running a test. + * \see TestFailure. + * \warning \a failure is a temporary object that is destroyed after the + * method call. Use TestFailure::clone() to create a duplicate. + */ + virtual void addFailure( const TestFailure &failure ) {} + + /// Called just after a TestCase was run (even if a failure occured). + virtual void endTest( Test *test ) {} + + /*! \brief Called by a TestComposite just before running its child tests. + */ + virtual void startSuite( Test *suite ) {} + + /*! \brief Called by a TestComposite after running its child tests. + */ + virtual void endSuite( Test *suite ) {} + + /*! \brief Called by a TestRunner before running the test. + * + * You can use this to do some global initialisation. A listener + * could also use to output a 'prolog' to the test run. + * + * \param test Test that is going to be run. + * \param eventManager Event manager used for the test run. + */ + virtual void startTestRun( Test *test, + TestResult *eventManager ) {} + + /*! \brief Called by a TestRunner after running the test. + * + * TextTestProgressListener use this to emit a line break. You can also use this + * to do some global uninitialisation. + * + * \param test Test that was run. + * \param eventManager Event manager used for the test run. + */ + virtual void endTestRun( Test *test, + TestResult *eventManager ) {} +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTLISTENER_H + + diff --git a/lib/cppunit-1.10.0/include/cppunit/TestPath.h b/lib/cppunit-1.10.0/include/cppunit/TestPath.h new file mode 100644 index 0000000000..12e9de17c4 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestPath.h @@ -0,0 +1,210 @@ +#ifndef CPPUNIT_TESTPATH_H +#define CPPUNIT_TESTPATH_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include + +CPPUNIT_NS_BEGIN + + +class Test; + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +#endif + + +/*! \brief A List of Test representing a path to access a Test. + * \ingroup ExecutingTest + * + * The path can be converted to a string and resolved from a string with toString() + * and TestPath( Test *root, const std::string &pathAsString ). + * + * Pointed tests are not owned by the class. + * + * \see Test::resolvedTestPath() + */ +class CPPUNIT_API TestPath +{ +public: + /*! \brief Constructs an invalid path. + * + * The path is invalid until a test is added with add(). + */ + TestPath(); + + /*! \brief Constructs a valid path. + * + * \param root Test to add. + */ + TestPath( Test *root ); + + /*! \brief Constructs a path using a slice of another path. + * \param otherPath Path the test are copied from. + * \param indexFirst Zero based index of the first test to copy. Adjusted to be in valid + * range. \a count is adjusted with \a indexFirst. + * \param count Number of tests to copy. If < 0 then all test starting from index + * \a indexFirst are copied. + */ + TestPath( const TestPath &otherPath, + int indexFirst, + int count = -1 ); + + /*! \brief Resolves a path from a string returned by toString(). + * + * If \a pathAsString is an absolute path (begins with '/'), then the first test name + * of the path must be the name of \a searchRoot. Otherwise, \a pathAsString is a + * relative path, and the first test found using Test::findTest() matching the first + * test name is used as root. An empty string resolve to a path containing + * \a searchRoot. + * + * The resolved path is always valid. + * + * \param searchRoot Test used to resolve the path. + * \param pathAsString String that contains the path as a string created by toString(). + * \exception std::invalid_argument if one of the test names can not be resolved. + * \see toString(). + */ + TestPath( Test *searchRoot, + const std::string &pathAsString ); + + /*! \brief Copy constructor. + * \param other Object to copy. + */ + TestPath( const TestPath &other ); + + virtual ~TestPath(); + + /*! \brief Tests if the path contains at least one test. + * \return \c true if the path contains at least one test, otherwise returns \c false. + */ + virtual bool isValid() const; + + /*! \brief Adds a test to the path. + * \param test Pointer on the test to add. Must not be \c NULL. + */ + virtual void add( Test *test ); + + /*! \brief Adds all the tests of the specified path. + * \param path Path that contains the test to add. + */ + virtual void add( const TestPath &path ); + + /*! \brief Inserts a test at the specified index. + * \param test Pointer on the test to insert. Must not be \c NULL. + * \param index Zero based index indicating where the test is inserted. + * \exception std::out_of_range is \a index < 0 or \a index > getTestCount(). + */ + virtual void insert( Test *test, int index ); + + /*! \brief Inserts all the tests at the specified path at a given index. + * \param path Path that contains the test to insert. + * \param index Zero based index indicating where the tests are inserted. + * \exception std::out_of_range is \a index < 0 or \a index > getTestCount(), and + * \a path is valid. + */ + virtual void insert( const TestPath &path, int index ); + + /*! \brief Removes all the test from the path. + * + * The path becomes invalid after this call. + */ + virtual void removeTests(); + + /*! \brief Removes the test at the specified index of the path. + * \param index Zero based index of the test to remove. + * \exception std::out_of_range is \a index < 0 or \a index >= getTestCount(). + */ + virtual void removeTest( int index ); + + /*! \brief Removes the last test. + * \exception std::out_of_range is the path is invalid. + * \see isValid(). + */ + virtual void up(); + + /*! \brief Returns the number of tests in the path. + * \return Number of tests in the path. + */ + virtual int getTestCount() const; + + /*! \brief Returns the test of the specified index. + * \param index Zero based index of the test to return. + * \return Pointer on the test at index \a index. Never \c NULL. + * \exception std::out_of_range is \a index < 0 or \a index >= getTestCount(). + */ + virtual Test *getTestAt( int index ) const; + + /*! \brief Get the last test of the path. + * \return Pointer on the last test (test at the bottom of the hierarchy). Never \c NULL. + * \exception std::out_of_range if the path is not valid ( isValid() returns \c false ). + */ + virtual Test *getChildTest() const; + + /*! \brief Returns the path as a string. + * + * For example, if a path is composed of three tests named "All Tests", "Math" and + * "Math::testAdd", toString() will return: + * + * "All Tests/Math/Math::testAdd". + * + * \return A string composed of the test names separated with a '/'. It is a relative + * path. + */ + virtual std::string toString() const; + + /*! \brief Assignment operator. + * \param other Object to copy. + * \return This object. + */ + TestPath &operator =( const TestPath &other ); + +protected: + /*! \brief Checks that the specified test index is within valid range. + * \param index Zero based index to check. + * \exception std::out_of_range is \a index < 0 or \a index >= getTestCount(). + */ + void checkIndexValid( int index ) const; + + /// A list of test names. + typedef CppUnitDeque PathTestNames; + + /*! \brief Splits a path string into its test name components. + * \param pathAsString Path string created with toString(). + * \param testNames Test name components are added to that container. + * \return \c true if the path is relative (does not begin with '/'), \c false + * if it is absolute (begin with '/'). + */ + bool splitPathString( const std::string &pathAsString, + PathTestNames &testNames ); + + /*! \brief Finds the actual root of a path string and get the path string name components. + * \param searchRoot Test used as root if the path string is absolute, or to search + * the root test if the path string is relative. + * \param pathAsString Path string. May be absolute or relative. + * \param testNames Test name components are added to that container. + * \return Pointer on the resolved root test. Never \c NULL. + * \exception std::invalid_argument if either the root name can not be resolved or if + * pathAsString contains no name components. + */ + Test *findActualRoot( Test *searchRoot, + const std::string &pathAsString, + PathTestNames &testNames ); + +protected: + typedef CppUnitDeque Tests; + Tests m_tests; + +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTPATH_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/TestResult.h b/lib/cppunit-1.10.0/include/cppunit/TestResult.h new file mode 100644 index 0000000000..465310255a --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestResult.h @@ -0,0 +1,155 @@ +#ifndef CPPUNIT_TESTRESULT_H +#define CPPUNIT_TESTRESULT_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + +CPPUNIT_NS_BEGIN + + +class Exception; +class Functor; +class Protector; +class ProtectorChain; +class Test; +class TestFailure; +class TestListener; + + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +#endif + +/*! \brief Manages TestListener. + * \ingroup TrackingTestExecution + * + * A single instance of this class is used when running the test. It is usually + * created by the test runner (TestRunner). + * + * This class shouldn't have to be inherited from. Use a TestListener + * or one of its subclasses to be informed of the ongoing tests. + * Use a Outputter to receive a test summary once it has finished + * + * TestResult supplies a template method 'setSynchronizationObject()' + * so that subclasses can provide mutual exclusion in the face of multiple + * threads. This can be useful when tests execute in one thread and + * they fill a subclass of TestResult which effects change in another + * thread. To have mutual exclusion, override setSynchronizationObject() + * and make sure that you create an instance of ExclusiveZone at the + * beginning of each method. + * + * \see Test, TestListener, TestResultCollector, Outputter. + */ +class CPPUNIT_API TestResult : protected SynchronizedObject +{ +public: + /// Construct a TestResult + TestResult( SynchronizationObject *syncObject = 0 ); + + /// Destroys a test result + virtual ~TestResult(); + + virtual void addListener( TestListener *listener ); + + virtual void removeListener( TestListener *listener ); + + /// Resets the stop flag. + virtual void reset(); + + /// Stop testing + virtual void stop(); + + /// Returns whether testing should be stopped + virtual bool shouldStop() const; + + /// Informs TestListener that a test will be started. + virtual void startTest( Test *test ); + + /*! \brief Adds an error to the list of errors. + * The passed in exception + * caused the error + */ + virtual void addError( Test *test, Exception *e ); + + /*! \brief Adds a failure to the list of failures. The passed in exception + * caused the failure. + */ + virtual void addFailure( Test *test, Exception *e ); + + /// Informs TestListener that a test was completed. + virtual void endTest( Test *test ); + + /// Informs TestListener that a test suite will be started. + virtual void startSuite( Test *test ); + + /// Informs TestListener that a test suite was completed. + virtual void endSuite( Test *test ); + + /*! \brief Run the specified test. + * + * Calls startTestRun(), test->run(this), and finally endTestRun(). + */ + virtual void runTest( Test *test ); + + /*! \brief Protects a call to the specified functor. + * + * See Protector to understand how protector works. A default protector is + * always present. It captures CppUnit::Exception, std::exception and + * any other exceptions, retrieving as much as possible information about + * the exception as possible. + * + * Additional Protector can be added to the chain to support other exception + * types using pushProtector() and popProtector(). + * + * \param functor Functor to call (typically a call to setUp(), runTest() or + * tearDown(). + * \param test Test the functor is associated to (used for failure reporting). + * \param shortDescription Short description override for the failure message. + */ + virtual bool protect( const Functor &functor, + Test *test, + const std::string &shortDescription = std::string("") ); + + /// Adds the specified protector to the protector chain. + virtual void pushProtector( Protector *protector ); + + /// Removes the last protector from the protector chain. + virtual void popProtector(); + +protected: + /*! \brief Called to add a failure to the list of failures. + */ + void addFailure( const TestFailure &failure ); + + virtual void startTestRun( Test *test ); + virtual void endTestRun( Test *test ); + +protected: + typedef CppUnitDeque TestListeners; + TestListeners m_listeners; + ProtectorChain *m_protectorChain; + bool m_stop; + +private: + TestResult( const TestResult &other ); + TestResult &operator =( const TestResult &other ); +}; + + +CPPUNIT_NS_END + + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + +#endif // CPPUNIT_TESTRESULT_H + + diff --git a/lib/cppunit-1.10.0/include/cppunit/TestResultCollector.h b/lib/cppunit-1.10.0/include/cppunit/TestResultCollector.h new file mode 100644 index 0000000000..65b77cd4e5 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestResultCollector.h @@ -0,0 +1,85 @@ +#ifndef CPPUNIT_TESTRESULTCOLLECTOR_H +#define CPPUNIT_TESTRESULTCOLLECTOR_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 4660 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + + +CPPUNIT_NS_BEGIN + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +// template class CPPUNIT_API std::deque; +#endif + + +/*! \brief Collects test result. + * \ingroup WritingTestResult + * \ingroup BrowsingCollectedTestResult + * + * A TestResultCollector is a TestListener which collects the results of executing + * a test case. It is an instance of the Collecting Parameter pattern. + * + * The test framework distinguishes between failures and errors. + * A failure is anticipated and checked for with assertions. Errors are + * unanticipated problems signified by exceptions that are not generated + * by the framework. + * \see TestListener, TestFailure. + */ +class CPPUNIT_API TestResultCollector : public TestSuccessListener +{ +public: + typedef CppUnitDeque TestFailures; + typedef CppUnitDeque Tests; + + + /*! Constructs a TestResultCollector object. + */ + TestResultCollector( SynchronizationObject *syncObject = 0 ); + + /// Destructor. + virtual ~TestResultCollector(); + + void startTest( Test *test ); + void addFailure( const TestFailure &failure ); + + virtual void reset(); + + virtual int runTests() const; + virtual int testErrors() const; + virtual int testFailures() const; + virtual int testFailuresTotal() const; + + virtual const TestFailures& failures() const; + virtual const Tests &tests() const; + +protected: + Tests m_tests; + TestFailures m_failures; + int m_testErrors; + +private: + /// Prevents the use of the copy constructor. + TestResultCollector( const TestResultCollector © ); + + /// Prevents the use of the copy operator. + void operator =( const TestResultCollector © ); +}; + + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_TESTRESULTCOLLECTOR_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TestRunner.h b/lib/cppunit-1.10.0/include/cppunit/TestRunner.h new file mode 100644 index 0000000000..930370ad97 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestRunner.h @@ -0,0 +1,135 @@ +#ifndef CPPUNIT_TESTRUNNER_H +#define CPPUNIT_TESTRUNNER_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class Test; +class TestResult; + + +/*! \brief Generic test runner. + * \ingroup ExecutingTest + * + * The TestRunner assumes ownership of all added tests: you can not add test + * or suite that are local variable since they can't be deleted. + * + * Example of usage: + * \code + * #include + * #include + * #include + * #include + * #include + * #include + * + * + * int + * main( int argc, char* argv[] ) + * { + * std::string testPath = (argc > 1) ? std::string(argv[1]) : ""; + * + * // Create the event manager and test controller + * CppUnit::TestResult controller; + * + * // Add a listener that colllects test result + * CppUnit::TestResultCollector result; + * controller.addListener( &result ); + * + * // Add a listener that print dots as test run. + * CppUnit::TextTestProgressListener progress; + * controller.addListener( &progress ); + * + * // Add the top suite to the test runner + * CppUnit::TestRunner runner; + * runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); + * try + * { + * std::cout << "Running " << testPath; + * runner.run( controller, testPath ); + * + * std::cerr << std::endl; + * + * // Print test in a compiler compatible format. + * CppUnit::CompilerOutputter outputter( &result, std::cerr ); + * outputter.write(); + * } + * catch ( std::invalid_argument &e ) // Test path not resolved + * { + * std::cerr << std::endl + * << "ERROR: " << e.what() + * << std::endl; + * return 0; + * } + * + * return result.wasSuccessful() ? 0 : 1; + * } + * \endcode + */ +class CPPUNIT_API TestRunner +{ +public: + /*! \brief Constructs a TestRunner object. + */ + TestRunner( ); + + /// Destructor. + virtual ~TestRunner(); + + /*! \brief Adds the specified test. + * \param test Test to add. The TestRunner takes ownership of the test. + */ + virtual void addTest( Test *test ); + + /*! \brief Runs a test using the specified controller. + * \param controller Event manager and controller used for testing + * \param testPath Test path string. See Test::resolveTestPath() for detail. + * \exception std::invalid_argument if no test matching \a testPath is found. + * see TestPath::TestPath( Test*, const std::string &) + * for detail. + */ + virtual void run( TestResult &controller, + const std::string &testPath = "" ); + +protected: + /*! \brief (INTERNAL) Mutating test suite. + */ + class CPPUNIT_API WrappingSuite : public TestSuite + { + public: + WrappingSuite( const std::string &name = "All Tests" ); + + int getChildTestCount() const; + + std::string getName() const; + + void run( TestResult *result ); + + protected: + Test *doGetChildTestAt( int index ) const; + + bool hasOnlyOneTest() const; + + Test *getUniqueChildTest() const; + }; + +protected: + WrappingSuite *m_suite; + +private: + /// Prevents the use of the copy constructor. + TestRunner( const TestRunner © ); + + /// Prevents the use of the copy operator. + void operator =( const TestRunner © ); + +private: +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTRUNNER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TestSuccessListener.h b/lib/cppunit-1.10.0/include/cppunit/TestSuccessListener.h new file mode 100644 index 0000000000..60c5ff5004 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestSuccessListener.h @@ -0,0 +1,39 @@ +#ifndef CPPUNIT_TESTSUCCESSLISTENER_H +#define CPPUNIT_TESTSUCCESSLISTENER_H + +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief TestListener that checks if any test case failed. + * \ingroup TrackingTestExecution + */ +class CPPUNIT_API TestSuccessListener : public TestListener, + public SynchronizedObject +{ +public: + /*! Constructs a TestSuccessListener object. + */ + TestSuccessListener( SynchronizationObject *syncObject = 0 ); + + /// Destructor. + virtual ~TestSuccessListener(); + + virtual void reset(); + + void addFailure( const TestFailure &failure ); + + /// Returns whether the entire test was successful or not. + virtual bool wasSuccessful() const; + +private: + bool m_success; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TESTSUCCESSLISTENER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TestSuite.h b/lib/cppunit-1.10.0/include/cppunit/TestSuite.h new file mode 100644 index 0000000000..a478b8d373 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TestSuite.h @@ -0,0 +1,80 @@ +#ifndef CPPUNIT_TESTSUITE_H // -*- C++ -*- +#define CPPUNIT_TESTSUITE_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + +CPPUNIT_NS_BEGIN + + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::vector; +#endif + + +/*! \brief A Composite of Tests. + * \ingroup CreatingTestSuite + * + * It runs a collection of test cases. Here is an example. + * \code + * CppUnit::TestSuite *suite= new CppUnit::TestSuite(); + * suite->addTest(new CppUnit::TestCaller ( + * "testAdd", testAdd)); + * suite->addTest(new CppUnit::TestCaller ( + * "testDivideByZero", testDivideByZero)); + * \endcode + * Note that \link TestSuite TestSuites assume lifetime + * control for any tests added to them. + * + * TestSuites do not register themselves in the TestRegistry. + * \see Test + * \see TestCaller + */ +class CPPUNIT_API TestSuite : public TestComposite +{ +public: + /*! Constructs a test suite with the specified name. + */ + TestSuite( std::string name = "" ); + + ~TestSuite(); + + /*! Adds the specified test to the suite. + * \param test Test to add. Must not be \c NULL. + */ + void addTest( Test *test ); + + /*! Returns the list of the tests (DEPRECATED). + * \deprecated Use getChildTestCount() & getChildTestAt() of the + * TestComposite interface instead. + * \return Reference on a vector that contains the tests of the suite. + */ + const CppUnitVector &getTests() const; + + /*! Destroys all the tests of the suite. + */ + virtual void deleteContents(); + + int getChildTestCount() const; + + Test *doGetChildTestAt( int index ) const; + +private: + CppUnitVector m_tests; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + +#endif // CPPUNIT_TESTSUITE_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TextOutputter.h b/lib/cppunit-1.10.0/include/cppunit/TextOutputter.h new file mode 100644 index 0000000000..767a48eb36 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TextOutputter.h @@ -0,0 +1,59 @@ +#ifndef CPPUNIT_TEXTOUTPUTTER_H +#define CPPUNIT_TEXTOUTPUTTER_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class Exception; +class SourceLine; +class TestResultCollector; +class TestFailure; + + +/*! \brief Prints a TestResultCollector to a text stream. + * \ingroup WritingTestResult + */ +class CPPUNIT_API TextOutputter : public Outputter +{ +public: + TextOutputter( TestResultCollector *result, + std::ostream &stream ); + + /// Destructor. + virtual ~TextOutputter(); + + void write(); + virtual void printFailures(); + virtual void printHeader(); + + virtual void printFailure( TestFailure *failure, + int failureNumber ); + virtual void printFailureListMark( int failureNumber ); + virtual void printFailureTestName( TestFailure *failure ); + virtual void printFailureType( TestFailure *failure ); + virtual void printFailureLocation( SourceLine sourceLine ); + virtual void printFailureDetail( Exception *thrownException ); + virtual void printFailureWarning(); + virtual void printStatistics(); + +protected: + TestResultCollector *m_result; + std::ostream &m_stream; + +private: + /// Prevents the use of the copy constructor. + TextOutputter( const TextOutputter © ); + + /// Prevents the use of the copy operator. + void operator =( const TextOutputter © ); +}; + + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TEXTOUTPUTTER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TextTestProgressListener.h b/lib/cppunit-1.10.0/include/cppunit/TextTestProgressListener.h new file mode 100644 index 0000000000..7521c40bcd --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TextTestProgressListener.h @@ -0,0 +1,44 @@ +#ifndef CPPUNIT_TEXTTESTPROGRESSLISTENER_H +#define CPPUNIT_TEXTTESTPROGRESSLISTENER_H + +#include + + +CPPUNIT_NS_BEGIN + + +/*! + * \brief TestListener that show the status of each TestCase test result. + * \ingroup TrackingTestExecution + */ +class CPPUNIT_API TextTestProgressListener : public TestListener +{ +public: + /*! Constructs a TextTestProgressListener object. + */ + TextTestProgressListener(); + + /// Destructor. + virtual ~TextTestProgressListener(); + + void startTest( Test *test ); + + void addFailure( const TestFailure &failure ); + + void endTestRun( Test *test, + TestResult *eventManager ); + +private: + /// Prevents the use of the copy constructor. + TextTestProgressListener( const TextTestProgressListener © ); + + /// Prevents the use of the copy operator. + void operator =( const TextTestProgressListener © ); + +private: +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TEXTTESTPROGRESSLISTENER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/TextTestResult.h b/lib/cppunit-1.10.0/include/cppunit/TextTestResult.h new file mode 100644 index 0000000000..dc666c61d7 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TextTestResult.h @@ -0,0 +1,39 @@ +#ifndef CPPUNIT_TEXTTESTRESULT_H +#define CPPUNIT_TEXTTESTRESULT_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class SourceLine; +class Exception; +class Test; + +/*! \brief Holds printable test result (DEPRECATED). + * \ingroup TrackingTestExecution + * + * deprecated Use class TextTestProgressListener and TextOutputter instead. + */ +class CPPUNIT_API TextTestResult : public TestResult, + public TestResultCollector +{ +public: + TextTestResult(); + + virtual void addFailure( const TestFailure &failure ); + virtual void startTest( Test *test ); + virtual void print( std::ostream &stream ); +}; + +/** insertion operator for easy output */ +CPPUNIT_API std::ostream &operator <<( std::ostream &stream, + TextTestResult &result ); + +CPPUNIT_NS_END + +#endif // CPPUNIT_TEXTTESTRESULT_H + + diff --git a/lib/cppunit-1.10.0/include/cppunit/TextTestRunner.h b/lib/cppunit-1.10.0/include/cppunit/TextTestRunner.h new file mode 100644 index 0000000000..23890e0865 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/TextTestRunner.h @@ -0,0 +1,6 @@ +#ifndef CPPUNIT_TEXTTESTRUNNER_H +#define CPPUNIT_TEXTTESTRUNNER_H + +#include + +#endif // CPPUNIT_TEXTTESTRUNNER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/XmlOutputter.h b/lib/cppunit-1.10.0/include/cppunit/XmlOutputter.h new file mode 100644 index 0000000000..d01968cbdb --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/XmlOutputter.h @@ -0,0 +1,158 @@ +#ifndef CPPUNIT_XMLTESTRESULTOUTPUTTER_H +#define CPPUNIT_XMLTESTRESULTOUTPUTTER_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +class Test; +class TestFailure; +class TestResultCollector; +class XmlDocument; +class XmlElement; +class XmlOutputterHook; + + +/*! \brief Outputs a TestResultCollector in XML format. + * \ingroup WritingTestResult + * + * Save the test result as a XML stream. + * + * Additional datas can be added to the XML document using XmlOutputterHook. + * Hook are not owned by the XmlOutputter. They should be valid until + * destruction of the XmlOutputter. They can be removed with removeHook(). + * + * \see XmlDocument, XmlElement, XmlOutputterHook. + */ +class CPPUNIT_API XmlOutputter : public Outputter +{ +public: + /*! \brief Constructs a XmlOutputter object. + * \param result Result of the test run. + * \param stream Stream used to output the XML output. + * \param encoding Encoding used in the XML file (default is Latin-1). + */ + XmlOutputter( TestResultCollector *result, + std::ostream &stream, + std::string encoding = std::string("ISO-8859-1") ); + + /// Destructor. + virtual ~XmlOutputter(); + + /*! \brief Adds the specified hook to the outputter. + * \param hook Hook to add. Must not be \c NULL. + */ + virtual void addHook( XmlOutputterHook *hook ); + + /*! \brief Removes the specified hook from the outputter. + * \param hook Hook to remove. + */ + virtual void removeHook( XmlOutputterHook *hook ); + + /*! \brief Writes the specified result as an XML document to the stream. + * + * Refer to examples/cppunittest/XmlOutputterTest.cpp for example + * of use and XML document structure. + */ + virtual void write(); + + /*! \brief Sets the XSL style sheet used. + * + * \param styleSheet Name of the style sheet used. If empty, then no style sheet + * is used (default). + */ + virtual void setStyleSheet( const std::string &styleSheet ); + + + typedef CppUnitMap > FailedTests; + + /*! \brief Sets the root element and adds its children. + * + * Set the root element of the XML Document and add its child elements. + * + * For all hooks, call beginDocument() just after creating the root element (it + * is empty at this time), and endDocument() once all the datas have been added + * to the root element. + */ + virtual void setRootNode(); + + virtual void addFailedTests( FailedTests &failedTests, + XmlElement *rootNode ); + + virtual void addSuccessfulTests( FailedTests &failedTests, + XmlElement *rootNode ); + + /*! \brief Adds the statics element to the root node. + * + * Creates a new element containing statistics data and adds it to the root element. + * Then, for all hooks, call statisticsAdded(). + * \param rootNode Root element. + */ + virtual void addStatistics( XmlElement *rootNode ); + + /*! \brief Adds a failed test to the failed tests node. + * Creates a new element containing datas about the failed test, and adds it to + * the failed tests element. + * Then, for all hooks, call failTestAdded(). + */ + virtual void addFailedTest( Test *test, + TestFailure *failure, + int testNumber, + XmlElement *testsNode ); + + virtual void addFailureLocation( TestFailure *failure, + XmlElement *testElement ); + + + /*! \brief Adds a successful test to the successful tests node. + * Creates a new element containing datas about the successful test, and adds it to + * the successful tests element. + * Then, for all hooks, call successfulTestAdded(). + */ + virtual void addSuccessfulTest( Test *test, + int testNumber, + XmlElement *testsNode ); +protected: + virtual void fillFailedTestsMap( FailedTests &failedTests ); + +protected: + typedef CppUnitDeque Hooks; + + TestResultCollector *m_result; + std::ostream &m_stream; + std::string m_encoding; + std::string m_styleSheet; + XmlDocument *m_xml; + Hooks m_hooks; + +private: + /// Prevents the use of the copy constructor. + XmlOutputter( const XmlOutputter © ); + + /// Prevents the use of the copy operator. + void operator =( const XmlOutputter © ); + +private: +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_XMLTESTRESULTOUTPUTTER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/XmlOutputterHook.h b/lib/cppunit-1.10.0/include/cppunit/XmlOutputterHook.h new file mode 100644 index 0000000000..e4f37bd1e5 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/XmlOutputterHook.h @@ -0,0 +1,161 @@ +#ifndef CPPUNIT_XMLOUTPUTTERHOOK_H +#define CPPUNIT_XMLOUTPUTTERHOOK_H + +#include + + +CPPUNIT_NS_BEGIN + + +class Test; +class TestFailure; +class XmlDocument; +class XmlElement; + + + +/*! \brief Hook to customize Xml output. + * + * XmlOutputterHook can be passed to XmlOutputter to customize the XmlDocument. + * + * Common customizations are: + * - adding some datas to successfull or failed test with + * failTestAdded() and successfulTestAdded(), + * - adding some statistics with statisticsAdded(), + * - adding other datas with beginDocument() or endDocument(). + * + * See examples/ClockerPlugIn which makes use of most the hook. + * + * Another simple example of an outputter hook is shown below. It may be + * used to add some meta information to your result files. In the example, + * the author name as well as the project name and test creation date is + * added to the head of the xml file. + * + * In order to make this information stored within the xml file, the virtual + * member function beginDocument() is overriden where a new + * XmlElement object is created. + * + * This element is simply added to the root node of the document which + * makes the information automatically being stored when the xml file + * is written. + * + * \code + * #include + * #include + * #include + * + * ... + * + * class MyXmlOutputterHook : public CppUnit::XmlOutputterHook + * { + * public: + * MyXmlOutputterHook(const std::string projectName, + * const std::string author) + * { + * m_projectName = projectName; + * m_author = author; + * }; + * + * virtual ~MyXmlOutputterHook() + * { + * }; + * + * void beginDocument(CppUnit::XmlDocument* document) + * { + * if (!document) + * return; + * + * // dump current time + * std::string szDate = CppUnit::StringTools::toString( (int)time(0) ); + * CppUnit::XmlElement* metaEl = new CppUnit::XmlElement("SuiteInfo", + * ""); + * + * metaEl->addElement( new CppUnit::XmlElement("Author", m_author) ); + * metaEl->addElement( new CppUnit::XmlElement("Project", m_projectName) ); + * metaEl->addElement( new CppUnit::XmlElement("Date", szDate ) ); + * + * document->rootElement().addElement(metaEl); + * }; + * private: + * std::string m_projectName; + * std::string m_author; + * }; + * \endcode + * + * Within your application's main code, you need to snap the hook + * object into your xml outputter object like shown below: + * + * \code + * CppUnit::TextUi::TestRunner runner; + * std::ofstream outputFile("testResults.xml"); + * + * CppUnit::XmlOutputter* outputter = new CppUnit::XmlOutputter( &runner.result(), + * outputFile ); + * MyXmlOutputterHook hook("myProject", "meAuthor"); + * outputter->addHook(&hook); + * runner.setOutputter(outputter); + * runner.addTest( VectorFixture::suite() ); + * runner.run(); + * outputFile.close(); + * \endcode + * + * This results into the following output: + * + * \code + * + * + * meAuthor + * myProject + * 1028143912 + * + * + * ... + * \endcode + * + * \see XmlOutputter, CppUnitTestPlugIn. + */ +class CPPUNIT_API XmlOutputterHook +{ +public: + /*! Called before any elements is added to the root element. + * \param document XML Document being created. + */ + virtual void beginDocument( XmlDocument *document ); + + /*! Called after adding all elements to the root element. + * \param document XML Document being created. + */ + virtual void endDocument( XmlDocument *document ); + + /*! Called after adding a fail test element. + * \param document XML Document being created. + * \param testElement element. + * \param test Test that failed. + * \param failure Test failure data. + */ + virtual void failTestAdded( XmlDocument *document, + XmlElement *testElement, + Test *test, + TestFailure *failure ); + + /*! Called after adding a successful test element. + * \param document XML Document being created. + * \param testElement element. + * \param test Test that was successful. + */ + virtual void successfulTestAdded( XmlDocument *document, + XmlElement *testElement, + Test *test ); + + /*! Called after adding the statistic element. + * \param document XML Document being created. + * \param statisticsElement element. + */ + virtual void statisticsAdded( XmlDocument *document, + XmlElement *statisticsElement ); +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_XMLOUTPUTTERHOOK_H diff --git a/lib/cppunit-1.10.0/include/cppunit/config/CppUnitApi.h b/lib/cppunit-1.10.0/include/cppunit/config/CppUnitApi.h new file mode 100644 index 0000000000..a068bbd543 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/config/CppUnitApi.h @@ -0,0 +1,33 @@ +#ifndef CPPUNIT_CONFIG_CPPUNITAPI +#define CPPUNIT_CONFIG_CPPUNITAPI + +#undef CPPUNIT_API + +#ifdef WIN32 + +// define CPPUNIT_DLL_BUILD when building CppUnit dll. +#ifdef CPPUNIT_BUILD_DLL +#define CPPUNIT_API __declspec(dllexport) +#endif + +// define CPPUNIT_DLL when linking to CppUnit dll. +#ifdef CPPUNIT_DLL +#define CPPUNIT_API __declspec(dllimport) +#endif + +#ifdef CPPUNIT_API +#undef CPPUNIT_NEED_DLL_DECL +#define CPPUNIT_NEED_DLL_DECL 1 +#endif + +#endif + + +#ifndef CPPUNIT_API +#define CPPUNIT_API +#undef CPPUNIT_NEED_DLL_DECL +#define CPPUNIT_NEED_DLL_DECL 0 +#endif + + +#endif // CPPUNIT_CONFIG_CPPUNITAPI diff --git a/lib/cppunit-1.10.0/include/cppunit/config/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/config/Makefile.am new file mode 100644 index 0000000000..f1f71a3424 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/config/Makefile.am @@ -0,0 +1,8 @@ +libcppunitincludedir = $(includedir)/cppunit/config + +libcppunitinclude_HEADERS = \ + config-bcb5.h \ + config-mac.h \ + config-msvc6.h \ + SelectDllLoader.h \ + CppUnitApi.h diff --git a/lib/cppunit-1.10.0/include/cppunit/config/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/config/Makefile.in new file mode 100644 index 0000000000..d232ef6848 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/config/Makefile.in @@ -0,0 +1,379 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +libcppunitincludedir = $(includedir)/cppunit/config + +libcppunitinclude_HEADERS = \ + config-bcb5.h \ + config-mac.h \ + config-msvc6.h \ + SelectDllLoader.h \ + CppUnitApi.h + +subdir = include/cppunit/config +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +HEADERS = $(libcppunitinclude_HEADERS) + +DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/config/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +uninstall-libcppunitincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libcppunitincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-libcppunitincludeHEADERS + +.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 info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libcppunitincludeHEADERS install-man 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-info-am \ + uninstall-libcppunitincludeHEADERS + +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/config/SelectDllLoader.h b/lib/cppunit-1.10.0/include/cppunit/config/SelectDllLoader.h new file mode 100644 index 0000000000..dc1c011558 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/config/SelectDllLoader.h @@ -0,0 +1,76 @@ +#ifndef CPPUNIT_CONFIG_SELECTDLLLOADER_H +#define CPPUNIT_CONFIG_SELECTDLLLOADER_H + +/*! \file + * Selects DynamicLibraryManager implementation. + * + * Don't include this file directly. Include Portability.h instead. + */ + +/*! + * \def CPPUNIT_NO_TESTPLUGIN + * \brief If defined, then plug-in related classes and functions will not be compiled. + * + * \internal + * CPPUNIT_HAVE_WIN32_DLL_LOADER + * If defined, Win32 implementation of DynamicLibraryManager will be used. + * + * CPPUNIT_HAVE_BEOS_DLL_LOADER + * If defined, BeOs implementation of DynamicLibraryManager will be used. + * + * CPPUNIT_HAVE_UNIX_DLL_LOADER + * If defined, Unix implementation (dlfcn.h) of DynamicLibraryManager will be used. + */ + +/*! + * \def CPPUNIT_PLUGIN_EXPORT + * \ingroup WritingTestPlugIn + * \brief A macro to export a function from a dynamic library + * + * This macro export the C function following it from a dynamic library. + * Exporting the function makes it accessible to the DynamicLibraryManager. + * + * Example of usage: + * \code + * #include + * + * CPPUNIT_PLUGIN_EXPORT CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void) + * { + * ... + * return &myPlugInInterface; + * } + * \endcode + */ + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +// Is WIN32 platform ? +#if defined(WIN32) +#define CPPUNIT_HAVE_WIN32_DLL_LOADER 1 +#undef CPPUNIT_PLUGIN_EXPORT +#define CPPUNIT_PLUGIN_EXPORT extern "C" __declspec(dllexport) + +// Is BeOS platform ? +#elif defined(__BEOS__) +#define CPPUNIT_HAVE_BEOS_DLL_LOADER 1 + +// Is Unix platform and have shl_load() (hp-ux) +#elif defined(CPPUNIT_HAVE_SHL_LOAD) +#define CPPUNIT_HAVE_UNIX_SHL_LOADER 1 + +// Is Unix platform and have include +#elif defined(CPPUNIT_HAVE_LIBDL) +#define CPPUNIT_HAVE_UNIX_DLL_LOADER 1 + +// Otherwise, disable support for DllLoader +#else +#define CPPUNIT_NO_TESTPLUGIN 1 +#endif + +#if !defined(CPPUNIT_PLUGIN_EXPORT) +#define CPPUNIT_PLUGIN_EXPORT extern "C" +#endif // !defined(CPPUNIT_PLUGIN_EXPORT) + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + +#endif // CPPUNIT_CONFIG_SELECTDLLLOADER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/config/config-bcb5.h b/lib/cppunit-1.10.0/include/cppunit/config/config-bcb5.h new file mode 100644 index 0000000000..d491452062 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/config/config-bcb5.h @@ -0,0 +1,47 @@ +#ifndef _INCLUDE_CPPUNIT_CONFIG_BCB5_H +#define _INCLUDE_CPPUNIT_CONFIG_BCB5_H 1 + +#define HAVE_CMATH 1 + +/* include/cppunit/config-bcb5.h. Manually adapted from + include/cppunit/config-auto.h */ + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if library uses std::string::compare(string,pos,n) */ +#ifndef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#define CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST 0 +#endif + +/* Define if you have the header file. */ +#ifdef CPPUNIT_HAVE_DLFCN_H +#undef CPPUNIT_HAVE_DLFCN_H +#endif + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if the compiler supports Run-Time Type Identification */ +#ifndef CPPUNIT_HAVE_RTTI +#define CPPUNIT_HAVE_RTTI 1 +#endif + +/* Define to 1 to use type_info::name() for class names */ +#ifndef CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_USE_TYPEINFO_NAME CPPUNIT_HAVE_RTTI +#endif + +#define CPPUNIT_HAVE_SSTREAM 1 + +/* Name of package */ +#ifndef CPPUNIT_PACKAGE +#define CPPUNIT_PACKAGE "cppunit" +#endif + +/* _INCLUDE_CPPUNIT_CONFIG_BCB5_H */ +#endif diff --git a/lib/cppunit-1.10.0/include/cppunit/config/config-mac.h b/lib/cppunit-1.10.0/include/cppunit/config/config-mac.h new file mode 100644 index 0000000000..4ace906cf9 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/config/config-mac.h @@ -0,0 +1,58 @@ +#ifndef _INCLUDE_CPPUNIT_CONFIG_MAC_H +#define _INCLUDE_CPPUNIT_CONFIG_MAC_H 1 + +/* MacOS X should be installed using the configure script. + This file is for other macs. + + It is not integrated into because we don't + know a suitable preprocessor symbol that will distinguish MacOS X + from other MacOS versions. Email us if you know the answer. +*/ + +/* define if library uses std::string::compare(string,pos,n) */ +#ifdef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#endif + +/* define if the library defines strstream */ +#ifndef CPPUNIT_HAVE_CLASS_STRSTREAM +#define CPPUNIT_HAVE_CLASS_STRSTREAM 1 +#endif + +/* Define if you have the header file. */ +#ifdef CPPUNIT_HAVE_CMATH +#undef CPPUNIT_HAVE_CMATH +#endif + +/* Define if you have the header file. */ +#ifdef CPPUNIT_HAVE_DLFCN_H +#undef CPPUNIT_HAVE_DLFCN_H +#endif + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if the compiler supports Run-Time Type Identification */ +#ifndef CPPUNIT_HAVE_RTTI +#define CPPUNIT_HAVE_RTTI 1 +#endif + +/* define if the compiler has stringstream */ +#ifndef CPPUNIT_HAVE_SSTREAM +#define CPPUNIT_HAVE_SSTREAM 1 +#endif + +/* Define if you have the header file. */ +#ifndef CPPUNIT_HAVE_STRSTREAM +#define CPPUNIT_HAVE_STRSTREAM 1 +#endif + +/* Define to 1 to use type_info::name() for class names */ +#ifndef CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_USE_TYPEINFO_NAME CPPUNIT_HAVE_RTTI +#endif + +/* _INCLUDE_CPPUNIT_CONFIG_MAC_H */ +#endif diff --git a/lib/cppunit-1.10.0/include/cppunit/config/config-msvc6.h b/lib/cppunit-1.10.0/include/cppunit/config/config-msvc6.h new file mode 100644 index 0000000000..51df8afeff --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/config/config-msvc6.h @@ -0,0 +1,70 @@ +#ifndef _INCLUDE_CPPUNIT_CONFIG_MSVC6_H +#define _INCLUDE_CPPUNIT_CONFIG_MSVC6_H 1 + +#if _MSC_VER > 1000 // VC++ +#pragma warning( disable : 4786 ) // disable warning debug symbol > 255... +#endif // _MSC_VER > 1000 + +#define HAVE_CMATH 1 + +/* include/cppunit/config-msvc6.h. Manually adapted from + include/cppunit/config-auto.h */ + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if library uses std::string::compare(string,pos,n) */ +#ifdef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST +#endif + +/* Define if you have the header file. */ +#ifdef CPPUNIT_HAVE_DLFCN_H +#undef CPPUNIT_HAVE_DLFCN_H +#endif + +/* define to 1 if the compiler implements namespaces */ +#ifndef CPPUNIT_HAVE_NAMESPACES +#define CPPUNIT_HAVE_NAMESPACES 1 +#endif + +/* define if the compiler supports Run-Time Type Identification */ +#ifndef CPPUNIT_HAVE_RTTI +#define CPPUNIT_HAVE_RTTI 1 +#endif + +/* Define to 1 to use type_info::name() for class names */ +#ifndef CPPUNIT_USE_TYPEINFO_NAME +#define CPPUNIT_USE_TYPEINFO_NAME CPPUNIT_HAVE_RTTI +#endif + +#define CPPUNIT_HAVE_SSTREAM 1 + +/* Name of package */ +#ifndef CPPUNIT_PACKAGE +#define CPPUNIT_PACKAGE "cppunit" +#endif + + +// Compiler error location format for CompilerOutputter +// See class CompilerOutputter for format. +#undef CPPUNIT_COMPILER_LOCATION_FORMAT +#if _MSC_VER >= 1300 // VS 7.0 +# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p(%l) : error : " +#else +# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p(%l):" +#endif + +// Uncomment to turn on STL wrapping => use this to test compilation. +// This will make CppUnit subclass std::vector & co to provide default +// parameter. +/*#define CPPUNIT_STD_NEED_ALLOCATOR 1 +#define CPPUNIT_STD_ALLOCATOR std::allocator +//#define CPPUNIT_NO_NAMESPACE 1 +*/ + + +/* _INCLUDE_CPPUNIT_CONFIG_MSVC6_H */ +#endif diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/AutoRegisterSuite.h b/lib/cppunit-1.10.0/include/cppunit/extensions/AutoRegisterSuite.h new file mode 100644 index 0000000000..e04adb5d93 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/AutoRegisterSuite.h @@ -0,0 +1,83 @@ +#ifndef CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H +#define CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief (Implementation) Automatically register the test suite of the specified type. + * + * You should not use this class directly. Instead, use the following macros: + * - CPPUNIT_TEST_SUITE_REGISTRATION() + * - CPPUNIT_TEST_SUITE_NAMED_REGISTRATION() + * + * This object will register the test returned by TestCaseType::suite() + * when constructed to the test registry. + * + * This object is intented to be used as a static variable. + * + * + * \param TestCaseType Type of the test case which suite is registered. + * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_SUITE_NAMED_REGISTRATION + * \see CppUnit::TestFactoryRegistry. + */ +template +class AutoRegisterSuite +{ +public: + /** Auto-register the suite factory in the global registry. + */ + AutoRegisterSuite() + : m_registry( &TestFactoryRegistry::getRegistry() ) + { + m_registry->registerFactory( &m_factory ); + } + + /** Auto-register the suite factory in the specified registry. + * \param name Name of the registry. + */ + AutoRegisterSuite( const std::string &name ) + : m_registry( &TestFactoryRegistry::getRegistry( name ) ) + { + m_registry->registerFactory( &m_factory ); + } + + ~AutoRegisterSuite() + { + if ( TestFactoryRegistry::isValid() ) + m_registry->unregisterFactory( &m_factory ); + } + +private: + TestFactoryRegistry *m_registry; + TestSuiteFactory m_factory; +}; + + +/*! \brief (Implementation) Automatically adds a registry into another registry. + * + * Don't use this class. Use the macros CPPUNIT_REGISTRY_ADD() and + * CPPUNIT_REGISTRY_ADD_TO_DEFAULT() instead. + */ +class AutoRegisterRegistry +{ +public: + AutoRegisterRegistry( const std::string &which, + const std::string &to ) + { + TestFactoryRegistry::getRegistry( to ).addRegistry( which ); + } + + AutoRegisterRegistry( const std::string &which ) + { + TestFactoryRegistry::getRegistry().addRegistry( which ); + } +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/ExceptionTestCaseDecorator.h b/lib/cppunit-1.10.0/include/cppunit/extensions/ExceptionTestCaseDecorator.h new file mode 100644 index 0000000000..9c816addb3 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/ExceptionTestCaseDecorator.h @@ -0,0 +1,104 @@ +#ifndef CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H +#define CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief Expected exception test case decorator. + * + * A decorator used to assert that a specific test case should throw an + * exception of a given type. + * + * You should use this class only if you need to check the exception object + * state (that a specific cause is set for example). If you don't need to + * do that, you might consider using CPPUNIT_TEST_EXCEPTION() instead. + * + * Intended use is to subclass and override checkException(). Example: + * + * \code + * + * class NetworkErrorTestCaseDecorator : + * public ExceptionTestCaseDecorator + * { + * public: + * NetworkErrorTestCaseDecorator( NetworkError::Cause expectedCause ) + * : m_expectedCause( expectedCause ) + * { + * } + * private: + * void checkException( ExpectedExceptionType &e ) + * { + * CPPUNIT_ASSERT_EQUAL( m_expectedCause, e.getCause() ); + * } + * + * NetworkError::Cause m_expectedCause; + * }; + * \endcode + * + */ +template +class ExceptionTestCaseDecorator : public TestCaseDecorator +{ +public: + typedef ExpectedException ExpectedExceptionType; + + /*! \brief Decorates the specified test. + * \param test TestCase to decorate. Assumes ownership of the test. + */ + ExceptionTestCaseDecorator( TestCase *test ) + : TestCaseDecorator( test ) + { + } + + /*! \brief Checks that the expected exception is thrown by the decorated test. + * is thrown. + * + * Calls the decorated test runTest() and checks that an exception of + * type ExpectedException is thrown. Call checkException() passing the + * exception that was caught so that some assertions can be made if + * needed. + */ + void runTest() + { + try + { + TestCaseDecorator::runTest(); + } + catch ( ExpectedExceptionType &e ) + { + checkException( e ); + return; + } + + // Moved outside the try{} statement to handle the case where the + // expected exception type is Exception (expecting assertion failure). +#if CPPUNIT_USE_TYPEINFO_NAME + throw Exception( Message( + "expected exception not thrown", + "Expected exception type: " + + TypeInfoHelper::getClassName( + typeid( ExpectedExceptionType ) ) ) ); +#else + throw Exception( Message("expected exception not thrown") ); +#endif + } + +private: + /*! \brief Called when the exception is caught. + * + * Should be overriden to check the exception. + */ + virtual void checkException( ExpectedExceptionType &e ) + { + } +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/HelperMacros.h b/lib/cppunit-1.10.0/include/cppunit/extensions/HelperMacros.h new file mode 100644 index 0000000000..12431e4657 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/HelperMacros.h @@ -0,0 +1,541 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file HelperMacros.h +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/04/15 +// ////////////////////////////////////////////////////////////////////////// +#ifndef CPPUNIT_EXTENSIONS_HELPERMACROS_H +#define CPPUNIT_EXTENSIONS_HELPERMACROS_H + +#include +#include +#include +#include +#include +#include +#include +#include + + +/*! \addtogroup WritingTestFixture Writing test fixture + */ +/** @{ + */ + + +/** \file + * Macros intended to ease the definition of test suites. + * + * The macros + * CPPUNIT_TEST_SUITE(), CPPUNIT_TEST(), and CPPUNIT_TEST_SUITE_END() + * are designed to facilitate easy creation of a test suite. + * For example, + * + * \code + * #include + * class MyTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( MyTest ); + * CPPUNIT_TEST( testEquality ); + * CPPUNIT_TEST( testSetName ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * void testEquality(); + * void testSetName(); + * }; + * \endcode + * + * The effect of these macros is to define two methods in the + * class MyTest. The first method is an auxiliary function + * named registerTests that you will not need to call directly. + * The second function + * \code static CppUnit::TestSuite *suite()\endcode + * returns a pointer to the suite of tests defined by the CPPUNIT_TEST() + * macros. + * + * Rather than invoking suite() directly, + * the macro CPPUNIT_TEST_SUITE_REGISTRATION() is + * used to create a static variable that automatically + * registers its test suite in a global registry. + * The registry yields a Test instance containing all the + * registered suites. + * \code + * CPPUNIT_TEST_SUITE_REGISTRATION( MyTest ); + * CppUnit::Test* tp = + * CppUnit::TestFactoryRegistry::getRegistry().makeTest(); + * \endcode + * + * The test suite macros can even be used with templated test classes. + * For example: + * + * \code + * template + * class StringTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( StringTest ); + * CPPUNIT_TEST( testAppend ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * ... + * }; + * \endcode + * + * You need to add in an implementation file: + * + * \code + * CPPUNIT_TEST_SUITE_REGISTRATION( StringTest ); + * CPPUNIT_TEST_SUITE_REGISTRATION( StringTest ); + * \endcode + */ + + +/*! \brief Begin test suite + * + * This macro starts the declaration of a new test suite. + * Use CPPUNIT_TEST_SUB_SUITE() instead, if you wish to include the + * test suite of the parent class. + * + * \param ATestFixtureType Type of the test case class. This type \b MUST + * be derived from TestFixture. + * \see CPPUNIT_TEST_SUB_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END, + * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_EXCEPTION, CPPUNIT_TEST_FAIL. + */ +#define CPPUNIT_TEST_SUITE( ATestFixtureType ) \ + public: \ + typedef ATestFixtureType TestFixtureType; \ + \ + private: \ + static const CPPUNIT_NS::TestNamer &getTestNamer__() \ + { \ + static CPPUNIT_TESTNAMER_DECL( testNamer, ATestFixtureType ); \ + return testNamer; \ + } \ + \ + public: \ + typedef CPPUNIT_NS::TestSuiteBuilderContext \ + TestSuiteBuilderContextType; \ + \ + static void \ + addTestsToSuite( CPPUNIT_NS::TestSuiteBuilderContextBase &baseContext ) \ + { \ + TestSuiteBuilderContextType context( baseContext ) + + +/*! \brief Begin test suite (includes parent suite) + * + * This macro may only be used in a class whose parent class + * defines a test suite using CPPUNIT_TEST_SUITE() or CPPUNIT_TEST_SUB_SUITE(). + * + * This macro begins the declaration of a test suite, in the same + * manner as CPPUNIT_TEST_SUITE(). In addition, the test suite of the + * parent is automatically inserted in the test suite being + * defined. + * + * Here is an example: + * + * \code + * #include + * class MySubTest : public MyTest { + * CPPUNIT_TEST_SUB_SUITE( MySubTest, MyTest ); + * CPPUNIT_TEST( testAdd ); + * CPPUNIT_TEST( testSub ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * void testAdd(); + * void testSub(); + * }; + * \endcode + * + * \param ATestFixtureType Type of the test case class. This type \b MUST + * be derived from TestFixture. + * \param ASuperClass Type of the parent class. + * \see CPPUNIT_TEST_SUITE. + */ +#define CPPUNIT_TEST_SUB_SUITE( ATestFixtureType, ASuperClass ) \ + public: \ + typedef ASuperClass ParentTestFixtureType; \ + private: \ + CPPUNIT_TEST_SUITE( ATestFixtureType ); \ + ParentTestFixtureType::addTestsToSuite( baseContext ) + + +/*! \brief End declaration of the test suite. + * + * After this macro, member access is set to "private". + * + * \see CPPUNIT_TEST_SUITE. + * \see CPPUNIT_TEST_SUITE_REGISTRATION. + */ +#define CPPUNIT_TEST_SUITE_END() \ + } \ + \ + static CPPUNIT_NS::TestSuite *suite() \ + { \ + const CPPUNIT_NS::TestNamer &namer = getTestNamer__(); \ + std::auto_ptr suite( \ + new CPPUNIT_NS::TestSuite( namer.getFixtureName() )); \ + CPPUNIT_NS::ConcretTestFixtureFactory factory; \ + CPPUNIT_NS::TestSuiteBuilderContextBase context( *suite.get(), \ + namer, \ + factory ); \ + TestFixtureType::addTestsToSuite( context ); \ + return suite.release(); \ + } \ + private: /* dummy typedef so that the macro can still end with ';'*/ \ + typedef int CppUnitDummyTypedefForSemiColonEnding__ + +/*! \brief End declaration of an abstract test suite. + * + * Use this macro to indicate that the %TestFixture is abstract. No + * static suite() method will be declared. + * + * After this macro, member access is set to "private". + * + * Here is an example of usage: + * + * The abstract test fixture: + * \code + * #include + * class AbstractDocument; + * class AbstractDocumentTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( AbstractDocumentTest ); + * CPPUNIT_TEST( testInsertText ); + * CPPUNIT_TEST_SUITE_END_ABSTRACT(); + * public: + * void testInsertText(); + * + * void setUp() + * { + * m_document = makeDocument(); + * } + * + * void tearDown() + * { + * delete m_document; + * } + * protected: + * virtual AbstractDocument *makeDocument() =0; + * + * AbstractDocument *m_document; + * };\endcode + * + * The concret test fixture: + * \code + * class RichTextDocumentTest : public AbstractDocumentTest { + * CPPUNIT_TEST_SUB_SUITE( RichTextDocumentTest, AbstractDocumentTest ); + * CPPUNIT_TEST( testInsertFormatedText ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * void testInsertFormatedText(); + * protected: + * AbstractDocument *makeDocument() + * { + * return new RichTextDocument(); + * } + * };\endcode + * + * \see CPPUNIT_TEST_SUB_SUITE. + * \see CPPUNIT_TEST_SUITE_REGISTRATION. + */ +#define CPPUNIT_TEST_SUITE_END_ABSTRACT() \ + } \ + private: /* dummy typedef so that the macro can still end with ';'*/ \ + typedef int CppUnitDummyTypedefForSemiColonEnding__ + + +/*! \brief Add a test to the suite (for custom test macro). + * + * The specified test will be added to the test suite being declared. This macro + * is intended for \e advanced usage, to extend %CppUnit by creating new macro such + * as CPPUNIT_TEST_EXCEPTION()... + * + * Between macro CPPUNIT_TEST_SUITE() and CPPUNIT_TEST_SUITE_END(), you can assume + * that the following variables can be used: + * \code + * typedef TestSuiteBuilder TestSuiteBuilderType; + * TestSuiteBuilderType &context; + * \endcode + * + * \c context can be used to name test case, create new test fixture instance, + * or add test case to the test fixture suite. + * + * Below is an example that show how to use this macro to create new macro to add + * test to the fixture suite. The macro below show how you would add a new type + * of test case which fails if the execution last more than a given time limit. + * It relies on an imaginary TimeOutTestCaller class which has an interface similar + * to TestCaller. + * + * \code + * #define CPPUNITEX_TEST_TIMELIMIT( testMethod, timeLimit ) \ + * CPPUNIT_TEST_SUITE_ADD_TEST( (new TimeOutTestCaller( \ + * namer.getTestNameFor( #testMethod ), \ + * &TestFixtureType::testMethod, \ + * factory.makeFixture(), \ + * timeLimit ) ) ) + * + * class PerformanceTest : CppUnit::TestFixture + * { + * public: + * CPPUNIT_TEST_SUITE( PerformanceTest ); + * CPPUNITEX_TEST_TIMELIMIT( testSortReverseOrder, 5.0 ); + * CPPUNIT_TEST_SUITE_END(); + * + * void testSortReverseOrder(); + * }; + * \endcode + * + * \param test Test to add to the suite. Must be a subclass of Test. The test name + * should have been obtained using TestNamer::getTestNameFor(). + */ +#define CPPUNIT_TEST_SUITE_ADD_TEST( test ) \ + context.addTest( test ) + +/*! \brief Add a method to the suite. + * \param testMethod Name of the method of the test case to add to the + * suite. The signature of the method must be of + * type: void testMethod(); + * \see CPPUNIT_TEST_SUITE. + */ +#define CPPUNIT_TEST( testMethod ) \ + CPPUNIT_TEST_SUITE_ADD_TEST( \ + ( new CPPUNIT_NS::TestCaller( \ + context.getTestNameFor( #testMethod), \ + &TestFixtureType::testMethod, \ + context.makeFixture() ) ) ) + +/*! \brief Add a test which fail if the specified exception is not caught. + * + * Example: + * \code + * #include + * #include + * class MyTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( MyTest ); + * CPPUNIT_TEST_EXCEPTION( testVectorAtThrow, std::invalid_argument ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * void testVectorAtThrow() + * { + * std::vector v; + * v.at( 1 ); // must throw exception std::invalid_argument + * } + * }; + * \endcode + * + * \param testMethod Name of the method of the test case to add to the suite. + * \param ExceptionType Type of the exception that must be thrown by the test + * method. + * \deprecated Use the assertion macro CPPUNIT_ASSERT_THROW instead. + */ +#define CPPUNIT_TEST_EXCEPTION( testMethod, ExceptionType ) \ + CPPUNIT_TEST_SUITE_ADD_TEST( \ + (new CPPUNIT_NS::ExceptionTestCaseDecorator< ExceptionType >( \ + new CPPUNIT_NS::TestCaller< TestFixtureType >( \ + context.getTestNameFor( #testMethod ), \ + &TestFixtureType::testMethod, \ + context.makeFixture() ) ) ) ) + +/*! \brief Adds a test case which is excepted to fail. + * + * The added test case expect an assertion to fail. You usually used that type + * of test case when testing custom assertion macros. + * + * \code + * CPPUNIT_TEST_FAIL( testAssertFalseFail ); + * + * void testAssertFalseFail() + * { + * CPPUNIT_ASSERT( false ); + * } + * \endcode + * \see CreatingNewAssertions. + * \deprecated Use the assertion macro CPPUNIT_ASSERT_ASSERTION_FAIL instead. + */ +#define CPPUNIT_TEST_FAIL( testMethod ) \ + CPPUNIT_TEST_EXCEPTION( testMethod, CPPUNIT_NS::Exception ) + +/*! \brief Adds some custom test cases. + * + * Use this to add one or more test cases to the fixture suite. The specified + * method is called with a context parameter that can be used to name, + * instantiate fixture, and add instantiated test case to the fixture suite. + * The specified method must have the following signature: + * \code + * static void aMethodName( TestSuiteBuilderContextType &context ); + * \endcode + * + * \c TestSuiteBuilderContextType is typedef to + * TestSuiteBuilderContext declared by CPPUNIT_TEST_SUITE(). + * + * Here is an example that add two custom tests: + * + * \code + * #include + * + * class MyTest : public CppUnit::TestFixture { + * CPPUNIT_TEST_SUITE( MyTest ); + * CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( addTimeOutTests ); + * CPPUNIT_TEST_SUITE_END(); + * public: + * static void addTimeOutTests( TestSuiteBuilderContextType &context ) + * { + * context.addTest( new TimeOutTestCaller( context.getTestNameFor( "test1" ) ), + * &MyTest::test1, + * context.makeFixture(), + * 5.0 ); + * context.addTest( new TimeOutTestCaller( context.getTestNameFor( "test2" ) ), + * &MyTest::test2, + * context.makeFixture(), + * 5.0 ); + * } + * + * void test1() + * { + * // Do some test that may never end... + * } + * + * void test2() + * { + * // Do some test that may never end... + * } + * }; + * \endcode + * @param testAdderMethod Name of the method called to add the test cases. + */ +#define CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( testAdderMethod ) \ + testAdderMethod( context ) + +/*! \brief Adds a property to the test suite builder context. + * \param APropertyKey Key of the property to add. + * \param APropertyValue Value for the added property. + * Example: + * \code + * CPPUNIT_TEST_SUITE_PROPERTY("XmlFileName", "paraTest.xml"); \endcode + */ +#define CPPUNIT_TEST_SUITE_PROPERTY( APropertyKey, APropertyValue ) \ + context.addProperty( std::string(APropertyKey), \ + std::string(APropertyValue) ) + +/** @} + */ + + +/*! Adds the specified fixture suite to the unnamed registry. + * \ingroup CreatingTestSuite + * + * This macro declares a static variable whose construction + * causes a test suite factory to be inserted in a global registry + * of such factories. The registry is available by calling + * the static function CppUnit::TestFactoryRegistry::getRegistry(). + * + * \param ATestFixtureType Type of the test case class. + * \warning This macro should be used only once per line of code (the line + * number is used to name a hidden static variable). + * \see CPPUNIT_TEST_SUITE_NAMED_REGISTRATION + * \see CPPUNIT_REGISTRY_ADD_TO_DEFAULT + * \see CPPUNIT_REGISTRY_ADD + * \see CPPUNIT_TEST_SUITE, CppUnit::AutoRegisterSuite, + * CppUnit::TestFactoryRegistry. + */ +#define CPPUNIT_TEST_SUITE_REGISTRATION( ATestFixtureType ) \ + static CPPUNIT_NS::AutoRegisterSuite< ATestFixtureType > \ + CPPUNIT_MAKE_UNIQUE_NAME(autoRegisterRegistry__ ) + + +/** Adds the specified fixture suite to the specified registry suite. + * \ingroup CreatingTestSuite + * + * This macro declares a static variable whose construction + * causes a test suite factory to be inserted in the global registry + * suite of the specified name. The registry is available by calling + * the static function CppUnit::TestFactoryRegistry::getRegistry(). + * + * For the suite name, use a string returned by a static function rather + * than a hardcoded string. That way, you can know what are the name of + * named registry and you don't risk mistyping the registry name. + * + * \code + * // MySuites.h + * namespace MySuites { + * std::string math() { + * return "Math"; + * } + * } + * + * // ComplexNumberTest.cpp + * #include "MySuites.h" + * + * CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ComplexNumberTest, MySuites::math() ); + * \endcode + * + * \param ATestFixtureType Type of the test case class. + * \param suiteName Name of the global registry suite the test suite is + * registered into. + * \warning This macro should be used only once per line of code (the line + * number is used to name a hidden static variable). + * \see CPPUNIT_TEST_SUITE_REGISTRATION + * \see CPPUNIT_REGISTRY_ADD_TO_DEFAULT + * \see CPPUNIT_REGISTRY_ADD + * \see CPPUNIT_TEST_SUITE, CppUnit::AutoRegisterSuite, + * CppUnit::TestFactoryRegistry.. + */ +#define CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ATestFixtureType, suiteName ) \ + static CPPUNIT_NS::AutoRegisterSuite< ATestFixtureType > \ + CPPUNIT_MAKE_UNIQUE_NAME(autoRegisterRegistry__ )(suiteName) + +/*! Adds that the specified registry suite to another registry suite. + * \ingroup CreatingTestSuite + * + * Use this macros to automatically create test registry suite hierarchy. For example, + * if you want to create the following hierarchy: + * - Math + * - IntegerMath + * - FloatMath + * - FastFloat + * - StandardFloat + * + * You can do this automatically with: + * \code + * CPPUNIT_REGISTRY_ADD( "FastFloat", "FloatMath" ); + * CPPUNIT_REGISTRY_ADD( "IntegerMath", "Math" ); + * CPPUNIT_REGISTRY_ADD( "FloatMath", "Math" ); + * CPPUNIT_REGISTRY_ADD( "StandardFloat", "FloatMath" ); + * \endcode + * + * There is no specific order of declaration. Think of it as declaring links. + * + * You register the test in each suite using CPPUNIT_TEST_SUITE_NAMED_REGISTRATION. + * + * \param which Name of the registry suite to add to the registry suite named \a to. + * \param to Name of the registry suite \a which is added to. + * \see CPPUNIT_REGISTRY_ADD_TO_DEFAULT, CPPUNIT_TEST_SUITE_NAMED_REGISTRATION. + */ +#define CPPUNIT_REGISTRY_ADD( which, to ) \ + static CPPUNIT_NS::AutoRegisterRegistry \ + CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ )( which, to ) + +/*! Adds that the specified registry suite to the default registry suite. + * \ingroup CreatingTestSuite + * + * This macro is just like CPPUNIT_REGISTRY_ADD except the specified registry + * suite is added to the default suite (root suite). + * + * \param which Name of the registry suite to add to the default registry suite. + * \see CPPUNIT_REGISTRY_ADD. + */ +#define CPPUNIT_REGISTRY_ADD_TO_DEFAULT( which ) \ + static CPPUNIT_NS::AutoRegisterRegistry \ + CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ )( which ) + +// Backwards compatibility +// (Not tested!) + +#if CPPUNIT_ENABLE_CU_TEST_MACROS + +#define CU_TEST_SUITE(tc) CPPUNIT_TEST_SUITE(tc) +#define CU_TEST_SUB_SUITE(tc,sc) CPPUNIT_TEST_SUB_SUITE(tc,sc) +#define CU_TEST(tm) CPPUNIT_TEST(tm) +#define CU_TEST_SUITE_END() CPPUNIT_TEST_SUITE_END() +#define CU_TEST_SUITE_REGISTRATION(tc) CPPUNIT_TEST_SUITE_REGISTRATION(tc) + +#endif + + +#endif // CPPUNIT_EXTENSIONS_HELPERMACROS_H diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.am new file mode 100644 index 0000000000..ff96de3183 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.am @@ -0,0 +1,19 @@ +libcppunitincludedir = $(includedir)/cppunit/extensions + +libcppunitinclude_HEADERS = \ + TestFactory.h \ + AutoRegisterSuite.h \ + HelperMacros.h \ + Orthodox.h \ + RepeatedTest.h \ + ExceptionTestCaseDecorator.h \ + TestCaseDecorator.h \ + TestDecorator.h \ + TestFactoryRegistry.h \ + TestFixtureFactory.h \ + TestNamer.h \ + TestSetUp.h \ + TestSuiteBuilderContext.h \ + TestSuiteFactory.h \ + TypeInfoHelper.h + diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.in new file mode 100644 index 0000000000..015d160ed4 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.in @@ -0,0 +1,389 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +libcppunitincludedir = $(includedir)/cppunit/extensions + +libcppunitinclude_HEADERS = \ + TestFactory.h \ + AutoRegisterSuite.h \ + HelperMacros.h \ + Orthodox.h \ + RepeatedTest.h \ + ExceptionTestCaseDecorator.h \ + TestCaseDecorator.h \ + TestDecorator.h \ + TestFactoryRegistry.h \ + TestFixtureFactory.h \ + TestNamer.h \ + TestSetUp.h \ + TestSuiteBuilderContext.h \ + TestSuiteFactory.h \ + TypeInfoHelper.h + +subdir = include/cppunit/extensions +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +HEADERS = $(libcppunitinclude_HEADERS) + +DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/extensions/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +uninstall-libcppunitincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libcppunitincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-libcppunitincludeHEADERS + +.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 info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libcppunitincludeHEADERS install-man 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-info-am \ + uninstall-libcppunitincludeHEADERS + +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/Orthodox.h b/lib/cppunit-1.10.0/include/cppunit/extensions/Orthodox.h new file mode 100644 index 0000000000..722125937e --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/Orthodox.h @@ -0,0 +1,95 @@ +#ifndef CPPUNIT_EXTENSIONS_ORTHODOX_H +#define CPPUNIT_EXTENSIONS_ORTHODOX_H + +#include + +CPPUNIT_NS_BEGIN + + +/* + * Orthodox performs a simple set of tests on an arbitary + * class to make sure that it supports at least the + * following operations: + * + * default construction - constructor + * equality/inequality - operator== && operator!= + * assignment - operator= + * negation - operator! + * safe passage - copy construction + * + * If operations for each of these are not declared + * the template will not instantiate. If it does + * instantiate, tests are performed to make sure + * that the operations have correct semantics. + * + * Adding an orthodox test to a suite is very + * easy: + * + * public: Test *suite () { + * TestSuite *suiteOfTests = new TestSuite; + * suiteOfTests->addTest (new ComplexNumberTest ("testAdd"); + * suiteOfTests->addTest (new TestCaller > ()); + * return suiteOfTests; + * } + * + * Templated test cases be very useful when you are want to + * make sure that a group of classes have the same form. + * + * see TestSuite + */ + + +template class Orthodox : public TestCase +{ +public: + Orthodox () : TestCase ("Orthodox") {} + +protected: + ClassUnderTest call (ClassUnderTest object); + void runTest (); + + +}; + + +// Run an orthodoxy test +template void Orthodox::runTest () +{ + // make sure we have a default constructor + ClassUnderTest a, b, c; + + // make sure we have an equality operator + CPPUNIT_ASSERT (a == b); + + // check the inverse + b.operator= (a.operator! ()); + CPPUNIT_ASSERT (a != b); + + // double inversion + b = !!a; + CPPUNIT_ASSERT (a == b); + + // invert again + b = !a; + + // check calls + c = a; + CPPUNIT_ASSERT (c == call (a)); + + c = b; + CPPUNIT_ASSERT (c == call (b)); + +} + + +// Exercise a call +template +ClassUnderTest Orthodox::call (ClassUnderTest object) +{ + return object; +} + + +CPPUNIT_NS_END + +#endif diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/RepeatedTest.h b/lib/cppunit-1.10.0/include/cppunit/extensions/RepeatedTest.h new file mode 100644 index 0000000000..390ce4807b --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/RepeatedTest.h @@ -0,0 +1,43 @@ +#ifndef CPPUNIT_EXTENSIONS_REPEATEDTEST_H +#define CPPUNIT_EXTENSIONS_REPEATEDTEST_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class Test; +class TestResult; + + +/*! \brief Decorator that runs a test repeatedly. + * + * Does not assume ownership of the test it decorates + */ +class CPPUNIT_API RepeatedTest : public TestDecorator +{ +public: + RepeatedTest( Test *test, + int timesRepeat ) : + TestDecorator( test ), + m_timesRepeat(timesRepeat) + { + } + + void run( TestResult *result ); + + int countTestCases() const; + +private: + RepeatedTest( const RepeatedTest & ); + void operator=( const RepeatedTest & ); + + const int m_timesRepeat; +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_EXTENSIONS_REPEATEDTEST_H diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestCaseDecorator.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestCaseDecorator.h new file mode 100644 index 0000000000..3a15ba9747 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TestCaseDecorator.h @@ -0,0 +1,40 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTCASEDECORATOR_H +#define CPPUNIT_EXTENSIONS_TESTCASEDECORATOR_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +/*! \brief Decorator for Test cases. + * + * TestCaseDecorator provides an alternate means to extend functionality + * of a test class without subclassing the test. Instead, one can + * subclass the decorater and use it to wrap the test class. + * + * Does not assume ownership of the test it decorates + */ +class CPPUNIT_API TestCaseDecorator : public TestCase +{ +public: + TestCaseDecorator( TestCase *test ); + ~TestCaseDecorator(); + + std::string getName() const; + + void setUp(); + + void tearDown(); + + void runTest(); + +protected: + TestCase *m_test; +}; + + +CPPUNIT_NS_END + +#endif + diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestDecorator.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestDecorator.h new file mode 100644 index 0000000000..59d9a302e5 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TestDecorator.h @@ -0,0 +1,49 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTDECORATOR_H +#define CPPUNIT_EXTENSIONS_TESTDECORATOR_H + +#include +#include + +CPPUNIT_NS_BEGIN + + +class TestResult; + + +/*! \brief Decorator for Tests. + * + * TestDecorator provides an alternate means to extend functionality + * of a test class without subclassing the test. Instead, one can + * subclass the decorater and use it to wrap the test class. + * + * Does not assume ownership of the test it decorates + */ +class CPPUNIT_API TestDecorator : public Test +{ +public: + TestDecorator( Test *test ); + ~TestDecorator(); + + int countTestCases() const; + + std::string getName() const; + + void run( TestResult *result ); + + int getChildTestCount() const; + +protected: + Test *doGetChildTestAt( int index ) const; + + Test *m_test; + +private: + TestDecorator( const TestDecorator &); + void operator =( const TestDecorator & ); +}; + + +CPPUNIT_NS_END + +#endif + diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactory.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactory.h new file mode 100644 index 0000000000..214d353490 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactory.h @@ -0,0 +1,27 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTFACTORY_H +#define CPPUNIT_EXTENSIONS_TESTFACTORY_H + +#include + +CPPUNIT_NS_BEGIN + + +class Test; + +/*! \brief Abstract Test factory. + */ +class CPPUNIT_API TestFactory +{ +public: + virtual ~TestFactory() {} + + /*! Makes a new test. + * \return A new Test. + */ + virtual Test* makeTest() = 0; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_TESTFACTORY_H diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactoryRegistry.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactoryRegistry.h new file mode 100644 index 0000000000..fc8723e400 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactoryRegistry.h @@ -0,0 +1,182 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H +#define CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class TestSuite; + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::set; +#endif + + +/*! \brief Registry for TestFactory. + * \ingroup CreatingTestSuite + * + * Notes that the registry \b DON'T assumes lifetime control for any registered tests + * anymore. + * + * The default registry is the registry returned by getRegistry() with the + * default name parameter value. + * + * To register tests, use the macros: + * - CPPUNIT_TEST_SUITE_REGISTRATION(): to add tests in the default registry. + * - CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(): to add tests in a named registry. + * + * Example 1: retreiving a suite that contains all the test registered with + * CPPUNIT_TEST_SUITE_REGISTRATION(). + * \code + * CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry(); + * CppUnit::TestSuite *suite = registry.makeTest(); + * \endcode + * + * Example 2: retreiving a suite that contains all the test registered with + * \link CPPUNIT_TEST_SUITE_NAMED_REGISTRATION() CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ..., "Math" )\endlink. + * \code + * CppUnit::TestFactoryRegistry &mathRegistry = CppUnit::TestFactoryRegistry::getRegistry( "Math" ); + * CppUnit::TestSuite *mathSuite = mathRegistry.makeTest(); + * \endcode + * + * Example 3: creating a test suite hierarchy composed of unnamed registration and + * named registration: + * - All Tests + * - tests registered with CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ..., "Graph" ) + * - tests registered with CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ..., "Math" ) + * - tests registered with CPPUNIT_TEST_SUITE_REGISTRATION + * + * \code + * CppUnit::TestSuite *rootSuite = new CppUnit::TestSuite( "All tests" ); + * rootSuite->addTest( CppUnit::TestFactoryRegistry::getRegistry( "Graph" ).makeTest() ); + * rootSuite->addTest( CppUnit::TestFactoryRegistry::getRegistry( "Math" ).makeTest() ); + * CppUnit::TestFactoryRegistry::getRegistry().addTestToSuite( rootSuite ); + * \endcode + * + * The same result can be obtained with: + * \code + * CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry(); + * registry.addRegistry( "Graph" ); + * registry.addRegistry( "Math" ); + * CppUnit::TestSuite *suite = registry.makeTest(); + * \endcode + * + * Since a TestFactoryRegistry is a TestFactory, the named registries can be + * registered in the unnamed registry, creating the hierarchy links. + * + * \see TestSuiteFactory, AutoRegisterSuite + * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_SUITE_NAMED_REGISTRATION + */ +class CPPUNIT_API TestFactoryRegistry : public TestFactory +{ +public: + /** Constructs the registry with the specified name. + * \param name Name of the registry. It is the name of TestSuite returned by + * makeTest(). + */ + TestFactoryRegistry( std::string name ); + + /// Destructor. + virtual ~TestFactoryRegistry(); + + /** Returns a new TestSuite that contains the registered test. + * \return A new TestSuite which contains all the test added using + * registerFactory(TestFactory *). + */ + virtual Test *makeTest(); + + /** Returns a named registry. + * + * If the \a name is left to its default value, then the registry that is returned is + * the one used by CPPUNIT_TEST_SUITE_REGISTRATION(): the 'top' level registry. + * + * \param name Name of the registry to return. + * \return Registry. If the registry does not exist, it is created with the + * specified name. + */ + static TestFactoryRegistry &getRegistry( const std::string &name = "All Tests" ); + + /** Adds the registered tests to the specified suite. + * \param suite Suite the tests are added to. + */ + void addTestToSuite( TestSuite *suite ); + + /** Adds the specified TestFactory to the registry. + * + * \param factory Factory to register. + */ + void registerFactory( TestFactory *factory ); + + /*! Removes the specified TestFactory from the registry. + * + * The specified factory is not destroyed. + * \param factory Factory to remove from the registry. + * \todo Address case when trying to remove a TestRegistryFactory. + */ + void unregisterFactory( TestFactory *factory ); + + /*! Adds a registry to the registry. + * + * Convenience method to help create test hierarchy. See TestFactoryRegistry detail + * for examples of use. Calling this method is equivalent to: + * \code + * this->registerFactory( TestFactoryRegistry::getRegistry( name ) ); + * \endcode + * + * \param name Name of the registry to add. + */ + void addRegistry( const std::string &name ); + + /*! Tests if the registry is valid. + * + * This method should be used when unregistering test factory on static variable + * destruction to ensure that the registry has not been already destroyed (in + * that case there is no need to unregister the test factory). + * + * You should not concern yourself with this method unless you are writing a class + * like AutoRegisterSuite. + * + * \return \c true if the specified registry has not been destroyed, + * otherwise returns \c false. + * \see AutoRegisterSuite. + */ + static bool isValid(); + + /** Adds the specified TestFactory with a specific name (DEPRECATED). + * \param name Name associated to the factory. + * \param factory Factory to register. + * \deprecated Use registerFactory( TestFactory *) instead. + */ + void registerFactory( const std::string &name, + TestFactory *factory ); + +private: + TestFactoryRegistry( const TestFactoryRegistry © ); + void operator =( const TestFactoryRegistry © ); + +private: + typedef CppUnitSet > Factories; + Factories m_factories; + + std::string m_name; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestFixtureFactory.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestFixtureFactory.h new file mode 100644 index 0000000000..1e3e803143 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TestFixtureFactory.h @@ -0,0 +1,48 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H +#define CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H + +#include + + +CPPUNIT_NS_BEGIN + + +class TestFixture; + +/*! \brief Abstract TestFixture factory (Implementation). + * + * Implementation detail. Use by HelperMacros to handle TestFixture hierarchy. + */ +class TestFixtureFactory +{ +public: + //! Creates a new TestFixture instance. + virtual TestFixture *makeFixture() =0; +}; + + +/*! \brief Concret TestFixture factory (Implementation). + * + * Implementation detail. Use by HelperMacros to handle TestFixture hierarchy. + */ +template +class ConcretTestFixtureFactory : public CPPUNIT_NS::TestFixtureFactory +{ + /*! \brief Returns a new TestFixture instance. + * \return A new fixture instance. The fixture instance is returned by + * the TestFixtureFactory passed on construction. The actual type + * is that of the fixture on which the static method suite() + * was called. + */ + TestFixture *makeFixture() + { + return new TestFixtureType(); + } +}; + + +CPPUNIT_NS_END + + +#endif // CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestNamer.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestNamer.h new file mode 100644 index 0000000000..5a6471c0c3 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TestNamer.h @@ -0,0 +1,89 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTNAMER_H +#define CPPUNIT_EXTENSIONS_TESTNAMER_H + +#include +#include + +#if CPPUNIT_HAVE_RTTI +# include +#endif + + + +/*! \def CPPUNIT_TESTNAMER_DECL( variableName, FixtureType ) + * \brief Declares a TestNamer. + * + * Declares a TestNamer for the specified type, using RTTI if enabled, otherwise + * using macro string expansion. + * + * RTTI is used if CPPUNIT_USE_TYPEINFO_NAME is defined and not null. + * + * \code + * void someMethod() + * { + * CPPUNIT_TESTNAMER_DECL( namer, AFixtureType ); + * std::string fixtureName = namer.getFixtureName(); + * ... + * \endcode + * + * \relates TestNamer + * \see TestNamer + */ +#if CPPUNIT_USE_TYPEINFO_NAME +# define CPPUNIT_TESTNAMER_DECL( variableName, FixtureType ) \ + CPPUNIT_NS::TestNamer variableName( typeid(FixtureType) ) +#else +# define CPPUNIT_TESTNAMER_DECL( variableName, FixtureType ) \ + CPPUNIT_NS::TestNamer variableName( std::string(#FixtureType) ) +#endif + + + +CPPUNIT_NS_BEGIN + + +/*! \brief Names a test or a fixture suite. + * + * TestNamer is usually instantiated using CPPUNIT_TESTNAMER_DECL. + * + */ +class CPPUNIT_API TestNamer +{ +public: +#if CPPUNIT_HAVE_RTTI + /*! \brief Constructs a namer using the fixture's type-info. + * \param typeInfo Type-info of the fixture type. Use to name the fixture suite. + */ + TestNamer( const std::type_info &typeInfo ); +#endif + + /*! \brief Constructs a namer using the specified fixture name. + * \param fixtureName Name of the fixture suite. Usually extracted using a macro. + */ + TestNamer( const std::string &fixtureName ); + + virtual ~TestNamer(); + + /*! \brief Returns the name of the fixture. + * \return Name of the fixture. + */ + virtual std::string getFixtureName() const; + + /*! \brief Returns the name of the test for the specified method. + * \param testMethodName Name of the method that implements a test. + * \return A string that is the concatenation of the test fixture name + * (returned by getFixtureName()) and\a testMethodName, + * separated using '::'. This provides a fairly unique name for a given + * test. + */ + virtual std::string getTestNameFor( const std::string &testMethodName ) const; + +protected: + std::string m_fixtureName; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_TESTNAMER_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestSetUp.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestSetUp.h new file mode 100644 index 0000000000..f2128ecd74 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TestSetUp.h @@ -0,0 +1,34 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTSETUP_H +#define CPPUNIT_EXTENSIONS_TESTSETUP_H + +#include + +CPPUNIT_NS_BEGIN + + +class Test; +class TestResult; + +/*! \brief Decorates a test by providing a specific setUp() and tearDown(). + */ +class CPPUNIT_API TestSetUp : public TestDecorator +{ +public: + TestSetUp( Test *test ); + + void run( TestResult *result ); + +protected: + virtual void setUp(); + virtual void tearDown(); + +private: + TestSetUp( const TestSetUp & ); + void operator =( const TestSetUp & ); +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_TESTSETUP_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteBuilderContext.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteBuilderContext.h new file mode 100644 index 0000000000..171455be3a --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteBuilderContext.h @@ -0,0 +1,122 @@ +#ifndef CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H +#define CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H + +#include +#include +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +CPPUNIT_NS_BEGIN + +class TestSuite; +class TestFixture; +class TestFixtureFactory; +class TestNamer; + +/*! \brief Context used when creating test suite in HelperMacros. + * + * Base class for all context used when creating test suite. The + * actual context type during test suite creation is TestSuiteBuilderContext. + * + * \sa CPPUNIT_TEST_SUITE, CPPUNIT_TEST_SUITE_ADD_TEST, + * CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS. + */ +class CPPUNIT_API TestSuiteBuilderContextBase +{ +public: + /*! \brief Constructs a new context. + * + * You should not use this. The context is created in + * CPPUNIT_TEST_SUITE(). + */ + TestSuiteBuilderContextBase( TestSuite &suite, + const TestNamer &namer, + TestFixtureFactory &factory ); + + /*! \brief Adds a test to the fixture suite. + * + * \param test Test to add to the fixture suite. Must not be \c NULL. + */ + void addTest( Test *test ); + + /*! \brief Returns the fixture name. + * \return Fixture name. It is the name used to name the fixture + * suite. + */ + std::string getFixtureName() const; + + /*! \brief Returns the name of the test for the specified method. + * + * \param testMethodName Name of the method that implements a test. + * \return A string that is the concatenation of the test fixture name + * (returned by getFixtureName()) and\a testMethodName, + * separated using '::'. This provides a fairly unique name for a given + * test. + */ + std::string getTestNameFor( const std::string &testMethodName ) const; + + /*! \brief Adds property pair. + * \param key PropertyKey string to add. + * \param value PropertyValue string to add. + */ + void addProperty( const std::string &key, + const std::string &value ); + + /*! \brief Returns property value assigned to param key. + * \param key PropertyKey string. + */ + const std::string getStringProperty( const std::string &key ) const; + +protected: + TestFixture *makeTestFixture() const; + + typedef CppUnitMap Properties; + + TestSuite &m_suite; + const TestNamer &m_namer; + TestFixtureFactory &m_factory; + Properties m_properties; +}; + + +/*! \brief Type-sage context used when creating test suite in HelperMacros. + * + * \sa TestSuiteBuilderContextBase. + */ +template +class TestSuiteBuilderContext : public TestSuiteBuilderContextBase +{ +public: + typedef Fixture FixtureType; + + TestSuiteBuilderContext( TestSuiteBuilderContextBase &contextBase ) + : TestSuiteBuilderContextBase( contextBase ) + { + } + + /*! \brief Returns a new TestFixture instance. + * \return A new fixture instance. The fixture instance is returned by + * the TestFixtureFactory passed on construction. The actual type + * is that of the fixture on which the static method suite() + * was called. + */ + FixtureType *makeFixture() const + { + return CPPUNIT_STATIC_CAST( FixtureType *, + TestSuiteBuilderContextBase::makeTestFixture() ); + } +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + +#endif // CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteFactory.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteFactory.h new file mode 100644 index 0000000000..260b483151 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteFactory.h @@ -0,0 +1,27 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H +#define CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H + +#include + +CPPUNIT_NS_BEGIN + + + class Test; + + /*! \brief TestFactory for TestFixture that implements a static suite() method. + * \see AutoRegisterSuite. + */ + template + class TestSuiteFactory : public TestFactory + { + public: + virtual Test *makeTest() + { + return TestCaseType::suite(); + } + }; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TypeInfoHelper.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TypeInfoHelper.h new file mode 100644 index 0000000000..8dad4f5a9f --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/extensions/TypeInfoHelper.h @@ -0,0 +1,32 @@ +#ifndef CPPUNIT_TYPEINFOHELPER_H +#define CPPUNIT_TYPEINFOHELPER_H + +#include + +#if CPPUNIT_HAVE_RTTI + +#include + +CPPUNIT_NS_BEGIN + + + /**! \brief Helper to use type_info. + */ + class CPPUNIT_API TypeInfoHelper + { + public: + /*! \brief Get the class name of the specified type_info. + * \param info Info which the class name is extracted from. + * \return The string returned by type_info::name() without + * the "class" prefix. If the name is not prefixed + * by "class", it is returned as this. + */ + static std::string getClassName( const std::type_info &info ); + }; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_HAVE_RTTI + +#endif // CPPUNIT_TYPEINFOHELPER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManager.h b/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManager.h new file mode 100644 index 0000000000..b93ebad694 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManager.h @@ -0,0 +1,120 @@ +#ifndef CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H +#define CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +CPPUNIT_NS_BEGIN + + +/*! \brief Manages dynamic libraries. + * + * The Dynamic Library Manager provides a platform independent way to work with + * dynamic library. It load a specific dynamic library, and can returns specific + * symbol exported by the dynamic library. + * + * If an error occurs, a DynamicLibraryManagerException is thrown. + * + * \internal Implementation of the OS independent methods is in + * DynamicLibraryManager.cpp. + * + * \internal Porting to a new platform: + * - Adds platform detection in config/SelectDllLoader.h. Should define a specific + * macro for that platform of the form: CPPUNIT_HAVE_XYZ_DLL_LOADER, where + * XYZ is the platform. + * - Makes a copy of UnixDynamicLibraryManager.cpp and named it after the platform. + * - Updated the 'guard' in your file (CPPUNIT_HAVE_XYZ_DLL_LOADER) so that it is + * only processed if the matching platform has been detected. + * - Change the implementation of methods doLoadLibrary(), doReleaseLibrary(), + * doFindSymbol() in your copy. Those methods usually maps directly to OS calls. + * - Adds the file to the project. + */ +class DynamicLibraryManager +{ +public: + typedef void *Symbol; + typedef void *LibraryHandle; + + /*! \brief Loads the specified library. + * \param libraryFileName Name of the library to load. + * \exception DynamicLibraryManagerException if a failure occurs while loading + * the library (fail to found or load the library). + */ + DynamicLibraryManager( const std::string &libraryFileName ); + + /// Releases the loaded library.. + ~DynamicLibraryManager(); + + /*! \brief Returns a pointer on the specified symbol exported by the library. + * \param symbol Name of the symbol exported by the library. + * \return Pointer on the symbol. Should be casted to the actual type. Never \c NULL. + * \exception DynamicLibraryManagerException if the symbol is not found. + */ + Symbol findSymbol( const std::string &symbol ); + +private: + /*! Loads the specified library. + * \param libraryName Name of the library to load. + * \exception DynamicLibraryManagerException if a failure occurs while loading + * the library (fail to found or load the library). + */ + void loadLibrary( const std::string &libraryName ); + + /*! Releases the loaded library. + * + * \warning Must NOT throw any exceptions (called from destructor). + */ + void releaseLibrary(); + + /*! Loads the specified library. + * + * May throw any exceptions (indicates failure). + * \param libraryName Name of the library to load. + * \return Handle of the loaded library. \c NULL indicates failure. + */ + LibraryHandle doLoadLibrary( const std::string &libraryName ); + + /*! Releases the loaded library. + * + * The handle of the library to free is in \c m_libraryHandle. It is never + * \c NULL. + * \warning Must NOT throw any exceptions (called from destructor). + */ + void doReleaseLibrary(); + + /*! Returns a pointer on the specified symbol exported by the library. + * + * May throw any exceptions (indicates failure). + * \param symbol Name of the symbol exported by the library. + * \return Pointer on the symbol. \c NULL indicates failure. + */ + Symbol doFindSymbol( const std::string &symbol ); + + /*! Returns detailed information about doLoadLibrary() failure. + * + * Called just after a failed call to doLoadLibrary() to get extra + * error information. + * + * \return Detailed information about the failure of the call to + * doLoadLibrary() that just failed. + */ + std::string getLastErrorDetail() const; + + /// Prevents the use of the copy constructor. + DynamicLibraryManager( const DynamicLibraryManager © ); + + /// Prevents the use of the copy operator. + void operator =( const DynamicLibraryManager © ); + +private: + LibraryHandle m_libraryHandle; + std::string m_libraryName; +}; + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + +#endif // CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManagerException.h b/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManagerException.h new file mode 100644 index 0000000000..11ebbd9da6 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManagerException.h @@ -0,0 +1,53 @@ +#ifndef CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H +#define CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Exception thrown by DynamicLibraryManager when a failure occurs. + * + * Use getCause() to know what function caused the failure. + * + */ +class DynamicLibraryManagerException : public std::runtime_error +{ +public: + enum Cause + { + /// Failed to load the dynamic library + loadingFailed =0, + /// Symbol not found in the dynamic library + symbolNotFound + }; + + /// Failed to load the dynamic library or Symbol not found in the dynamic library. + DynamicLibraryManagerException( const std::string &libraryName, + const std::string &errorDetail, + Cause cause ); + + ~DynamicLibraryManagerException() throw() + { + } + + Cause getCause() const; + + const char *what() const throw(); + +private: + std::string m_message; + Cause m_cause; +}; + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + +#endif // CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.am new file mode 100644 index 0000000000..5221a66938 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.am @@ -0,0 +1,9 @@ +libcppunitincludedir = $(includedir)/cppunit/plugin + +libcppunitinclude_HEADERS = \ + DynamicLibraryManager.h \ + DynamicLibraryManagerException.h \ + TestPlugIn.h \ + TestPlugInDefaultImpl.h \ + PlugInManager.h \ + PlugInParameters.h diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.in new file mode 100644 index 0000000000..b57b6dbfd9 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.in @@ -0,0 +1,380 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +libcppunitincludedir = $(includedir)/cppunit/plugin + +libcppunitinclude_HEADERS = \ + DynamicLibraryManager.h \ + DynamicLibraryManagerException.h \ + TestPlugIn.h \ + TestPlugInDefaultImpl.h \ + PlugInManager.h \ + PlugInParameters.h + +subdir = include/cppunit/plugin +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +HEADERS = $(libcppunitinclude_HEADERS) + +DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/plugin/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +uninstall-libcppunitincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libcppunitincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-libcppunitincludeHEADERS + +.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 info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libcppunitincludeHEADERS install-man 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-info-am \ + uninstall-libcppunitincludeHEADERS + +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInManager.h b/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInManager.h new file mode 100644 index 0000000000..a2b8e15ee0 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInManager.h @@ -0,0 +1,113 @@ +#ifndef CPPUNIT_PLUGIN_PLUGINMANAGER_H +#define CPPUNIT_PLUGIN_PLUGINMANAGER_H + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +struct CppUnitTestPlugIn; + +CPPUNIT_NS_BEGIN + + +class DynamicLibraryManager; +class TestResult; +class XmlOutputter; + + +/*! \brief Manges TestPlugIn. + */ +class CPPUNIT_API PlugInManager +{ +public: + /*! Constructs a PlugInManager object. + */ + PlugInManager(); + + /// Destructor. + virtual ~PlugInManager(); + + /*! \brief Loads the specified plug-in. + * + * After being loaded, the CppUnitTestPlugIn::initialize() is called. + * + * \param libraryFileName Name of the file that contains the TestPlugIn. + * \param parameters List of string passed to the plug-in. + * \return Pointer on the DynamicLibraryManager associated to the library. + * Valid until the library is unloaded. Never \c NULL. + * \exception DynamicLibraryManager is thrown if an error occurs during loading. + */ + void load( const std::string &libraryFileName, + const PlugInParameters ¶meters = PlugInParameters() ); + + /*! \brief Unloads the specified plug-in. + * \param libraryFileName Name of the file that contains the TestPlugIn passed + * to a previous call to load(). + */ + void unload( const std::string &libraryFileName ); + + /*! \brief Gives a chance to each loaded plug-in to register TestListener. + * + * For each plug-in, call CppUnitTestPlugIn::addListener(). + */ + void addListener( TestResult *eventManager ); + + /*! \brief Gives a chance to each loaded plug-in to unregister TestListener. + * For each plug-in, call CppUnitTestPlugIn::removeListener(). + */ + void removeListener( TestResult *eventManager ); + + /*! \brief Provides a way for the plug-in to register some XmlOutputterHook. + */ + void addXmlOutputterHooks( XmlOutputter *outputter ); + + /*! \brief Called when the XmlOutputter is destroyed. + * + * Can be used to free some resources allocated by addXmlOutputterHooks(). + */ + void removeXmlOutputterHooks(); + +protected: + /*! \brief (INTERNAL) Information about a specific plug-in. + */ + struct PlugInInfo + { + std::string m_fileName; + DynamicLibraryManager *m_manager; + CppUnitTestPlugIn *m_interface; + }; + + /*! Unloads the specified plug-in. + * \param plugIn Information about the plug-in. + */ + void unload( PlugInInfo &plugIn ); + +private: + /// Prevents the use of the copy constructor. + PlugInManager( const PlugInManager © ); + + /// Prevents the use of the copy operator. + void operator =( const PlugInManager © ); + +private: + typedef CppUnitDeque PlugIns; + PlugIns m_plugIns; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + + +#endif // CPPUNIT_PLUGIN_PLUGINMANAGER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInParameters.h b/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInParameters.h new file mode 100644 index 0000000000..c67d0f1d24 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInParameters.h @@ -0,0 +1,36 @@ +#ifndef CPPUNIT_PLUGIN_PARAMETERS +#define CPPUNIT_PLUGIN_PARAMETERS + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +#include +#include + +CPPUNIT_NS_BEGIN + +/*! \brief Test plug-ins parameters. + */ +class CPPUNIT_API PlugInParameters +{ +public: + /// Constructs plug-in parameters from the specified command-line. + PlugInParameters( const std::string &commandLine = "" ); + + virtual ~PlugInParameters(); + + /// Returns the command line that was passed on construction. + std::string getCommandLine() const; + +private: + std::string m_commandLine; +}; + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + + +#endif // CPPUNIT_PLUGIN_PARAMETERS diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugIn.h b/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugIn.h new file mode 100644 index 0000000000..3a6f908ffe --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugIn.h @@ -0,0 +1,197 @@ +#ifndef CPPUNIT_PLUGIN_TESTPLUGIN +#define CPPUNIT_PLUGIN_TESTPLUGIN + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +#include + +CPPUNIT_NS_BEGIN + + +class Test; +class TestFactoryRegistry; +class TestResult; +class XmlOutputter; + +CPPUNIT_NS_END + +/*! \file + */ + + +/*! \brief Test plug-in interface. + * \ingroup WritingTestPlugIn + * + * This class define the interface implemented by test plug-in. A pointer to that + * interface is returned by the function exported by the test plug-in. + * + * Plug-in are loaded/unloaded by PlugInManager. When a plug-in is loaded, + * initialize() is called. Before unloading the plug-in, the PlugInManager + * call uninitialize(). + * + * addListener() and removeListener() are called respectively before and after + * the test run. + * + * addXmlOutputterHooks() and removeXmlOutputterHooks() are called respectively + * before and after writing the XML output using a XmlOutputter. + * + * \see CPPUNIT_PLUGIN_IMPLEMENT, CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL + * \see CppUnit::TestPlugInDefaultImpl, CppUnit::XmlOutputter. + */ +struct CppUnitTestPlugIn +{ + /*! \brief Called just after loading the dynamic library. + * + * Override this method to add additional suite to the registry, though this + * is preferably done using the macros (CPPUNIT_TEST_SUITE_REGISTRATION...). + * If you are creating a custom listener to extends the plug-in runner, + * you can use this to configure the listener using the \a parameters. + * + * You could also use the parameters to specify some global parameter, such + * as test datas location, database name... + * + * N.B.: Parameters interface is not define yet, and the plug-in runner does + * not yet support plug-in parameter. + */ + virtual void initialize( CPPUNIT_NS::TestFactoryRegistry *registry, + const CPPUNIT_NS::PlugInParameters ¶meters ) =0; + + /*! \brief Gives a chance to the plug-in to register TestListener. + * + * Override this method to add a TestListener for the test run. This is useful + * if you are writing a custom TestListener, but also if you need to + * setUp some global resource: listen to TestListener::startTestRun(), + * and TestListener::endTestRun(). + */ + virtual void addListener( CPPUNIT_NS::TestResult *eventManager ) =0; + + /*! \brief Gives a chance to the plug-in to remove its registered TestListener. + * + * Override this method to remove a TestListener that has been added. + */ + virtual void removeListener( CPPUNIT_NS::TestResult *eventManager ) =0; + + /*! \brief Provides a way for the plug-in to register some XmlOutputterHook. + */ + virtual void addXmlOutputterHooks( CPPUNIT_NS::XmlOutputter *outputter ) =0; + + /*! \brief Called when the XmlOutputter is destroyed. + * + * Can be used to free some resources allocated by addXmlOutputterHooks(). + */ + virtual void removeXmlOutputterHooks() = 0; + + /*! \brief Called just before unloading the dynamic library. + * + * Override this method to unregister test factory added in initialize(). + * This is necessary to keep the TestFactoryRegistry 'clean'. When + * the plug-in is unloaded from memory, the TestFactoryRegistry will hold + * reference on test that are no longer available if they are not + * unregistered. + */ + virtual void uninitialize( CPPUNIT_NS::TestFactoryRegistry *registry ) =0; +}; + + + +/*! \brief Name of the function exported by a test plug-in. + * \ingroup WritingTestPlugIn + * + * The signature of the exported function is: + * \code + * CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void); + * \endif + */ +#define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTestPlugIn + +/*! \brief Type of the function exported by a plug-in. + * \ingroup WritingTestPlugIn + */ +typedef CppUnitTestPlugIn *(*TestPlugInSignature)(); + + +/*! \brief Implements the function exported by the test plug-in + * \ingroup WritingTestPlugIn + */ +#define CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( TestPlugInInterfaceType ) \ + CPPUNIT_PLUGIN_EXPORT CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void) \ + { \ + static TestPlugInInterfaceType plugIn; \ + return &plugIn; \ + } \ + typedef char __CppUnitPlugInExportFunctionDummyTypeDef // dummy typedef so it can end with ';' + + +// Note: This include should remain after definition of CppUnitTestPlugIn +#include + + +/*! \def CPPUNIT_PLUGIN_IMPLEMENT_MAIN() + * \brief Implements the 'main' function for the plug-in. + * + * This macros implements the main() function for dynamic library. + * For example, WIN32 requires a DllMain function, while some Unix + * requires a main() function. This macros takes care of the implementation. + */ + +// Win32 +#if defined(CPPUNIT_HAVE_WIN32_DLL_LOADER) +#if !defined(APIENTRY) +#define WIN32_LEAN_AND_MEAN +#define NOGDI +#define NOUSER +#define NOKERNEL +#define NOSOUND +#define NOMINMAX +#include +#endif +#define CPPUNIT_PLUGIN_IMPLEMENT_MAIN() \ + BOOL APIENTRY DllMain( HANDLE hModule, \ + DWORD ul_reason_for_call, \ + LPVOID lpReserved ) \ + { \ + return TRUE; \ + } \ + typedef char __CppUnitPlugInImplementMainDummyTypeDef + +// Unix +#elif defined(CPPUNIT_HAVE_UNIX_DLL_LOADER) || defined(CPPUNIT_HAVE_UNIX_SHL_LOADER) +#define CPPUNIT_PLUGIN_IMPLEMENT_MAIN() \ + int main( int argc, char *argv[] ) \ + { \ + return 0; \ + } \ + typedef char __CppUnitPlugInImplementMainDummyTypeDef + + +// Other +#else // other platforms don't require anything specifics +#endif + + + +/*! \brief Implements and exports the test plug-in interface. + * \ingroup WritingTestPlugIn + * + * This macro exports the test plug-in function using the subclass, + * and implements the 'main' function for the plug-in using + * CPPUNIT_PLUGIN_IMPLEMENT_MAIN(). + * + * When using this macro, CppUnit must be linked as a DLL (shared library). + * Otherwise, tests registered to the TestFactoryRegistry in the DLL will + * not be visible to the DllPlugInTester. + * + * \see CppUnitTestPlugIn + * \see CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL(), CPPUNIT_PLUGIN_IMPLEMENT_MAIN(). + */ +#define CPPUNIT_PLUGIN_IMPLEMENT() \ + CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( CPPUNIT_NS::TestPlugInDefaultImpl ); \ + CPPUNIT_PLUGIN_IMPLEMENT_MAIN() + + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + + +#endif // CPPUNIT_PLUGIN_TESTPLUGIN diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugInDefaultImpl.h b/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugInDefaultImpl.h new file mode 100644 index 0000000000..f22d781cac --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugInDefaultImpl.h @@ -0,0 +1,52 @@ +#ifndef CPPUNIT_PLUGIN_TESTPLUGINADAPTER +#define CPPUNIT_PLUGIN_TESTPLUGINADAPTER + +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +#include + +CPPUNIT_NS_BEGIN + + +class TestSuite; + + +/*! \brief Default implementation of test plug-in interface. + * \ingroup WritingTestPlugIn + * + * Override getSuiteName() to specify the suite name. Default is "All Tests". + * + * CppUnitTestPlugIn::::getTestSuite() returns a suite that contains + * all the test registered to the default test factory registry + * ( TestFactoryRegistry::getRegistry() ). + * + */ +class CPPUNIT_API TestPlugInDefaultImpl : public CppUnitTestPlugIn +{ +public: + TestPlugInDefaultImpl(); + + virtual ~TestPlugInDefaultImpl(); + + void initialize( TestFactoryRegistry *registry, + const PlugInParameters ¶meters ); + + void addListener( TestResult *eventManager ); + + void removeListener( TestResult *eventManager ); + + void addXmlOutputterHooks( XmlOutputter *outputter ); + + void removeXmlOutputterHooks(); + + void uninitialize( TestFactoryRegistry *registry ); +}; + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) + +#endif // CPPUNIT_PLUGIN_TESTPLUGINADAPTER diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitDeque.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitDeque.h new file mode 100644 index 0000000000..bbab21f56c --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitDeque.h @@ -0,0 +1,25 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITDEQUE_H +#define CPPUNIT_PORTABILITY_CPPUNITDEQUE_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitDeque : public std::deque +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitDeque std::deque + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITDEQUE_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitMap.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitMap.h new file mode 100644 index 0000000000..0cdc723a20 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitMap.h @@ -0,0 +1,29 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITMAP_H +#define CPPUNIT_PORTABILITY_CPPUNITMAP_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitMap : public std::map + ,CPPUNIT_STD_ALLOCATOR> +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitMap std::map + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITMAP_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitSet.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitSet.h new file mode 100644 index 0000000000..18b8662ebf --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitSet.h @@ -0,0 +1,28 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITSET_H +#define CPPUNIT_PORTABILITY_CPPUNITSET_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitSet : public std::set + ,CPPUNIT_STD_ALLOCATOR> +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitSet std::set + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITSET_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitStack.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitStack.h new file mode 100644 index 0000000000..bc7785b037 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitStack.h @@ -0,0 +1,26 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITSTACK_H +#define CPPUNIT_PORTABILITY_CPPUNITSTACK_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitStack : public std::stack > +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitStack std::stack + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITSTACK_H \ No newline at end of file diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitVector.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitVector.h new file mode 100644 index 0000000000..6666a63b0d --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitVector.h @@ -0,0 +1,25 @@ +#ifndef CPPUNIT_PORTABILITY_CPPUNITVECTOR_H +#define CPPUNIT_PORTABILITY_CPPUNITVECTOR_H + +// The technic used is similar to the wrapper of STLPort. + +#include +#include + + +#if CPPUNIT_STD_NEED_ALLOCATOR + +template +class CppUnitVector : public std::vector +{ +public: +}; + +#else // CPPUNIT_STD_NEED_ALLOCATOR + +#define CppUnitVector std::vector + +#endif + +#endif // CPPUNIT_PORTABILITY_CPPUNITVECTOR_H + diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.am new file mode 100644 index 0000000000..1fb032e935 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.am @@ -0,0 +1,8 @@ +libcppunitincludedir = $(includedir)/cppunit/portability + +libcppunitinclude_HEADERS = \ + CppUnitDeque.h \ + CppUnitMap.h \ + CppUnitSet.h \ + CppUnitStack.h \ + CppUnitVector.h diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.in new file mode 100644 index 0000000000..d7d23f705b --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.in @@ -0,0 +1,379 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +libcppunitincludedir = $(includedir)/cppunit/portability + +libcppunitinclude_HEADERS = \ + CppUnitDeque.h \ + CppUnitMap.h \ + CppUnitSet.h \ + CppUnitStack.h \ + CppUnitVector.h + +subdir = include/cppunit/portability +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +HEADERS = $(libcppunitinclude_HEADERS) + +DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/portability/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +uninstall-libcppunitincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libcppunitincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-libcppunitincludeHEADERS + +.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 info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libcppunitincludeHEADERS install-man 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-info-am \ + uninstall-libcppunitincludeHEADERS + +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/Algorithm.h b/lib/cppunit-1.10.0/include/cppunit/tools/Algorithm.h new file mode 100644 index 0000000000..e5746a2bf5 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/tools/Algorithm.h @@ -0,0 +1,23 @@ +#ifndef CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED +#define CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED + +#include + +CPPUNIT_NS_BEGIN + +template +void +removeFromSequence( SequenceType &sequence, + const ValueType &valueToRemove ) +{ + for ( unsigned int index =0; index < sequence.size(); ++index ) + { + if ( sequence[ index ] == valueToRemove ) + sequence.erase( sequence.begin() + index ); + } +} + +CPPUNIT_NS_END + + +#endif // CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.am new file mode 100644 index 0000000000..8ce080867c --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.am @@ -0,0 +1,7 @@ +libcppunitincludedir = $(includedir)/cppunit/tools + +libcppunitinclude_HEADERS = \ + Algorithm.h \ + StringTools.h \ + XmlElement.h \ + XmlDocument.h \ No newline at end of file diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.in new file mode 100644 index 0000000000..1b2ded446b --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.in @@ -0,0 +1,378 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +libcppunitincludedir = $(includedir)/cppunit/tools + +libcppunitinclude_HEADERS = \ + Algorithm.h \ + StringTools.h \ + XmlElement.h \ + XmlDocument.h + +subdir = include/cppunit/tools +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +HEADERS = $(libcppunitinclude_HEADERS) + +DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/tools/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +uninstall-libcppunitincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libcppunitincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-libcppunitincludeHEADERS + +.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 info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libcppunitincludeHEADERS install-man 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-info-am \ + uninstall-libcppunitincludeHEADERS + +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/StringTools.h b/lib/cppunit-1.10.0/include/cppunit/tools/StringTools.h new file mode 100644 index 0000000000..7a6b6d710d --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/tools/StringTools.h @@ -0,0 +1,34 @@ +#ifndef CPPUNIT_TOOLS_STRINGTOOLS_H +#define CPPUNIT_TOOLS_STRINGTOOLS_H + +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! \brief Tool functions to manipulate string. + */ +struct StringTools +{ + + typedef CppUnitVector Strings; + + static std::string CPPUNIT_API toString( int value ); + + static std::string CPPUNIT_API toString( double value ); + + static Strings CPPUNIT_API split( const std::string &text, + char separator ); + + static std::string CPPUNIT_API wrap( const std::string &text, + int wrapColumn = CPPUNIT_WRAP_COLUMN ); + +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TOOLS_STRINGTOOLS_H diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/XmlDocument.h b/lib/cppunit-1.10.0/include/cppunit/tools/XmlDocument.h new file mode 100644 index 0000000000..8d3f0c71b5 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/tools/XmlDocument.h @@ -0,0 +1,71 @@ +#ifndef CPPUNIT_TOOLS_XMLDOCUMENT_H +#define CPPUNIT_TOOLS_XMLDOCUMENT_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include + + +CPPUNIT_NS_BEGIN + + +class XmlElement; + + +/*! \brief A XML Document. + * + * A XmlDocument represents a XML file. It holds a pointer on the root XmlElement + * of the document. It also holds the encoding and style sheet used. + */ +class CPPUNIT_API XmlDocument +{ +public: + /*! \brief Constructs a XmlDocument object. + * \param encoding Encoding used in the XML file (default is Latin-1, ISO-8859-1 ). + * \param styleSheet Name of the XSL style sheet file used. If empty then no + * style sheet will be specified in the output. + */ + XmlDocument( const std::string &encoding = "", + const std::string &styleSheet = "" ); + + /// Destructor. + virtual ~XmlDocument(); + + std::string encoding() const; + void setEncoding( const std::string &encoding = "" ); + + std::string styleSheet() const; + void setStyleSheet( const std::string &styleSheet = "" ); + + void setRootElement( XmlElement *rootElement ); + XmlElement &rootElement() const; + + std::string toString() const; + +private: + /// Prevents the use of the copy constructor. + XmlDocument( const XmlDocument © ); + + /// Prevents the use of the copy operator. + void operator =( const XmlDocument © ); + +protected: + std::string m_encoding; + std::string m_styleSheet; + XmlElement *m_rootElement; +}; + + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +CPPUNIT_NS_END + +#endif // CPPUNIT_TOOLS_XMLDOCUMENT_H diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/XmlElement.h b/lib/cppunit-1.10.0/include/cppunit/tools/XmlElement.h new file mode 100644 index 0000000000..0b36bd2388 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/tools/XmlElement.h @@ -0,0 +1,149 @@ +#ifndef CPPUNIT_TOOLS_XMLELEMENT_H +#define CPPUNIT_TOOLS_XMLELEMENT_H + +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + +#include +#include + + +CPPUNIT_NS_BEGIN + + +class XmlElement; + +#if CPPUNIT_NEED_DLL_DECL +// template class CPPUNIT_API std::deque; +#endif + + +/*! \brief A XML Element. + * + * A XML element has: + * - a name, specified on construction, + * - a content, specified on construction (may be empty), + * - zero or more attributes, added with addAttribute(), + * - zero or more child elements, added with addElement(). + */ +class CPPUNIT_API XmlElement +{ +public: + /*! \brief Constructs an element with the specified name and string content. + * \param elementName Name of the element. Must not be empty. + * \param content Content of the element. + */ + XmlElement( std::string elementName, + std::string content ="" ); + + /*! \brief Constructs an element with the specified name and numeric content. + * \param elementName Name of the element. Must not be empty. + * \param numericContent Content of the element. + */ + XmlElement( std::string elementName, + int numericContent ); + + /*! \brief Destructs the element and its child elements. + */ + virtual ~XmlElement(); + + /*! \brief Returns the name of the element. + * \return Name of the element. + */ + std::string name() const; + + /*! \brief Returns the content of the element. + * \return Content of the element. + */ + std::string content() const; + + /*! \brief Sets the name of the element. + * \param name New name for the element. + */ + void setName( const std::string &name ); + + /*! \brief Sets the content of the element. + * \param content New content for the element. + */ + void setContent( const std::string &content ); + + /*! \overload void setContent( const std::string &content ) + */ + void setContent( int numericContent ); + + /*! \brief Adds an attribute with the specified string value. + * \param attributeName Name of the attribute. Must not be an empty. + * \param value Value of the attribute. + */ + void addAttribute( std::string attributeName, + std::string value ); + + /*! \brief Adds an attribute with the specified numeric value. + * \param attributeName Name of the attribute. Must not be empty. + * \param numericValue Numeric value of the attribute. + */ + void addAttribute( std::string attributeName, + int numericValue ); + + /*! \brief Adds a child element to the element. + * \param element Child element to add. Must not be \c NULL. + */ + void addElement( XmlElement *element ); + + /*! \brief Returns the number of child elements. + * \return Number of child elements (element added with addElement()). + */ + int elementCount() const; + + /*! \brief Returns the child element at the specified index. + * \param index Zero based index of the element to return. + * \returns Element at the specified index. Never \c NULL. + * \exception std::invalid_argument if \a index < 0 or index >= elementCount(). + */ + XmlElement *elementAt( int index ) const; + + /*! \brief Returns the first child element with the specified name. + * \param name Name of the child element to return. + * \return First child element found which is named \a name. + * \exception std::invalid_argument if there is no child element with the specified + * name. + */ + XmlElement *elementFor( const std::string &name ) const; + + /*! \brief Returns a XML string that represents the element. + * \param indent String of spaces representing the amount of 'indent'. + * \return XML string that represents the element, its attributes and its + * child elements. + */ + std::string toString( const std::string &indent = "" ) const; + +private: + typedef std::pair Attribute; + + std::string attributesAsString() const; + std::string escape( std::string value ) const; + +private: + std::string m_name; + std::string m_content; + + typedef CppUnitDeque Attributes; + Attributes m_attributes; + + typedef CppUnitDeque Elements; + Elements m_elements; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + + +#endif // CPPUNIT_TOOLS_XMLELEMENT_H diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.am new file mode 100644 index 0000000000..1b9f08efe7 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = text mfc qt diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.in new file mode 100644 index 0000000000..27fe45a13b --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.in @@ -0,0 +1,448 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = text mfc qt +subdir = include/cppunit/ui +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = Makefile.am Makefile.in +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/ui/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# 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): + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + 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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +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: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ + pdf-recursive ps ps-am ps-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.am new file mode 100644 index 0000000000..1ea8b5edf8 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.am @@ -0,0 +1,5 @@ +libcppunitincludedir = $(includedir)/cppunit/ui/mfc + +libcppunitinclude_HEADERS = \ + TestRunner.h \ + MfcTestRunner.h diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.in new file mode 100644 index 0000000000..def30cceee --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.in @@ -0,0 +1,376 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +libcppunitincludedir = $(includedir)/cppunit/ui/mfc + +libcppunitinclude_HEADERS = \ + TestRunner.h \ + MfcTestRunner.h + +subdir = include/cppunit/ui/mfc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +HEADERS = $(libcppunitinclude_HEADERS) + +DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/ui/mfc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +uninstall-libcppunitincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libcppunitincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-libcppunitincludeHEADERS + +.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 info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libcppunitincludeHEADERS install-man 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-info-am \ + uninstall-libcppunitincludeHEADERS + +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/mfc/MfcTestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/MfcTestRunner.h new file mode 100644 index 0000000000..6a5f7b770f --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/MfcTestRunner.h @@ -0,0 +1,76 @@ +#ifndef CPPUNITUI_MFC_MFCTESTRUNNER_H +#define CPPUNITUI_MFC_MFCTESTRUNNER_H + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include +#include + +/* Refer to MSDN documentation to know how to write and use MFC extension DLL: + mk:@MSITStore:h:\DevStudio\MSDN\98VSa\1036\vcmfc.chm::/html/_mfcnotes_tn033.htm#_mfcnotes_how_to_write_an_mfc_extension_dll + + This can be found in the index with "mfc extension" + The basic: + Using: + - your application must use MFC DLL + - memory allocation is done using the same heap + - you must define the symbol _AFX_DLL + + Building: + - you must define the symbol _AFX_DLL and _AFX_EXT + - export class using AFX_EXT_CLASS + */ + +CPPUNIT_NS_BEGIN + + class Test; + class TestSuite; + + +/*! \brief MFC test runner. + * \ingroup ExecutingTest + * + * Use this to launch the MFC TestRunner. Usually called from you CWinApp subclass: + * + * \code + * #include + * #include + * + * void + * CHostAppApp::RunUnitTests() + * { + * CppUnit::MfcTestRunner runner; + * runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); + * + * runner.run(); + * } + * \endcode + * \see CppUnit::TextTestRunner, CppUnit::TestFactoryRegistry. + */ +class AFX_EXT_CLASS MfcTestRunner +{ +public: + MfcTestRunner(); + virtual ~MfcTestRunner(); + + void run(); + + void addTest( Test *test ); + + void addTests( const CppUnitVector &tests ); + +protected: + Test *getRootTest(); + + TestSuite *m_suite; + + typedef CppUnitVector Tests; + Tests m_tests; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNITUI_MFC_MFCTESTRUNNER_H \ No newline at end of file diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/mfc/TestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/TestRunner.h new file mode 100644 index 0000000000..c4d6afface --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/TestRunner.h @@ -0,0 +1,21 @@ +#ifndef CPPUNITUI_MFC_TESTRUNNER_H +#define CPPUNITUI_MFC_TESTRUNNER_H + +#include + +CPPUNIT_NS_BEGIN + +#if defined(CPPUNIT_HAVE_NAMESPACES) +namespace MfcUi +{ + /*! Mfc TestRunner (DEPRECATED). + * \deprecated Use CppUnit::MfcTestRunner instead. + */ + typedef CPPUNIT_NS::MfcTestRunner TestRunner; +} +#endif // defined(CPPUNIT_HAVE_NAMESPACES) + +CPPUNIT_NS_END + + +#endif // CPPUNITUI_MFC_TESTRUNNER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/Config.h b/lib/cppunit-1.10.0/include/cppunit/ui/qt/Config.h new file mode 100644 index 0000000000..73eac3c30b --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/qt/Config.h @@ -0,0 +1,21 @@ +#ifndef CPPUNIT_QTUI_CONFIG_H +#define CPPUNIT_QTUI_CONFIG_H + +/*! Macro to export symbol to DLL with VC++. + * + * - QTTESTRUNNER_DLL_BUILD must be defined when building the DLL. + * - QTTESTRUNNER_DLL must be defined if linking against the DLL. + * - If none of the above are defined then you are building or linking against + * the static library. + */ + +#if defined( QTTESTRUNNER_DLL_BUILD ) +# define QTTESTRUNNER_API __declspec(dllexport) +#elif defined ( QTTESTRUNNER_DLL ) +# define QTTESTRUNNER_API __declspec(dllimport) +#else +# define QTTESTRUNNER_API +#endif + + +#endif // CPPUNIT_QTUI_CONFIG_H \ No newline at end of file diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.am new file mode 100644 index 0000000000..7d4fb46c03 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.am @@ -0,0 +1,6 @@ +libcppunitincludedir = $(includedir)/cppunit/ui/qt + +libcppunitinclude_HEADERS = \ + TestRunner.h \ + QtTestRunner.h \ + Config.h diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.in new file mode 100644 index 0000000000..3e6662dbe4 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.in @@ -0,0 +1,377 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +libcppunitincludedir = $(includedir)/cppunit/ui/qt + +libcppunitinclude_HEADERS = \ + TestRunner.h \ + QtTestRunner.h \ + Config.h + +subdir = include/cppunit/ui/qt +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +HEADERS = $(libcppunitinclude_HEADERS) + +DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/ui/qt/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +uninstall-libcppunitincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libcppunitincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-libcppunitincludeHEADERS + +.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 info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libcppunitincludeHEADERS install-man 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-info-am \ + uninstall-libcppunitincludeHEADERS + +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/QtTestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/qt/QtTestRunner.h new file mode 100644 index 0000000000..4b6ab4e4ef --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/qt/QtTestRunner.h @@ -0,0 +1,85 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunner.h for class TestRunner +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/19 +// ////////////////////////////////////////////////////////////////////////// +#ifndef CPPUNIT_QTUI_QTTESTRUNNER_H +#define CPPUNIT_QTUI_QTTESTRUNNER_H + +#include +#include "Config.h" + +CPPUNIT_NS_BEGIN + + + class Test; + class TestSuite; + + +/*! + * \brief QT test runner. + * \ingroup ExecutingTest + * + * Here is an example of usage: + * \code + * #include + * #include + * + * [...] + * + * void + * QDepWindow::runTests() + * { + * CppUnit::QtUi::TestRunner runner; + * runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); + * runner.run( true ); + * } + * \endcode + * + */ +class QTTESTRUNNER_API QtTestRunner +{ +public: + /*! Constructs a TestRunner object. + */ + QtTestRunner(); + + /*! Destructor. + */ + virtual ~QtTestRunner(); + + void run( bool autoRun =false ); + + void addTest( Test *test ); + +private: + /// Prevents the use of the copy constructor. + QtTestRunner( const QtTestRunner © ); + + /// Prevents the use of the copy operator. + void operator =( const QtTestRunner © ); + + Test *getRootTest(); + +private: + typedef CppUnitVector Tests; + Tests *_tests; + + TestSuite *_suite; +}; + + +#if CPPUNIT_HAVE_NAMESPACES + namespace QtUi + { + /*! Qt TestRunner (DEPRECATED). + * \deprecated Use CppUnit::QtTestRunner instead. + */ + typedef CPPUNIT_NS::QtTestRunner TestRunner; + } +#endif + + +CPPUNIT_NS_END + +#endif // CPPUNIT_QTUI_QTTESTRUNNER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/TestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/qt/TestRunner.h new file mode 100644 index 0000000000..9c53e4ba60 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/qt/TestRunner.h @@ -0,0 +1,11 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunner.h for class TestRunner +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/19 +// ////////////////////////////////////////////////////////////////////////// +#ifndef CPPUNIT_QTUI_TESTRUNNER_H +#define CPPUNIT_QTUI_TESTRUNNER_H + +#include + +#endif // CPPUNIT_QTUI_TESTRUNNER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.am new file mode 100644 index 0000000000..5f01d81462 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.am @@ -0,0 +1,5 @@ +libcppunitincludedir = $(includedir)/cppunit/ui/text + +libcppunitinclude_HEADERS = \ + TestRunner.h \ + TextTestRunner.h diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.in new file mode 100644 index 0000000000..03b56f7ae2 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.in @@ -0,0 +1,376 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +libcppunitincludedir = $(includedir)/cppunit/ui/text + +libcppunitinclude_HEADERS = \ + TestRunner.h \ + TextTestRunner.h + +subdir = include/cppunit/ui/text +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +HEADERS = $(libcppunitinclude_HEADERS) + +DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/cppunit/ui/text/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +uninstall-libcppunitincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libcppunitincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-libcppunitincludeHEADERS + +.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 info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libcppunitincludeHEADERS install-man 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-info-am \ + uninstall-libcppunitincludeHEADERS + +# 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: diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/text/TestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/text/TestRunner.h new file mode 100644 index 0000000000..023eb83489 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/text/TestRunner.h @@ -0,0 +1,24 @@ +#ifndef CPPUNIT_UI_TEXT_TESTRUNNER_H +#define CPPUNIT_UI_TEXT_TESTRUNNER_H + +#include + + +#if defined(CPPUNIT_HAVE_NAMESPACES) + +CPPUNIT_NS_BEGIN +namespace TextUi +{ + + /*! Text TestRunner (DEPRECATED). + * \deprecated Use TextTestRunner instead. + */ + typedef TextTestRunner TestRunner; + +} +CPPUNIT_NS_END + +#endif // defined(CPPUNIT_HAVE_NAMESPACES) + + +#endif // CPPUNIT_UI_TEXT_TESTRUNNER_H diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/text/TextTestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/text/TextTestRunner.h new file mode 100644 index 0000000000..e26ba356a2 --- /dev/null +++ b/lib/cppunit-1.10.0/include/cppunit/ui/text/TextTestRunner.h @@ -0,0 +1,93 @@ +#ifndef CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H +#define CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H + + +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +class Outputter; +class Test; +class TestSuite; +class TextOutputter; +class TestResult; +class TestResultCollector; + + + +/*! + * \brief A text mode test runner. + * \ingroup WritingTestResult + * \ingroup ExecutingTest + * + * The test runner manage the life cycle of the added tests. + * + * The test runner can run only one of the added tests or all the tests. + * + * TestRunner prints out a trace as the tests are executed followed by a + * summary at the end. The trace and summary print are optional. + * + * Here is an example of use: + * + * \code + * CppUnit::TextTestRunner runner; + * runner.addTest( ExampleTestCase::suite() ); + * runner.run( "", true ); // Run all tests and wait + * \endcode + * + * The trace is printed using a TextTestProgressListener. The summary is printed + * using a TextOutputter. + * + * You can specify an alternate Outputter at construction + * or later with setOutputter(). + * + * After construction, you can register additional TestListener to eventManager(), + * for a custom progress trace, for example. + * + * \code + * CppUnit::TextTestRunner runner; + * runner.addTest( ExampleTestCase::suite() ); + * runner.setOutputter( CppUnit::CompilerOutputter::defaultOutputter( + * &runner.result(), + * std::cerr ) ); + * MyCustomProgressTestListener progress; + * runner.eventManager().addListener( &progress ); + * runner.run( "", true ); // Run all tests and wait + * \endcode + * + * \see CompilerOutputter, XmlOutputter, TextOutputter. + */ +class CPPUNIT_API TextTestRunner : public CPPUNIT_NS::TestRunner +{ +public: + TextTestRunner( Outputter *outputter =NULL ); + + virtual ~TextTestRunner(); + + bool run( std::string testPath ="", + bool doWait = false, + bool doPrintResult = true, + bool doPrintProgress = true ); + + void setOutputter( Outputter *outputter ); + + TestResultCollector &result() const; + + TestResult &eventManager() const; + +protected: + virtual void wait( bool doWait ); + virtual void printResult( bool doPrintResult ); + + TestResultCollector *m_result; + TestResult *m_eventManager; + Outputter *m_outputter; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H diff --git a/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h b/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h new file mode 100644 index 0000000000..c19b4b0759 --- /dev/null +++ b/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h @@ -0,0 +1,190 @@ +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + +/* File created by MIDL compiler version 5.01.0164 */ +/* at Sat Apr 13 11:47:16 2002 + */ +/* Compiler settings for G:\prg\vc\Lib\cppunit\src\msvc6\DSPlugIn\TestRunnerDSPlugin.idl: + Os (OptLev=s), W1, Zp8, env=Win32, ms_ext, c_ext + error checks: allocation ref bounds_check enum stub_data +*/ +//@@MIDL_FILE_HEADING( ) + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 440 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __TestRunnerDSPluginVC6_h__ +#define __TestRunnerDSPluginVC6_h__ + +#ifdef __cplusplus +extern "C"{ +#endif + +/* Forward Declarations */ + +#ifndef __ITestRunnerDSPlugin_FWD_DEFINED__ +#define __ITestRunnerDSPlugin_FWD_DEFINED__ +typedef interface ITestRunnerDSPlugin ITestRunnerDSPlugin; +#endif /* __ITestRunnerDSPlugin_FWD_DEFINED__ */ + + +#ifndef __DSAddIn_FWD_DEFINED__ +#define __DSAddIn_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class DSAddIn DSAddIn; +#else +typedef struct DSAddIn DSAddIn; +#endif /* __cplusplus */ + +#endif /* __DSAddIn_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" + +void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free( void __RPC_FAR * ); + +#ifndef __ITestRunnerDSPlugin_INTERFACE_DEFINED__ +#define __ITestRunnerDSPlugin_INTERFACE_DEFINED__ + +/* interface ITestRunnerDSPlugin */ +/* [oleautomation][unique][helpstring][uuid][object] */ + + +EXTERN_C const IID IID_ITestRunnerDSPlugin; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3ADE0E37-5A56-4a68-BD8D-67E9E7502971") + ITestRunnerDSPlugin : public IUnknown + { + public: + virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE goToLineInSourceCode( + /* [in] */ BSTR fileName, + /* [in] */ int lineNumber) = 0; + + }; + +#else /* C style interface */ + + typedef struct ITestRunnerDSPluginVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( + ITestRunnerDSPlugin __RPC_FAR * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( + ITestRunnerDSPlugin __RPC_FAR * This); + + ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( + ITestRunnerDSPlugin __RPC_FAR * This); + + /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *goToLineInSourceCode )( + ITestRunnerDSPlugin __RPC_FAR * This, + /* [in] */ BSTR fileName, + /* [in] */ int lineNumber); + + END_INTERFACE + } ITestRunnerDSPluginVtbl; + + interface ITestRunnerDSPlugin + { + CONST_VTBL struct ITestRunnerDSPluginVtbl __RPC_FAR *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ITestRunnerDSPlugin_QueryInterface(This,riid,ppvObject) \ + (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) + +#define ITestRunnerDSPlugin_AddRef(This) \ + (This)->lpVtbl -> AddRef(This) + +#define ITestRunnerDSPlugin_Release(This) \ + (This)->lpVtbl -> Release(This) + + +#define ITestRunnerDSPlugin_goToLineInSourceCode(This,fileName,lineNumber) \ + (This)->lpVtbl -> goToLineInSourceCode(This,fileName,lineNumber) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITestRunnerDSPlugin_goToLineInSourceCode_Proxy( + ITestRunnerDSPlugin __RPC_FAR * This, + /* [in] */ BSTR fileName, + /* [in] */ int lineNumber); + + +void __RPC_STUB ITestRunnerDSPlugin_goToLineInSourceCode_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __ITestRunnerDSPlugin_INTERFACE_DEFINED__ */ + + + +#ifndef __TestRunnerDSPluginLib_LIBRARY_DEFINED__ +#define __TestRunnerDSPluginLib_LIBRARY_DEFINED__ + +/* library TestRunnerDSPluginLib */ +/* [helpstring][version][uuid] */ + + +EXTERN_C const IID LIBID_TestRunnerDSPluginLib; + +EXTERN_C const CLSID CLSID_DSAddIn; + +#ifdef __cplusplus + +class DECLSPEC_UUID("F193CE54-716C-41CB-80B2-FA74CA3EE2AC") +DSAddIn; +#endif +#endif /* __TestRunnerDSPluginLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * ); +unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); +unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); +void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c b/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c new file mode 100644 index 0000000000..9490f9ebd0 --- /dev/null +++ b/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c @@ -0,0 +1,50 @@ +/* this file contains the actual definitions of */ +/* the IIDs and CLSIDs */ + +/* link this file in with the server and any clients */ + + +/* File created by MIDL compiler version 5.01.0164 */ +/* at Sat Apr 13 11:47:16 2002 + */ +/* Compiler settings for G:\prg\vc\Lib\cppunit\src\msvc6\DSPlugIn\TestRunnerDSPlugin.idl: + Os (OptLev=s), W1, Zp8, env=Win32, ms_ext, c_ext + error checks: allocation ref bounds_check enum stub_data +*/ +//@@MIDL_FILE_HEADING( ) +#ifdef __cplusplus +extern "C"{ +#endif + + +#ifndef __IID_DEFINED__ +#define __IID_DEFINED__ + +typedef struct _IID +{ + unsigned long x; + unsigned short s1; + unsigned short s2; + unsigned char c[8]; +} IID; + +#endif // __IID_DEFINED__ + +#ifndef CLSID_DEFINED +#define CLSID_DEFINED +typedef IID CLSID; +#endif // CLSID_DEFINED + +const IID IID_ITestRunnerDSPlugin = {0x3ADE0E37,0x5A56,0x4a68,{0xBD,0x8D,0x67,0xE9,0xE7,0x50,0x29,0x71}}; + + +const IID LIBID_TestRunnerDSPluginLib = {0x3ADE0E38,0x5A56,0x4a68,{0xBD,0x8D,0x67,0xE9,0xE7,0x50,0x29,0x71}}; + + +const CLSID CLSID_DSAddIn = {0xF193CE54,0x716C,0x41CB,{0x80,0xB2,0xFA,0x74,0xCA,0x3E,0xE2,0xAC}}; + + +#ifdef __cplusplus +} +#endif + diff --git a/lib/cppunit-1.10.0/include/msvc6/testrunner/TestPlugInInterface.h b/lib/cppunit-1.10.0/include/msvc6/testrunner/TestPlugInInterface.h new file mode 100644 index 0000000000..031f2a01f8 --- /dev/null +++ b/lib/cppunit-1.10.0/include/msvc6/testrunner/TestPlugInInterface.h @@ -0,0 +1,55 @@ +#ifndef CPPUNIT_TESTPLUGINRUNNER_TESTPLUGININTERFACE_H +#define CPPUNIT_TESTPLUGINRUNNER_TESTPLUGININTERFACE_H + +#include +#include + +#if !defined(WINAPI) +#define WIN32_LEAN_AND_MEAN +#define NOGDI +#define NOUSER +#define NOKERNEL +#define NOSOUND +#define NOMINMAX +#include +#endif + +/*! \brief Abstract TestPlugIn for DLL. + * \deprecated Use CppUnitTestPlugIn instead. + * + * A Test plug-in DLL must subclass this class and "publish" an instance + * using the following exported function: + * \code + * extern "C" { + * __declspec(dllimport) TestPlugInInterface *GetTestPlugInInterface(); + * } + * \endcode + * + * When loading the DLL, the TestPlugIn runner look-up this function and + * retreives the + * + * See the TestPlugIn example for VC++ for details. + */ +class TestPlugInInterface +{ +public: + virtual ~TestPlugInInterface() {} + + /*! Returns an instance of the "All Tests" suite. + * + * \return Instance of the top-level suite that contains all test. Ownership + * is granted to the method caller. + */ + virtual CppUnit::Test *makeTest() =0; +}; + +typedef TestPlugInInterface* (WINAPI *GetTestPlugInInterfaceFunction)(void); + + +extern "C" { + __declspec(dllexport) TestPlugInInterface *GetTestPlugInInterface(); +} + + + +#endif // CPPUNIT_TESTPLUGINRUNNER_TESTPLUGININTERFACE_H diff --git a/lib/cppunit-1.10.0/include/msvc6/testrunner/TestRunner.h b/lib/cppunit-1.10.0/include/msvc6/testrunner/TestRunner.h new file mode 100644 index 0000000000..0bee97a902 --- /dev/null +++ b/lib/cppunit-1.10.0/include/msvc6/testrunner/TestRunner.h @@ -0,0 +1,17 @@ +#ifndef CPPUNIT_MSVC_TESTRUNNER_H +#define CPPUNIT_MSVC_TESTRUNNER_H + + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include + +/*! \brief MFC test runner (DEPRECATED) + * \ingroup ExecutingTest + * \deprecated Use CppUnit::MfcUi::TestRunner instead. + */ +typedef CPPUNIT_NS::MfcTestRunner TestRunner; + +#endif // CPPUNIT_MSVC_TESTRUNNER_H diff --git a/lib/cppunit-1.10.0/src/CppUnitLibraries.dsw b/lib/cppunit-1.10.0/src/CppUnitLibraries.dsw new file mode 100644 index 0000000000..1246aa3329 --- /dev/null +++ b/lib/cppunit-1.10.0/src/CppUnitLibraries.dsw @@ -0,0 +1,104 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "DSPlugIn"=.\msvc6\DSPlugIn\DSPlugIn.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "DllPlugInTester"=.\DllPlugInTester\DllPlugInTester.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency +}}} + +############################################################################### + +Project: "TestPlugInRunner"=.\msvc6\testpluginrunner\TestPlugInRunner.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name TestRunner + End Project Dependency + Begin Project Dependency + Project_Dep_Name cppunit_dll + End Project Dependency +}}} + +############################################################################### + +Project: "TestRunner"=.\msvc6\testrunner\TestRunner.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name cppunit + End Project Dependency +}}} + +############################################################################### + +Project: "cppunit"=.\cppunit\cppunit.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "cppunit_dll"=.\cppunit\cppunit_dll.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.cpp b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.cpp new file mode 100644 index 0000000000..4aecacb4be --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.cpp @@ -0,0 +1,253 @@ +#include "CommandLineParser.h" + + +CommandLineParser::CommandLineParser( int argc, + char *argv[] ) + : m_currentArgument( 0 ) + , m_useCompiler( false ) + , m_useXml( false ) + , m_briefProgress( false ) + , m_noProgress( false ) + , m_useText( false ) + , m_useCout( false ) + , m_waitBeforeExit( false ) +{ + for ( int index =1; index < argc; ++index ) + { + std::string argument( argv[index ] ); + m_arguments.push_back( argument ); + } +} + + +CommandLineParser::~CommandLineParser() +{ +} + + +void +CommandLineParser::parse() +{ + while ( hasNextArgument() ) + { + getNextOption(); + if ( isOption( "c", "compiler" ) ) + m_useCompiler = true; + else if ( isOption( "x", "xml" ) ) + { + m_useXml = true; + m_xmlFileName = getNextOptionalParameter(); + } + else if ( isOption( "s", "xsl" ) ) + m_xsl = getNextParameter(); + else if ( isOption( "e", "encoding" ) ) + m_encoding = getNextParameter(); + else if ( isOption( "b", "brief-progress" ) ) + m_briefProgress = true; + else if ( isOption( "n", "no-progress" ) ) + m_noProgress = true; + else if ( isOption( "t", "text" ) ) + m_useText = true; + else if ( isOption( "o", "cout" ) ) + m_useCout = true; + else if ( isOption( "w", "wait" ) ) + m_waitBeforeExit = true; + else if ( !m_option.empty() ) + fail( "Unknown option" ); + else if ( hasNextArgument() ) + readNonOptionCommands(); + } +} + + +void +CommandLineParser::readNonOptionCommands() +{ + if ( argumentStartsWith( ":" ) ) + m_testPath = getNextArgument().substr( 1 ); + else + { + CommandLinePlugInInfo plugIn; + int indexParameter = getCurrentArgument().find( '=' ); + if ( indexParameter < 0 ) + plugIn.m_fileName = getCurrentArgument(); + else + { + plugIn.m_fileName = getCurrentArgument().substr( 0, indexParameter ); + std::string parameters = getCurrentArgument().substr( indexParameter +1 ); + plugIn.m_parameters = CPPUNIT_NS::PlugInParameters( parameters ); + } + + m_plugIns.push_back( plugIn ); + + getNextArgument(); + } +} + + +bool +CommandLineParser::hasNextArgument() const +{ + return m_currentArgument < m_arguments.size(); +} + + +std::string +CommandLineParser::getNextArgument() +{ + if ( hasNextArgument() ) + return m_arguments[ m_currentArgument++ ]; + return ""; +} + + +std::string +CommandLineParser::getCurrentArgument() const +{ + if ( m_currentArgument < m_arguments.size() ) + return m_arguments[ m_currentArgument ]; + return ""; +} + + +bool +CommandLineParser::argumentStartsWith( const std::string &expected ) const +{ + return getCurrentArgument().substr( 0, expected.length() ) == expected; +} + + +void +CommandLineParser::getNextOption() +{ + if ( argumentStartsWith( "-" ) || argumentStartsWith( "--" ) ) + m_option = getNextArgument(); + else + m_option = ""; +} + + +bool +CommandLineParser::isOption( const std::string &shortName, + const std::string &longName ) +{ + return (m_option == "-" + shortName) || + (m_option == "--" + longName); +} + + +std::string +CommandLineParser::getNextParameter() +{ + if ( !hasNextArgument() ) + fail( "missing parameter" ); + return getNextArgument(); +} + + +std::string +CommandLineParser::getNextOptionalParameter() +{ + if ( argumentStartsWith( "-" ) || argumentStartsWith( ":" ) ) + return ""; + return getNextArgument(); +} + + +void +CommandLineParser::fail( std::string message ) +{ + throw CommandLineParserException( "while parsing option " + m_option+ + ",\n" + message ); +} + + +bool +CommandLineParser::useCompilerOutputter() const +{ + return m_useCompiler; +} + + +bool +CommandLineParser::useXmlOutputter() const +{ + return m_useXml; +} + + +std::string +CommandLineParser::getXmlFileName() const +{ + return m_xmlFileName; +} + + +std::string +CommandLineParser::getXmlStyleSheet() const +{ + return m_xsl; +} + + +std::string +CommandLineParser::getEncoding() const +{ + return m_encoding; +} + + +bool +CommandLineParser::useBriefTestProgress() const +{ + return m_briefProgress; +} + + +bool +CommandLineParser::noTestProgress() const +{ + return m_noProgress; +} + + +bool +CommandLineParser::useTextOutputter() const +{ + return m_useText; +} + + +bool +CommandLineParser::useCoutStream() const +{ + return m_useCout; +} + + +bool +CommandLineParser::waitBeforeExit() const +{ + return m_waitBeforeExit; +} + + +int +CommandLineParser::getPlugInCount() const +{ + return m_plugIns.size(); +} + +CommandLinePlugInInfo +CommandLineParser::getPlugInAt( int index ) const +{ + return m_plugIns[ index ]; +} + + +std::string +CommandLineParser::getTestPath() const +{ + return m_testPath; +} + diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.h b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.h new file mode 100644 index 0000000000..2fc80ebcf6 --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.h @@ -0,0 +1,127 @@ +#ifndef CPPUNIT_HELPER_COMMANDLINEPARSER_H +#define CPPUNIT_HELPER_COMMANDLINEPARSER_H + +#include +#include +#include +#include +#include + + +/*! Exception thrown on error while parsing command line. + */ +class CommandLineParserException : public std::runtime_error +{ +public: + CommandLineParserException( std::string message ) + : std::runtime_error( message ) + { + } +}; + + +struct CommandLinePlugInInfo +{ + std::string m_fileName; + CPPUNIT_NS::PlugInParameters m_parameters; +}; + + +/*! \brief Parses a command line. + +-c --compiler +-x --xml [filename] +-s --xsl stylesheet +-e --encoding encoding +-b --brief-progress +-n --no-progress +-t --text +-o --cout +-w --wait +filename[="options"] +:testpath + + */ +class CommandLineParser +{ +public: + /*! Constructs a CommandLineParser object. + */ + CommandLineParser( int argc, + char *argv[] ); + + /// Destructor. + virtual ~CommandLineParser(); + + /*! Parses the command line. + * \exception CommandLineParserException if an error occurs. + */ + void parse(); + + bool useCompilerOutputter() const; + bool useXmlOutputter() const; + std::string getXmlFileName() const; + std::string getXmlStyleSheet() const; + std::string getEncoding() const; + bool useBriefTestProgress() const; + bool noTestProgress() const; + bool useTextOutputter() const; + bool useCoutStream() const; + bool waitBeforeExit() const; + std::string getTestPath() const; + int getPlugInCount() const; + CommandLinePlugInInfo getPlugInAt( int index ) const; + +protected: + /// Prevents the use of the copy constructor. + CommandLineParser( const CommandLineParser © ); + + /// Prevents the use of the copy operator. + void operator =( const CommandLineParser © ); + + void readNonOptionCommands(); + + bool hasNextArgument() const; + + std::string getNextArgument(); + + std::string getCurrentArgument() const; + + bool argumentStartsWith( const std::string &expected ) const; + + void getNextOption(); + + bool isOption( const std::string &shortName, + const std::string &longName ); + + std::string getNextParameter(); + + std::string getNextOptionalParameter(); + + void fail( std::string message ); + +protected: + bool m_useCompiler; + bool m_useXml; + std::string m_xmlFileName; + std::string m_xsl; + std::string m_encoding; + bool m_briefProgress; + bool m_noProgress; + bool m_useText; + bool m_useCout; + bool m_waitBeforeExit; + std::string m_testPath; + + typedef CppUnitDeque PlugIns; + PlugIns m_plugIns; + + typedef CppUnitDeque Arguments; + Arguments m_arguments; + unsigned int m_currentArgument; + + std::string m_option; +}; + + +#endif // CPPUNIT_HELPER_COMMANDLINEPARSER_H diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.cpp b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.cpp new file mode 100644 index 0000000000..7e9ac5d7ea --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.cpp @@ -0,0 +1,219 @@ +#include "CommandLineParser.h" +#include "CommandLineParserTest.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( CommandLineParserTest ); + + +CommandLineParserTest::CommandLineParserTest() +{ +} + + +CommandLineParserTest::~CommandLineParserTest() +{ +} + + +void +CommandLineParserTest::setUp() +{ + _parser = NULL; +} + + +void +CommandLineParserTest::tearDown() +{ + delete _parser; +} + + +void +CommandLineParserTest::parse( char **lines ) +{ + int count =0; + for ( char **line = lines; *line != NULL; ++line, ++count ); + + delete _parser; + _parser = new CommandLineParser( count, lines ); + _parser->parse(); +} + + +void +CommandLineParserTest::testEmptyCommandLine() +{ + static char *lines[] = { "", NULL }; + parse( lines ); + + std::string none; + CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() ); + CPPUNIT_ASSERT( !_parser->noTestProgress() ); + CPPUNIT_ASSERT( !_parser->useBriefTestProgress() ); + CPPUNIT_ASSERT( !_parser->useCompilerOutputter() ); + CPPUNIT_ASSERT( !_parser->useCoutStream() ); + CPPUNIT_ASSERT( !_parser->useTextOutputter() ); + CPPUNIT_ASSERT( !_parser->useXmlOutputter() ); +} + + +void +CommandLineParserTest::testFlagCompiler() +{ + static char *lines[] = { "", "-c", NULL }; + parse( lines ); + + std::string none; + CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() ); + CPPUNIT_ASSERT( !_parser->noTestProgress() ); + CPPUNIT_ASSERT( !_parser->useBriefTestProgress() ); + CPPUNIT_ASSERT( _parser->useCompilerOutputter() ); + CPPUNIT_ASSERT( !_parser->useCoutStream() ); + CPPUNIT_ASSERT( !_parser->useTextOutputter() ); + CPPUNIT_ASSERT( !_parser->useXmlOutputter() ); + CPPUNIT_ASSERT_EQUAL( 0, _parser->getPlugInCount() ); +} + + +void +CommandLineParserTest::testLongFlagBriefProgress() +{ + static char *lines[] = { "", "--brief-progress", NULL }; + parse( lines ); + + std::string none; + CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() ); + CPPUNIT_ASSERT( !_parser->noTestProgress() ); + CPPUNIT_ASSERT( _parser->useBriefTestProgress() ); + CPPUNIT_ASSERT( !_parser->useCompilerOutputter() ); + CPPUNIT_ASSERT( !_parser->useCoutStream() ); + CPPUNIT_ASSERT( !_parser->useTextOutputter() ); + CPPUNIT_ASSERT( !_parser->useXmlOutputter() ); + CPPUNIT_ASSERT_EQUAL( 0, _parser->getPlugInCount() ); +} + + +void +CommandLineParserTest::testFileName() +{ + static char *lines[] = { "", "TestPlugIn.dll", NULL }; + parse( lines ); + + std::string none; + CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() ); + CPPUNIT_ASSERT( !_parser->noTestProgress() ); + CPPUNIT_ASSERT( !_parser->useBriefTestProgress() ); + CPPUNIT_ASSERT( !_parser->useCompilerOutputter() ); + CPPUNIT_ASSERT( !_parser->useCoutStream() ); + CPPUNIT_ASSERT( !_parser->useTextOutputter() ); + CPPUNIT_ASSERT( !_parser->useXmlOutputter() ); + + CPPUNIT_ASSERT_EQUAL( 1, _parser->getPlugInCount() ); + + CommandLinePlugInInfo info( _parser->getPlugInAt( 0 ) ); + CPPUNIT_ASSERT_EQUAL( std::string("TestPlugIn.dll"), info.m_fileName ); + CPPUNIT_ASSERT( info.m_parameters.getCommandLine().empty() ); +} + + +void +CommandLineParserTest::testTestPath() +{ + static char *lines[] = { "", ":Core", NULL }; + parse( lines ); + + std::string none; + CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() ); + CPPUNIT_ASSERT_EQUAL( std::string("Core"), _parser->getTestPath() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() ); + CPPUNIT_ASSERT( !_parser->noTestProgress() ); + CPPUNIT_ASSERT( !_parser->useBriefTestProgress() ); + CPPUNIT_ASSERT( !_parser->useCompilerOutputter() ); + CPPUNIT_ASSERT( !_parser->useCoutStream() ); + CPPUNIT_ASSERT( !_parser->useTextOutputter() ); + CPPUNIT_ASSERT( !_parser->useXmlOutputter() ); + CPPUNIT_ASSERT_EQUAL( 0, _parser->getPlugInCount() ); +} + + +void +CommandLineParserTest::testParameterWithSpace() +{ + static char *lines[] = { "", "--xml", "Test Results.xml", NULL }; + parse( lines ); + + std::string none; + CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() ); + CPPUNIT_ASSERT_EQUAL( std::string("Test Results.xml"), + _parser->getXmlFileName() ); + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() ); + CPPUNIT_ASSERT( !_parser->noTestProgress() ); + CPPUNIT_ASSERT( !_parser->useBriefTestProgress() ); + CPPUNIT_ASSERT( !_parser->useCompilerOutputter() ); + CPPUNIT_ASSERT( !_parser->useCoutStream() ); + CPPUNIT_ASSERT( !_parser->useTextOutputter() ); + CPPUNIT_ASSERT( _parser->useXmlOutputter() ); + CPPUNIT_ASSERT_EQUAL( 0, _parser->getPlugInCount() ); +} + + +void +CommandLineParserTest::testMissingStyleSheetParameterThrow() +{ + static char *lines[] = { "", "--xsl", NULL }; + parse( lines ); +} + + +void +CommandLineParserTest::testMissingEncodingParameterThrow() +{ + static char *lines[] = { "", "--encoding", NULL }; + parse( lines ); +} + + +void +CommandLineParserTest::testXmlFileNameIsOptional() +{ + static char *lines[] = { "", "--xml", NULL }; + parse( lines ); + + std::string none; + CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() ); +} + + +void +CommandLineParserTest::testPlugInsWithParameters() +{ + static char *lines[] = { "", "TestPlugIn1.dll=login = lain", + "Clocker.dll", NULL }; + parse( lines ); + + CPPUNIT_ASSERT_EQUAL( 2, _parser->getPlugInCount() ); + + CommandLinePlugInInfo info1( _parser->getPlugInAt( 0 ) ); + + CPPUNIT_ASSERT_EQUAL( std::string("TestPlugIn1.dll"), info1.m_fileName ); + CPPUNIT_ASSERT_EQUAL( std::string("login = lain"), + info1.m_parameters.getCommandLine() ); + + CommandLinePlugInInfo info2( _parser->getPlugInAt( 1 ) ); + CPPUNIT_ASSERT_EQUAL( std::string("Clocker.dll"), info2.m_fileName ); + CPPUNIT_ASSERT( info2.m_parameters.getCommandLine().empty() ); +} diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.h b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.h new file mode 100644 index 0000000000..fa15fb13ff --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.h @@ -0,0 +1,61 @@ +#ifndef COMMANDLINEPARSERTEST_H +#define COMMANDLINEPARSERTEST_H + +#include + + +class CommandLineParser; +class CommandLineParserException; + + +class CommandLineParserTest : public CPPUNIT_NS::TestCase +{ + CPPUNIT_TEST_SUITE( CommandLineParserTest ); + CPPUNIT_TEST( testEmptyCommandLine ); + CPPUNIT_TEST( testFlagCompiler ); + CPPUNIT_TEST( testLongFlagBriefProgress ); + CPPUNIT_TEST( testFileName ); + CPPUNIT_TEST( testTestPath ); + CPPUNIT_TEST( testParameterWithSpace ); + CPPUNIT_TEST_EXCEPTION( testMissingStyleSheetParameterThrow, CommandLineParserException); + CPPUNIT_TEST_EXCEPTION( testMissingEncodingParameterThrow, CommandLineParserException); + CPPUNIT_TEST( testXmlFileNameIsOptional ); + CPPUNIT_TEST( testPlugInsWithParameters ); + CPPUNIT_TEST_SUITE_END(); + +public: + CommandLineParserTest(); + virtual ~CommandLineParserTest(); + + void setUp(); + void tearDown(); + + void testEmptyCommandLine(); + void testFlagCompiler(); + void testLongFlagBriefProgress(); + void testFileName(); + void testTestPath(); + void testParameterWithSpace(); + void testMissingStyleSheetParameterThrow(); + void testMissingEncodingParameterThrow(); + void testXmlFileNameIsOptional(); + void testPlugInsWithParameters(); + +private: + CommandLineParserTest( const CommandLineParserTest &other ); + void operator =( const CommandLineParserTest &other ); + + void parse( char **lines ); + +private: + CommandLineParser *_parser; +}; + + + +// Inlines methods for CommandLineParserTest: +// ------------------------------------------ + + + +#endif // COMMANDLINEPARSERTEST_H diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.cpp b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.cpp new file mode 100644 index 0000000000..779757f022 --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.cpp @@ -0,0 +1,258 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "CommandLineParser.h" + + +/* Notes: + + Memory allocated by test plug-in must be freed before unloading the test plug-in. + That is the reason why the XmlOutputter is explicitely destroyed. + */ + + +/*! Runs the specified tests located in the root suite. + * \param parser Command line parser. + * \return \c true if the run succeed, \c false if a test failed or if a test + * path was not resolved. + */ +bool +runTests( const CommandLineParser &parser ) +{ + bool wasSuccessful = false; + CPPUNIT_NS::PlugInManager plugInManager; + + // The following scope is used to explicitely free all memory allocated before + // unload the test plug-ins (uppon plugInManager destruction). + { + CPPUNIT_NS::TestResult controller; + CPPUNIT_NS::TestResultCollector result; + controller.addListener( &result ); + + // Set up outputters + std::ostream *stream = &std::cerr; + if ( parser.useCoutStream() ) + stream = &std::cout; + + std::ostream *xmlStream = stream; + if ( !parser.getXmlFileName().empty() ) + xmlStream = new std::ofstream( parser.getXmlFileName().c_str() ); + + CPPUNIT_NS::XmlOutputter xmlOutputter( &result, *xmlStream, parser.getEncoding() ); + xmlOutputter.setStyleSheet( parser.getXmlStyleSheet() ); + CPPUNIT_NS::TextOutputter textOutputter( &result, *stream ); + CPPUNIT_NS::CompilerOutputter compilerOutputter( &result, *stream ); + + // Set up test listeners + CPPUNIT_NS::BriefTestProgressListener briefListener; + CPPUNIT_NS::TextTestProgressListener dotListener; + if ( parser.useBriefTestProgress() ) + controller.addListener( &briefListener ); + else if ( !parser.noTestProgress() ) + controller.addListener( &dotListener ); + + // Set up plug-ins + for ( int index =0; index < parser.getPlugInCount(); ++index ) + { + CommandLinePlugInInfo plugIn = parser.getPlugInAt( index ); + plugInManager.load( plugIn.m_fileName, plugIn.m_parameters ); + } + + // Registers plug-in specific TestListener (global setUp/tearDown, custom TestListener...) + plugInManager.addListener( &controller ); + + // Adds the default registry suite + CPPUNIT_NS::TestRunner runner; + runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() ); + + // Runs the specified test + try + { + runner.run( controller, parser.getTestPath() ); + wasSuccessful = result.wasSuccessful(); + } + catch ( std::invalid_argument & ) + { + std::cerr << "Failed to resolve test path: " + << parser.getTestPath() + << std::endl; + } + + // Removes plug-in specific TestListener (not really needed but...) + plugInManager.removeListener( &controller ); + + // write using outputters + if ( parser.useCompilerOutputter() ) + compilerOutputter.write(); + + if ( parser.useTextOutputter() ) + textOutputter.write(); + + if ( parser.useXmlOutputter() ) + { + plugInManager.addXmlOutputterHooks( &xmlOutputter ); + xmlOutputter.write(); + plugInManager.removeXmlOutputterHooks(); + } + + if ( !parser.getXmlFileName().empty() ) + delete xmlStream; + } + + return wasSuccessful; +} + + +void +printShortUsage( const std::string &applicationName ) +{ + std::cout << "Usage:" << std::endl + << applicationName << " [-c -b -n -t -o -w] [-x xml-filename]" + "[-s stylesheet] [-e encoding] plug-in[=parameters] [plug-in...] [:testPath]" + << std::endl << std::endl; +} + + +void +printUsage( const std::string &applicationName ) +{ + printShortUsage( applicationName ); + std::cout << +"-c --compiler\n" +" Use CompilerOutputter\n" +"-x --xml [filename]\n" +" Use XmlOutputter (if filename is omitted, then output to cout or\n" +" cerr.\n" +"-s --xsl stylesheet\n" +" XML style sheet for XML Outputter\n" +"-e --encoding encoding\n" +" XML file encoding (UTF8, shift_jis, ISO-8859-1...)\n" +"-b --brief-progress\n" +" Use BriefTestProgressListener (default is TextTestProgressListener)\n" +"-n --no-progress\n" +" Show no test progress (disable default TextTestProgressListener)\n" +"-t --text\n" +" Use TextOutputter\n" +"-o --cout\n" +" Ouputters output to cout instead of the default cerr.\n" +"-w --wait\n" +" Wait for the user to press a return before exit.\n" +"filename[=\"options\"]\n" +" Many filenames can be specified. They are the name of the \n" +" test plug-ins to load. Optional plug-ins parameters can be \n" +" specified after the filename by adding '='.\n" +"[:testpath]\n" +" Optional. Only one test path can be specified. It must \n" +" be prefixed with ':'. See TestPath constructor for syntax.\n" +"\n" +"'parameters' (test plug-in or XML filename, test path...) may contains \n" +"spaces if double quoted. Quote may be escaped with \".\n" +"\n" +"Some examples of command lines:\n" +"\n" +"DllPlugInTesterd_dll.exe -b -x tests.xml -c simple_plugind.dll CppUnitTestPlugInd.dll\n" +"\n" +" Will load 2 tests plug-ins (available in lib/), use the brief test\n" +"progress, output the result in XML in file tests.xml and also\n" +"output the result using the compiler outputter.\n" +"\n" +"DllPlugInTesterd_dll.exe ClockerPlugInd.dll=\"flat\" -n CppUnitTestPlugInd.dll\n" +"\n" +" Will load the 2 test plug-ins, and pass the parameter string \"flat\"\n" +"to the Clocker plug-in, disable test progress.\n" + << std::endl; + +} + + +/*! Main + * + * Usage: + * + * DllPlugInTester.exe dll-filename1 [dll-filename2 [dll-filename3 ...]] [:testpath] + * + * dll-filename must be the name of the DLL. If the DLL use some other DLL, they + * should be in the path or in the same directory as the DLL. The DLL must export + * a function named "GetTestPlugInInterface" with the signature + * GetTestPlugInInterfaceFunction. Both are defined in: + * \code + * #include + * \endcode. + * + * See examples/msvc6/TestPlugIn for an example of post-build testing. + * + * If no test path is specified, they all the test of the suite returned by the DLL + * are run. If a test path is specified, then only the specified test is run. The test + * path must be prefixed by ':'. + * + * Test paths are resolved using Test::resolveTestPath() on the suite returned by + * TestFactoryRegistry::getRegistry().makeTest(); + * + * If all test succeed and no error happen then the application exit with code 0. + * If any error occurs (failed to load dll, failed to resolve test paths) or a + * test fail, the application exit with code 1. If the application failed to + * parse the command line, it exits with code 2. + */ +int +main( int argc, + char *argv[] ) +{ + const int successReturnCode = 0; + const int failureReturnCode = 1; + const int badCommadLineReturnCode = 2; + + // check command line + std::string applicationName( argv[0] ); + if ( argc < 2 ) + { + printUsage( applicationName ); + return badCommadLineReturnCode; + } + + CommandLineParser parser( argc, argv ); + try + { + parser.parse(); + } + catch ( CommandLineParserException &e ) + { + std::cerr << "Error while parsing command line: " << e.what() + << std::endl << std::endl; + printShortUsage( applicationName ); + return badCommadLineReturnCode; + } + + bool wasSuccessful = false; + try + { + wasSuccessful = runTests( parser ); + } + catch ( CPPUNIT_NS::DynamicLibraryManagerException &e ) + { + std::cerr << "Failed to load test plug-in:" << std::endl + << e.what() << std::endl; + } + + if ( parser.waitBeforeExit() ) + { + std::cout << "Please press to exit" << std::endl; + std::cin.get(); + } + + return wasSuccessful ? successReturnCode : failureReturnCode; +} + + diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.dsp b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.dsp new file mode 100644 index 0000000000..6a75b905b3 --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.dsp @@ -0,0 +1,266 @@ +# Microsoft Developer Studio Project File - Name="DllPlugInTester" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=DllPlugInTester - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "DllPlugInTester.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "DllPlugInTester.mak" CFG="DllPlugInTester - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "DllPlugInTester - Win32 Release Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE "DllPlugInTester - Win32 Debug Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE "DllPlugInTester - Win32 Release Static" (based on "Win32 (x86) Console Application") +!MESSAGE "DllPlugInTester - Win32 Debug Static" (based on "Win32 (x86) Console Application") +!MESSAGE "DllPlugInTester - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "DllPlugInTester - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "DllPlugInTester - Win32 Release Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "DllPlugInTester___Win32_Release_Unicode" +# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Release_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseUnicode" +# PROP Intermediate_Dir "ReleaseUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /out:"ReleaseUnicode\DllPlugInTesteru.exe" /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\ReleaseUnicode\DllPlugInTesteru.exe +TargetName=DllPlugInTesteru +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe +# End Special Build Tool + +!ELSEIF "$(CFG)" == "DllPlugInTester - Win32 Debug Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "DllPlugInTester___Win32_Debug_Unicode" +# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Debug_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugUnicode" +# PROP Intermediate_Dir "DebugUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DebugUnicode\DllPlugInTesterud.exe" /pdbtype:sept /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\DebugUnicode\DllPlugInTesterud.exe +TargetName=DllPlugInTesterud +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe +# End Special Build Tool + +!ELSEIF "$(CFG)" == "DllPlugInTester - Win32 Release Static" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "DllPlugInTester___Win32_Release_Static" +# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Release_Static" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /out:"..\..\lib\DllPlugInTester.exe" /libpath:"../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\Release\DllPlugInTester.exe +TargetName=DllPlugInTester +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe +# End Special Build Tool + +!ELSEIF "$(CFG)" == "DllPlugInTester - Win32 Debug Static" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "DllPlugInTester___Win32_Debug_Static" +# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Debug_Static" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\lib\DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"Debug\DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\Debug\DllPlugInTesterd.exe +TargetName=DllPlugInTesterd +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe +# End Special Build Tool + +!ELSEIF "$(CFG)" == "DllPlugInTester - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "DllPlugInTester___Win32_Release" +# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Release" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDll" +# PROP Intermediate_Dir "ReleaseDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /subsystem:console /machine:I386 /out:"..\..\lib\DllPlugInTester_dll.exe" /libpath:"../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /subsystem:console /machine:I386 /out:"ReleaseDll\DllPlugInTester_dll.exe" /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\ReleaseDll\DllPlugInTester_dll.exe +TargetName=DllPlugInTester_dll +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe +# End Special Build Tool + +!ELSEIF "$(CFG)" == "DllPlugInTester - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "DllPlugInTester___Win32_Debug" +# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Debug" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDll" +# PROP Intermediate_Dir "DebugDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /GZ /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\lib\DllPlugInTesterd_dll.exe" /pdbtype:sept /libpath:"../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DebugDll\DllPlugInTesterd_dll.exe" /pdbtype:sept /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\DebugDll\DllPlugInTesterd_dll.exe +TargetName=DllPlugInTesterd_dll +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "DllPlugInTester - Win32 Release Unicode" +# Name "DllPlugInTester - Win32 Debug Unicode" +# Name "DllPlugInTester - Win32 Release Static" +# Name "DllPlugInTester - Win32 Debug Static" +# Name "DllPlugInTester - Win32 Release" +# Name "DllPlugInTester - Win32 Debug" +# Begin Source File + +SOURCE=.\CommandLineParser.cpp +# End Source File +# Begin Source File + +SOURCE=.\CommandLineParser.h +# End Source File +# Begin Source File + +SOURCE=.\DllPlugInTester.cpp +# End Source File +# Begin Source File + +SOURCE=.\Makefile.am +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.cpp b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.cpp new file mode 100644 index 0000000000..02488f10a8 --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.cpp @@ -0,0 +1,16 @@ +#include +#include +#include + + +int main(int argc, char* argv[]) +{ + CPPUNIT_NS::Test *suite = CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest(); + CPPUNIT_NS::TextUi::TestRunner runner; + runner.addTest( suite ); + runner.setOutputter( new CPPUNIT_NS::CompilerOutputter( &runner.result(), + std::cerr ) ); + bool wasSucessful = runner.run(); + return wasSucessful ? 0 : 1; +} + diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.dsp b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.dsp new file mode 100644 index 0000000000..a71bc54096 --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.dsp @@ -0,0 +1,180 @@ +# Microsoft Developer Studio Project File - Name="DllPlugInTesterTest" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=DllPlugInTesterTest - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "DllPlugInTesterTest.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "DllPlugInTesterTest.mak" CFG="DllPlugInTesterTest - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "DllPlugInTesterTest - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "DllPlugInTesterTest - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "DllPlugInTesterTest - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseTest" +# PROP Intermediate_Dir "ReleaseTest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /Ox /Ot /Oa /Ow /Og /Oi /Oy /Ob0 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\ReleaseTest\DllPlugInTesterTest.exe +SOURCE="$(InputPath)" +PostBuild_Desc=Unit testing... +PostBuild_Cmds=$(TargetPath) +# End Special Build Tool + +!ELSEIF "$(CFG)" == "DllPlugInTesterTest - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugTest" +# PROP Intermediate_Dir "DebugTest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /YX /FD /GZ /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../lib" +# Begin Special Build Tool +TargetPath=.\DebugTest\DllPlugInTesterTest.exe +SOURCE="$(InputPath)" +PostBuild_Desc=Unit testing... +PostBuild_Cmds=$(TargetPath) +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "DllPlugInTesterTest - Win32 Release" +# Name "DllPlugInTesterTest - Win32 Debug" +# Begin Source File + +SOURCE=..\..\src\DllPlugInTester\CommandLineParser.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\DllPlugInTester\CommandLineParser.h +# End Source File +# Begin Source File + +SOURCE=.\CommandLineParserTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\CommandLineParserTest.h +# End Source File +# Begin Source File + +SOURCE=..\..\lib\cppunit_dll.dll + +!IF "$(CFG)" == "DllPlugInTesterTest - Win32 Release" + +# Begin Custom Build - Updating $(InputPath) +IntDir=.\ReleaseTest +InputPath=..\..\lib\cppunit_dll.dll +InputName=cppunit_dll + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "DllPlugInTesterTest - Win32 Debug" + +# Begin Custom Build - Updating $(InputPath) +IntDir=.\DebugTest +InputPath=..\..\lib\cppunit_dll.dll +InputName=cppunit_dll + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\lib\cppunitd_dll.dll + +!IF "$(CFG)" == "DllPlugInTesterTest - Win32 Release" + +# Begin Custom Build - Updating $(InputPath) +IntDir=.\ReleaseTest +InputPath=..\..\lib\cppunitd_dll.dll +InputName=cppunitd_dll + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "DllPlugInTesterTest - Win32 Debug" + +# Begin Custom Build - Updating $(InputPath) +IntDir=.\DebugTest +InputPath=..\..\lib\cppunitd_dll.dll +InputName=cppunitd_dll + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\src\DllPlugInTester\DllPlugInTesterTest.cpp +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.am b/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.am new file mode 100644 index 0000000000..b4f7f6fbb0 --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.am @@ -0,0 +1,28 @@ +EXTRA_DIST = DllPlugInTester.dsp DllPlugInTesterTest.dsp + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +bin_PROGRAMS=DllPlugInTester + +TESTS = DllPlugInTesterTest +check_PROGRAMS = $(TESTS) + +DllPlugInTester_SOURCES= DllPlugInTester.cpp \ + CommandLineParser.h \ + CommandLineParser.cpp + +DllPlugInTester_LDADD= \ + $(top_builddir)/src/cppunit/libcppunit.la + +DllPlugInTester_LDFLAGS = $(LIBADD_DL) + +DllPlugInTesterTest_SOURCES = DllPlugInTesterTest.cpp \ + CommandLineParser.cpp \ + CommandLineParser.h \ + CommandLineParserTest.cpp \ + CommandLineParserTest.h + +DllPlugInTesterTest_LDADD= \ + $(top_builddir)/src/cppunit/libcppunit.la + +DllPlugInTesterTest_LDFLAGS = $(LIBADD_DL) diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.in b/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.in new file mode 100644 index 0000000000..a39d3dd563 --- /dev/null +++ b/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.in @@ -0,0 +1,588 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = DllPlugInTester.dsp DllPlugInTesterTest.dsp + +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +bin_PROGRAMS = DllPlugInTester + +TESTS = DllPlugInTesterTest +check_PROGRAMS = $(TESTS) + +DllPlugInTester_SOURCES = DllPlugInTester.cpp \ + CommandLineParser.h \ + CommandLineParser.cpp + + +DllPlugInTester_LDADD = \ + $(top_builddir)/src/cppunit/libcppunit.la + + +DllPlugInTester_LDFLAGS = $(LIBADD_DL) + +DllPlugInTesterTest_SOURCES = DllPlugInTesterTest.cpp \ + CommandLineParser.cpp \ + CommandLineParser.h \ + CommandLineParserTest.cpp \ + CommandLineParserTest.h + + +DllPlugInTesterTest_LDADD = \ + $(top_builddir)/src/cppunit/libcppunit.la + + +DllPlugInTesterTest_LDFLAGS = $(LIBADD_DL) +subdir = src/DllPlugInTester +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = DllPlugInTester$(EXEEXT) +check_PROGRAMS = DllPlugInTesterTest$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_DllPlugInTester_OBJECTS = DllPlugInTester.$(OBJEXT) \ + CommandLineParser.$(OBJEXT) +DllPlugInTester_OBJECTS = $(am_DllPlugInTester_OBJECTS) +DllPlugInTester_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la +am_DllPlugInTesterTest_OBJECTS = DllPlugInTesterTest.$(OBJEXT) \ + CommandLineParser.$(OBJEXT) CommandLineParserTest.$(OBJEXT) +DllPlugInTesterTest_OBJECTS = $(am_DllPlugInTesterTest_OBJECTS) +DllPlugInTesterTest_DEPENDENCIES = \ + $(top_builddir)/src/cppunit/libcppunit.la + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/CommandLineParser.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/CommandLineParserTest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/DllPlugInTester.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/DllPlugInTesterTest.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(DllPlugInTester_SOURCES) $(DllPlugInTesterTest_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(DllPlugInTester_SOURCES) $(DllPlugInTesterTest_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/DllPlugInTester/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +DllPlugInTester$(EXEEXT): $(DllPlugInTester_OBJECTS) $(DllPlugInTester_DEPENDENCIES) + @rm -f DllPlugInTester$(EXEEXT) + $(CXXLINK) $(DllPlugInTester_LDFLAGS) $(DllPlugInTester_OBJECTS) $(DllPlugInTester_LDADD) $(LIBS) +DllPlugInTesterTest$(EXEEXT): $(DllPlugInTesterTest_OBJECTS) $(DllPlugInTesterTest_DEPENDENCIES) + @rm -f DllPlugInTesterTest$(EXEEXT) + $(CXXLINK) $(DllPlugInTesterTest_LDFLAGS) $(DllPlugInTesterTest_OBJECTS) $(DllPlugInTesterTest_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CommandLineParser.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CommandLineParserTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DllPlugInTester.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DllPlugInTesterTest.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list='$(TESTS)'; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -n "$$skipped" && echo "$$skipped"; \ + test -n "$$report" && echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(PROGRAMS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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-checkPROGRAMS clean-generic \ + clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am + +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ + clean-libtool ctags distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man 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-info-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: diff --git a/lib/cppunit-1.10.0/src/Makefile.am b/lib/cppunit-1.10.0/src/Makefile.am new file mode 100644 index 0000000000..81430b4e3c --- /dev/null +++ b/lib/cppunit-1.10.0/src/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = cppunit DllPlugInTester + +# already handled by toplevel dist-hook. +# DIST_SUBDIRS = msvc6 \ No newline at end of file diff --git a/lib/cppunit-1.10.0/src/Makefile.in b/lib/cppunit-1.10.0/src/Makefile.in new file mode 100644 index 0000000000..edfbc352f2 --- /dev/null +++ b/lib/cppunit-1.10.0/src/Makefile.in @@ -0,0 +1,451 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = cppunit DllPlugInTester +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = Makefile.am Makefile.in +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# 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): + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + 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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +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: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ + pdf-recursive ps ps-am ps-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + + +# already handled by toplevel dist-hook. +# DIST_SUBDIRS = msvc6 +# 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: diff --git a/lib/cppunit-1.10.0/src/cppunit/AdditionalMessage.cpp b/lib/cppunit-1.10.0/src/cppunit/AdditionalMessage.cpp new file mode 100644 index 0000000000..9f3da13929 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/AdditionalMessage.cpp @@ -0,0 +1,41 @@ +#include + + +CPPUNIT_NS_BEGIN + + +AdditionalMessage::AdditionalMessage() +{ +} + + +AdditionalMessage::AdditionalMessage( const std::string &detail1 ) +{ + if ( !detail1.empty() ) + addDetail( detail1 ); +} + + +AdditionalMessage::AdditionalMessage( const char *detail1 ) +{ + if ( detail1 && !std::string( detail1 ).empty() ) + addDetail( std::string(detail1) ); +} + + +AdditionalMessage::AdditionalMessage( const Message &other ) + : SuperClass( other ) +{ +} + + +AdditionalMessage & +AdditionalMessage::operator =( const Message &other ) +{ + SuperClass::operator =( other ); + + return *this; +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/Asserter.cpp b/lib/cppunit-1.10.0/src/cppunit/Asserter.cpp new file mode 100644 index 0000000000..a9cf95cb4a --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/Asserter.cpp @@ -0,0 +1,101 @@ +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +void +Asserter::fail( std::string message, + const SourceLine &sourceLine ) +{ + fail( Message( "assertion failed", message ), sourceLine ); +} + + +void +Asserter::fail( const Message &message, + const SourceLine &sourceLine ) +{ + throw Exception( message, sourceLine ); +} + + +void +Asserter::failIf( bool shouldFail, + const Message &message, + const SourceLine &sourceLine ) +{ + if ( shouldFail ) + fail( message, sourceLine ); +} + + +void +Asserter::failIf( bool shouldFail, + std::string message, + const SourceLine &sourceLine ) +{ + failIf( shouldFail, Message( "assertion failed", message ), sourceLine ); +} + + +std::string +Asserter::makeExpected( const std::string &expectedValue ) +{ + return "Expected: " + expectedValue; +} + + +std::string +Asserter::makeActual( const std::string &actualValue ) +{ + return "Actual : " + actualValue; +} + + +Message +Asserter::makeNotEqualMessage( const std::string &expectedValue, + const std::string &actualValue, + const AdditionalMessage &additionalMessage, + const std::string &shortDescription ) +{ + Message message( shortDescription, + makeExpected( expectedValue ), + makeActual( actualValue ) ); + message.addDetail( additionalMessage ); + + return message; +} + + +void +Asserter::failNotEqual( std::string expected, + std::string actual, + const SourceLine &sourceLine, + const AdditionalMessage &additionalMessage, + std::string shortDescription ) +{ + fail( makeNotEqualMessage( expected, + actual, + additionalMessage, + shortDescription ), + sourceLine ); +} + + +void +Asserter::failNotEqualIf( bool shouldFail, + std::string expected, + std::string actual, + const SourceLine &sourceLine, + const AdditionalMessage &additionalMessage, + std::string shortDescription ) +{ + if ( shouldFail ) + failNotEqual( expected, actual, sourceLine, additionalMessage, shortDescription ); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/BeOsDynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/BeOsDynamicLibraryManager.cpp new file mode 100644 index 0000000000..b8568be0ce --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/BeOsDynamicLibraryManager.cpp @@ -0,0 +1,49 @@ +#include + +#if defined(CPPUNIT_HAVE_BEOS_DLL_LOADER) +#include + +#include + + +CPPUNIT_NS_BEGIN + + +DynamicLibraryManager::LibraryHandle +DynamicLibraryManager::doLoadLibrary( const std::string &libraryName ) +{ + return (LibraryHandle)::load_add_on( libraryName.c_str() ); +} + + +void +DynamicLibraryManager::doReleaseLibrary() +{ + ::unload_add_on( (image_id)m_libraryHandle ); +} + + +DynamicLibraryManager::Symbol +DynamicLibraryManager::doFindSymbol( const std::string &symbol ) +{ + void *symbolPointer; + if ( ::get_image_symbol( (image_id)m_libraryHandle, + symbol.c_str(), + B_SYMBOL_TYPE_TEXT, + &symbolPointer ) == B_OK ) + return symnolPointer; + return NULL; +} + + +std::string +DynamicLibraryManager::getLastErrorDetail() const +{ + return ""; +} + + +CPPUNIT_NS_END + + +#endif // defined(CPPUNIT_HAVE_BEOS_DLL_LOADER) diff --git a/lib/cppunit-1.10.0/src/cppunit/BriefTestProgressListener.cpp b/lib/cppunit-1.10.0/src/cppunit/BriefTestProgressListener.cpp new file mode 100644 index 0000000000..953f659c8b --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/BriefTestProgressListener.cpp @@ -0,0 +1,49 @@ +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +BriefTestProgressListener::BriefTestProgressListener() + : m_lastTestFailed( false ) +{ +} + + +BriefTestProgressListener::~BriefTestProgressListener() +{ +} + + +void +BriefTestProgressListener::startTest( Test *test ) +{ + std::cerr << test->getName(); + std::cerr.flush(); + + m_lastTestFailed = false; +} + + +void +BriefTestProgressListener::addFailure( const TestFailure &failure ) +{ + std::cerr << " : " << (failure.isError() ? "error" : "assertion"); + m_lastTestFailed = true; +} + + +void +BriefTestProgressListener::endTest( Test *test ) +{ + if ( !m_lastTestFailed ) + std::cerr << " : OK"; + std::cerr << std::endl; +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/CompilerOutputter.cpp b/lib/cppunit-1.10.0/src/cppunit/CompilerOutputter.cpp new file mode 100644 index 0000000000..790481a74e --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/CompilerOutputter.cpp @@ -0,0 +1,217 @@ +#include +#include +#include +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +CompilerOutputter::CompilerOutputter( TestResultCollector *result, + std::ostream &stream, + const std::string &locationFormat ) + : m_result( result ) + , m_stream( stream ) + , m_locationFormat( locationFormat ) + , m_wrapColumn( CPPUNIT_WRAP_COLUMN ) +{ +} + + +CompilerOutputter::~CompilerOutputter() +{ +} + + +void +CompilerOutputter::setLocationFormat( const std::string &locationFormat ) +{ + m_locationFormat = locationFormat; +} + + +CompilerOutputter * +CompilerOutputter::defaultOutputter( TestResultCollector *result, + std::ostream &stream ) +{ + return new CompilerOutputter( result, stream ); +} + + +void +CompilerOutputter::write() +{ + if ( m_result->wasSuccessful() ) + printSuccess(); + else + printFailureReport(); +} + + +void +CompilerOutputter::printSuccess() +{ + m_stream << "OK (" << m_result->runTests() << ")" + << std::endl; +} + + +void +CompilerOutputter::printFailureReport() +{ + printFailuresList(); + printStatistics(); +} + + +void +CompilerOutputter::printFailuresList() +{ + for ( int index =0; index < m_result->testFailuresTotal(); ++index) + { + printFailureDetail( m_result->failures()[ index ] ); + } +} + + +void +CompilerOutputter::printFailureDetail( TestFailure *failure ) +{ + printFailureLocation( failure->sourceLine() ); + printFailureType( failure ); + printFailedTestName( failure ); + printFailureMessage( failure ); +} + + +void +CompilerOutputter::printFailureLocation( SourceLine sourceLine ) +{ + if ( !sourceLine.isValid() ) + { + m_stream << "##Failure Location unknown## : "; + return; + } + + std::string location; + for ( unsigned int index = 0; index < m_locationFormat.length(); ++index ) + { + char c = m_locationFormat[ index ]; + if ( c == '%' && ( index+1 < m_locationFormat.length() ) ) + { + char command = m_locationFormat[index+1]; + if ( processLocationFormatCommand( command, sourceLine ) ) + { + ++index; + continue; + } + } + + m_stream << c; + } +} + + +bool +CompilerOutputter::processLocationFormatCommand( char command, + const SourceLine &sourceLine ) +{ + switch ( command ) + { + case 'p': + m_stream << sourceLine.fileName(); + return true; + case 'l': + m_stream << sourceLine.lineNumber(); + return true; + case 'f': + m_stream << extractBaseName( sourceLine.fileName() ); + return true; + } + + return false; +} + + +std::string +CompilerOutputter::extractBaseName( const std::string &fileName ) const +{ + int indexLastDirectorySeparator = fileName.find_last_of( '/' ); + + if ( indexLastDirectorySeparator < 0 ) + indexLastDirectorySeparator = fileName.find_last_of( '\\' ); + + if ( indexLastDirectorySeparator < 0 ) + return fileName; + + return fileName.substr( indexLastDirectorySeparator +1 ); +} + + +void +CompilerOutputter::printFailureType( TestFailure *failure ) +{ + m_stream << (failure->isError() ? "Error" : "Assertion"); +} + + +void +CompilerOutputter::printFailedTestName( TestFailure *failure ) +{ + m_stream << std::endl; + m_stream << "Test name: " << failure->failedTestName(); +} + + +void +CompilerOutputter::printFailureMessage( TestFailure *failure ) +{ + m_stream << std::endl; + Exception *thrownException = failure->thrownException(); + m_stream << thrownException->message().shortDescription() << std::endl; + + std::string message = thrownException->message().details(); + if ( m_wrapColumn > 0 ) + message = StringTools::wrap( message, m_wrapColumn ); + + m_stream << message << std::endl; +} + + +void +CompilerOutputter::printStatistics() +{ + m_stream << "Failures !!!" << std::endl; + m_stream << "Run: " << m_result->runTests() << " " + << "Failure total: " << m_result->testFailuresTotal() << " " + << "Failures: " << m_result->testFailures() << " " + << "Errors: " << m_result->testErrors() + << std::endl; +} + + +void +CompilerOutputter::setWrapColumn( int wrapColumn ) +{ + m_wrapColumn = wrapColumn; +} + + +void +CompilerOutputter::setNoWrap() +{ + m_wrapColumn = 0; +} + + +int +CompilerOutputter::wrapColumn() const +{ + return m_wrapColumn; +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.cpp b/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.cpp new file mode 100644 index 0000000000..6fb306b257 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.cpp @@ -0,0 +1,42 @@ +#include +#include +#include "DefaultProtector.h" + + +CPPUNIT_NS_BEGIN + + +bool +DefaultProtector::protect( const Functor &functor, + const ProtectorContext &context ) +{ + try + { + return functor(); + } + catch ( Exception &failure ) + { + reportFailure( context, failure ); + } + catch ( std::exception &e ) + { + std::string shortDescription( "uncaught exception of type " ); +#if CPPUNIT_USE_TYPEINFO_NAME + shortDescription += TypeInfoHelper::getClassName( typeid(e) ); +#else + shortDescription += "std::exception (or derived)."; +#endif + Message message( shortDescription, e.what() ); + reportError( context, message ); + } + catch ( ... ) + { + reportError( context, + Message( "uncaught exception of unknown type") ); + } + + return false; +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.h b/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.h new file mode 100644 index 0000000000..4a76ea0133 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.h @@ -0,0 +1,27 @@ +#ifndef CPPUNIT_DEFAULTPROTECTOR_H +#define CPPUNIT_DEFAULTPROTECTOR_H + +#include + +CPPUNIT_NS_BEGIN + +/*! \brief Default protector that catch all exceptions (Implementation). + * + * Implementation detail. + * \internal This protector catch and generate a failure for the following + * exception types: + * - Exception + * - std::exception + * - ... + */ +class DefaultProtector : public Protector +{ +public: + bool protect( const Functor &functor, + const ProtectorContext &context ); +}; + +CPPUNIT_NS_END + +#endif // CPPUNIT_DEFAULTPROTECTOR_H + diff --git a/lib/cppunit-1.10.0/src/cppunit/DllMain.cpp b/lib/cppunit-1.10.0/src/cppunit/DllMain.cpp new file mode 100644 index 0000000000..97d14978a5 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/DllMain.cpp @@ -0,0 +1,15 @@ +#define WIN32_LEAN_AND_MEAN +#define NOGDI +#define NOUSER +#define NOKERNEL +#define NOSOUND + +#include + +BOOL APIENTRY +DllMain( HANDLE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved ) +{ + return TRUE; +} diff --git a/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManager.cpp new file mode 100644 index 0000000000..e6f6294553 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManager.cpp @@ -0,0 +1,77 @@ +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) +#include + +CPPUNIT_NS_BEGIN + + +DynamicLibraryManager::DynamicLibraryManager( const std::string &libraryFileName ) + : m_libraryHandle( NULL ) + , m_libraryName( libraryFileName ) +{ + loadLibrary( libraryFileName ); +} + + +DynamicLibraryManager::~DynamicLibraryManager() +{ + releaseLibrary(); +} + + +DynamicLibraryManager::Symbol +DynamicLibraryManager::findSymbol( const std::string &symbol ) +{ + try + { + Symbol symbolPointer = doFindSymbol( symbol ); + if ( symbolPointer != NULL ) + return symbolPointer; + } + catch ( ... ) + { + } + + throw DynamicLibraryManagerException( m_libraryName, + symbol, + DynamicLibraryManagerException::symbolNotFound ); + return NULL; // keep compiler happy +} + + +void +DynamicLibraryManager::loadLibrary( const std::string &libraryName ) +{ + try + { + releaseLibrary(); + m_libraryHandle = doLoadLibrary( libraryName ); + if ( m_libraryHandle != NULL ) + return; + } + catch (...) + { + } + + throw DynamicLibraryManagerException( m_libraryName, + getLastErrorDetail(), + DynamicLibraryManagerException::loadingFailed ); +} + + +void +DynamicLibraryManager::releaseLibrary() +{ + if ( m_libraryHandle != NULL ) + { + doReleaseLibrary(); + m_libraryHandle = NULL; + } +} + + +CPPUNIT_NS_END + + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) diff --git a/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManagerException.cpp b/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManagerException.cpp new file mode 100644 index 0000000000..71bbb761e3 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManagerException.cpp @@ -0,0 +1,41 @@ +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +CPPUNIT_NS_BEGIN + + +DynamicLibraryManagerException::DynamicLibraryManagerException( + const std::string &libraryName, + const std::string &errorDetail, + Cause cause ) + : m_cause( cause ) + , std::runtime_error( "" ) +{ + if ( cause == loadingFailed ) + m_message = "Failed to load dynamic library: " + libraryName + "\n" + + errorDetail; + else + m_message = "Symbol [" + errorDetail + "] not found in dynamic libary:" + + libraryName; +} + + +DynamicLibraryManagerException::Cause +DynamicLibraryManagerException::getCause() const +{ + return m_cause; +} + + +const char * +DynamicLibraryManagerException::what() const throw() +{ + return m_message.c_str(); +} + + +CPPUNIT_NS_END + + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) diff --git a/lib/cppunit-1.10.0/src/cppunit/Exception.cpp b/lib/cppunit-1.10.0/src/cppunit/Exception.cpp new file mode 100644 index 0000000000..3bbe24b9b2 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/Exception.cpp @@ -0,0 +1,126 @@ +#include + + +CPPUNIT_NS_BEGIN + + +#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED +/*! + * \deprecated Use SourceLine::isValid() instead. + */ +const std::string Exception::UNKNOWNFILENAME = ""; + +/*! + * \deprecated Use SourceLine::isValid() instead. + */ +const long Exception::UNKNOWNLINENUMBER = -1; +#endif + + +Exception::Exception( const Exception &other ) + : std::exception( other ) +{ + m_message = other.m_message; + m_sourceLine = other.m_sourceLine; +} + + +Exception::Exception( const Message &message, + const SourceLine &sourceLine ) + : m_message( message ) + , m_sourceLine( sourceLine ) +{ +} + + +#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED +Exception::Exception( std::string message, + long lineNumber, + std::string fileName ) + : m_message( message ) + , m_sourceLine( fileName, lineNumber ) +{ +} +#endif + + +Exception::~Exception() throw() +{ +} + + +Exception & +Exception::operator =( const Exception& other ) +{ +// Don't call superclass operator =(). VC++ STL implementation +// has a bug. It calls the destructor and copy constructor of +// std::exception() which reset the virtual table to std::exception. +// SuperClass::operator =(other); + + if ( &other != this ) + { + m_message = other.m_message; + m_sourceLine = other.m_sourceLine; + } + + return *this; +} + + +const char* +Exception::what() const throw() +{ + Exception *mutableThis = CPPUNIT_CONST_CAST( Exception *, this ); + mutableThis->m_whatMessage = m_message.shortDescription() + "\n" + + m_message.details(); + return m_whatMessage.c_str(); +} + + +SourceLine +Exception::sourceLine() const +{ + return m_sourceLine; +} + + +Message +Exception::message() const +{ + return m_message; +} + + +void +Exception::setMessage( const Message &message ) +{ + m_message = message; +} + + +#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED +long +Exception::lineNumber() const +{ + return m_sourceLine.isValid() ? m_sourceLine.lineNumber() : + UNKNOWNLINENUMBER; +} + + +std::string +Exception::fileName() const +{ + return m_sourceLine.isValid() ? m_sourceLine.fileName() : + UNKNOWNFILENAME; +} +#endif + + +Exception * +Exception::clone() const +{ + return new Exception( *this ); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/Makefile.am b/lib/cppunit-1.10.0/src/cppunit/Makefile.am new file mode 100644 index 0000000000..0f28295c26 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/Makefile.am @@ -0,0 +1,67 @@ +# +# $Id: Makefile.am,v 1.1 2004/08/24 00:21:14 robertc Exp $ +# + +EXTRA_DIST = cppunit.dsp cppunit_dll.dsp DllMain.cpp +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +lib_LTLIBRARIES = libcppunit.la + +libcppunit_la_SOURCES = \ + AdditionalMessage.cpp \ + Asserter.cpp \ + BeOsDynamicLibraryManager.cpp \ + BriefTestProgressListener.cpp \ + CompilerOutputter.cpp \ + DefaultProtector.h \ + DefaultProtector.cpp \ + DynamicLibraryManager.cpp \ + DynamicLibraryManagerException.cpp \ + Exception.cpp \ + Message.cpp \ + RepeatedTest.cpp \ + PlugInManager.cpp \ + PlugInParameters.cpp \ + Protector.cpp \ + ProtectorChain.h \ + ProtectorContext.h \ + ProtectorChain.cpp \ + SourceLine.cpp \ + StringTools.cpp \ + SynchronizedObject.cpp \ + Test.cpp \ + TestAssert.cpp \ + TestCase.cpp \ + TestCaseDecorator.cpp \ + TestComposite.cpp \ + TestDecorator.cpp \ + TestFactoryRegistry.cpp \ + TestFailure.cpp \ + TestLeaf.cpp \ + TestNamer.cpp \ + TestPath.cpp \ + TestPlugInDefaultImpl.cpp \ + TestResult.cpp \ + TestResultCollector.cpp \ + TestRunner.cpp \ + TestSetUp.cpp \ + TestSuccessListener.cpp \ + TestSuite.cpp \ + TestSuiteBuilderContext.cpp \ + TextOutputter.cpp \ + TextTestProgressListener.cpp \ + TextTestResult.cpp \ + TextTestRunner.cpp \ + TypeInfoHelper.cpp \ + UnixDynamicLibraryManager.cpp \ + ShlDynamicLibraryManager.cpp \ + XmlDocument.cpp \ + XmlElement.cpp \ + XmlOutputter.cpp \ + XmlOutputterHook.cpp \ + Win32DynamicLibraryManager.cpp + +libcppunit_la_LDFLAGS= \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -release $(LT_RELEASE) + diff --git a/lib/cppunit-1.10.0/src/cppunit/Makefile.in b/lib/cppunit-1.10.0/src/cppunit/Makefile.in new file mode 100644 index 0000000000..3bcbc98bad --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/Makefile.in @@ -0,0 +1,633 @@ +# Makefile.in generated by automake 1.7.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# 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@ + +# +# $Id: Makefile.in,v 1.1 2004/08/24 00:21:14 robertc Exp $ +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@ +CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@ +CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@ +CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@ +CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@ +CPPUNIT_VERSION = @CPPUNIT_VERSION@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOC_FALSE = @DOC_FALSE@ +DOC_TRUE = @DOC_TRUE@ +DOT = @DOT@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBADD_DL = @LIBADD_DL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +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@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +enable_dot = @enable_dot@ +enable_html_docs = @enable_html_docs@ +enable_latex_docs = @enable_latex_docs@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +EXTRA_DIST = cppunit.dsp cppunit_dll.dsp DllMain.cpp +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + +lib_LTLIBRARIES = libcppunit.la + +libcppunit_la_SOURCES = \ + AdditionalMessage.cpp \ + Asserter.cpp \ + BeOsDynamicLibraryManager.cpp \ + BriefTestProgressListener.cpp \ + CompilerOutputter.cpp \ + DefaultProtector.h \ + DefaultProtector.cpp \ + DynamicLibraryManager.cpp \ + DynamicLibraryManagerException.cpp \ + Exception.cpp \ + Message.cpp \ + RepeatedTest.cpp \ + PlugInManager.cpp \ + PlugInParameters.cpp \ + Protector.cpp \ + ProtectorChain.h \ + ProtectorContext.h \ + ProtectorChain.cpp \ + SourceLine.cpp \ + StringTools.cpp \ + SynchronizedObject.cpp \ + Test.cpp \ + TestAssert.cpp \ + TestCase.cpp \ + TestCaseDecorator.cpp \ + TestComposite.cpp \ + TestDecorator.cpp \ + TestFactoryRegistry.cpp \ + TestFailure.cpp \ + TestLeaf.cpp \ + TestNamer.cpp \ + TestPath.cpp \ + TestPlugInDefaultImpl.cpp \ + TestResult.cpp \ + TestResultCollector.cpp \ + TestRunner.cpp \ + TestSetUp.cpp \ + TestSuccessListener.cpp \ + TestSuite.cpp \ + TestSuiteBuilderContext.cpp \ + TextOutputter.cpp \ + TextTestProgressListener.cpp \ + TextTestResult.cpp \ + TextTestRunner.cpp \ + TypeInfoHelper.cpp \ + UnixDynamicLibraryManager.cpp \ + ShlDynamicLibraryManager.cpp \ + XmlDocument.cpp \ + XmlElement.cpp \ + XmlOutputter.cpp \ + XmlOutputterHook.cpp \ + Win32DynamicLibraryManager.cpp + + +libcppunit_la_LDFLAGS = \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -release $(LT_RELEASE) + +subdir = src/cppunit +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config/config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(lib_LTLIBRARIES) + +libcppunit_la_LIBADD = +am_libcppunit_la_OBJECTS = AdditionalMessage.lo Asserter.lo \ + BeOsDynamicLibraryManager.lo BriefTestProgressListener.lo \ + CompilerOutputter.lo DefaultProtector.lo \ + DynamicLibraryManager.lo DynamicLibraryManagerException.lo \ + Exception.lo Message.lo RepeatedTest.lo PlugInManager.lo \ + PlugInParameters.lo Protector.lo ProtectorChain.lo \ + SourceLine.lo StringTools.lo SynchronizedObject.lo Test.lo \ + TestAssert.lo TestCase.lo TestCaseDecorator.lo TestComposite.lo \ + TestDecorator.lo TestFactoryRegistry.lo TestFailure.lo \ + TestLeaf.lo TestNamer.lo TestPath.lo TestPlugInDefaultImpl.lo \ + TestResult.lo TestResultCollector.lo TestRunner.lo TestSetUp.lo \ + TestSuccessListener.lo TestSuite.lo TestSuiteBuilderContext.lo \ + TextOutputter.lo TextTestProgressListener.lo TextTestResult.lo \ + TextTestRunner.lo TypeInfoHelper.lo \ + UnixDynamicLibraryManager.lo ShlDynamicLibraryManager.lo \ + XmlDocument.lo XmlElement.lo XmlOutputter.lo \ + XmlOutputterHook.lo Win32DynamicLibraryManager.lo +libcppunit_la_OBJECTS = $(am_libcppunit_la_OBJECTS) + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/AdditionalMessage.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/Asserter.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/BeOsDynamicLibraryManager.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/BriefTestProgressListener.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/CompilerOutputter.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/DefaultProtector.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/DynamicLibraryManager.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/DynamicLibraryManagerException.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/Exception.Plo ./$(DEPDIR)/Message.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/PlugInManager.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/PlugInParameters.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/Protector.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/ProtectorChain.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/RepeatedTest.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/ShlDynamicLibraryManager.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/SourceLine.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/StringTools.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/SynchronizedObject.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/Test.Plo ./$(DEPDIR)/TestAssert.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestCase.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestCaseDecorator.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestComposite.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestDecorator.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestFactoryRegistry.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestFailure.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestLeaf.Plo ./$(DEPDIR)/TestNamer.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestPath.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestPlugInDefaultImpl.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestResult.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestResultCollector.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestRunner.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestSetUp.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestSuccessListener.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestSuite.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TestSuiteBuilderContext.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TextOutputter.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TextTestProgressListener.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TextTestResult.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TextTestRunner.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/TypeInfoHelper.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/UnixDynamicLibraryManager.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/Win32DynamicLibraryManager.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/XmlDocument.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/XmlElement.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/XmlOutputter.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/XmlOutputterHook.Plo +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(libcppunit_la_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(libcppunit_la_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/cppunit/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libLTLIBRARIES_INSTALL = $(INSTALL) +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ + 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 +libcppunit.la: $(libcppunit_la_OBJECTS) $(libcppunit_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libcppunit_la_LDFLAGS) $(libcppunit_la_OBJECTS) $(libcppunit_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AdditionalMessage.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Asserter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BeOsDynamicLibraryManager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BriefTestProgressListener.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CompilerOutputter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultProtector.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DynamicLibraryManager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DynamicLibraryManagerException.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exception.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Message.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PlugInManager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PlugInParameters.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Protector.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ProtectorChain.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RepeatedTest.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShlDynamicLibraryManager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SourceLine.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StringTools.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SynchronizedObject.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestAssert.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestCase.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestCaseDecorator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestComposite.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestDecorator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestFactoryRegistry.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestFailure.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestLeaf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestNamer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestPath.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestPlugInDefaultImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestResult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestResultCollector.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestRunner.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSetUp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuccessListener.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuite.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuiteBuilderContext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextOutputter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextTestProgressListener.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextTestResult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextTestRunner.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TypeInfoHelper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnixDynamicLibraryManager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Win32DynamicLibraryManager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlDocument.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlElement.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlOutputter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlOutputterHook.Plo@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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: + $(mkinstalldirs) $(DESTDIR)$(libdir) +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_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 + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-libLTLIBRARIES + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-depend distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libLTLIBRARIES install-man 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-info-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: diff --git a/lib/cppunit-1.10.0/src/cppunit/Message.cpp b/lib/cppunit-1.10.0/src/cppunit/Message.cpp new file mode 100644 index 0000000000..85f235e199 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/Message.cpp @@ -0,0 +1,149 @@ +#include +#include + + +CPPUNIT_NS_BEGIN + + +Message::Message() +{ +} + + +Message::Message( const std::string &shortDescription ) + : m_shortDescription( shortDescription ) +{ +} + + +Message::Message( const std::string &shortDescription, + const std::string &detail1 ) + : m_shortDescription( shortDescription ) +{ + addDetail( detail1 ); +} + + +Message::Message( const std::string &shortDescription, + const std::string &detail1, + const std::string &detail2 ) + : m_shortDescription( shortDescription ) +{ + addDetail( detail1, detail2 ); +} + + +Message::Message( const std::string &shortDescription, + const std::string &detail1, + const std::string &detail2, + const std::string &detail3 ) + : m_shortDescription( shortDescription ) +{ + addDetail( detail1, detail2, detail3 ); +} + + +const std::string & +Message::shortDescription() const +{ + return m_shortDescription; +} + + +int +Message::detailCount() const +{ + return m_details.size(); +} + + +std::string +Message::detailAt( int index ) const +{ + if ( index < 0 || index >= detailCount() ) + throw std::invalid_argument( "Message::detailAt() : invalid index" ); + + return m_details[ index ]; +} + + +std::string +Message::details() const +{ + std::string details; + for ( Details::const_iterator it = m_details.begin(); it != m_details.end(); ++it ) + { + details += "- "; + details += *it; + details += '\n'; + } + return details; +} + + +void +Message::clearDetails() +{ + m_details.clear(); +} + + +void +Message::addDetail( const std::string &detail ) +{ + m_details.push_back( detail ); +} + + +void +Message::addDetail( const std::string &detail1, + const std::string &detail2 ) +{ + addDetail( detail1 ); + addDetail( detail2 ); +} + + +void +Message::addDetail( const std::string &detail1, + const std::string &detail2, + const std::string &detail3 ) +{ + addDetail( detail1, detail2 ); + addDetail( detail3 ); +} + + +void +Message::addDetail( const Message &message ) +{ + m_details.insert( m_details.end(), + message.m_details.begin(), + message.m_details.end() ); +} + + +void +Message::setShortDescription( const std::string &shortDescription ) +{ + m_shortDescription = shortDescription; +} + + +bool +Message::operator ==( const Message &other ) const +{ + return m_shortDescription == other.m_shortDescription && + m_details == other.m_details; +} + + +bool +Message::operator !=( const Message &other ) const +{ + return !( *this == other ); +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/PlugInManager.cpp b/lib/cppunit-1.10.0/src/cppunit/PlugInManager.cpp new file mode 100644 index 0000000000..2a5eaf9d95 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/PlugInManager.cpp @@ -0,0 +1,109 @@ +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +PlugInManager::PlugInManager() +{ +} + + +PlugInManager::~PlugInManager() +{ + for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it ) + unload( *it ); +} + + +void +PlugInManager::load( const std::string &libraryFileName, + const PlugInParameters ¶meters ) +{ + PlugInInfo info; + info.m_fileName = libraryFileName; + info.m_manager = new DynamicLibraryManager( libraryFileName ); + + TestPlugInSignature plug = (TestPlugInSignature)info.m_manager->findSymbol( + CPPUNIT_STRINGIZE( CPPUNIT_PLUGIN_EXPORTED_NAME ) ); + info.m_interface = (*plug)(); + + m_plugIns.push_back( info ); + + info.m_interface->initialize( &TestFactoryRegistry::getRegistry(), parameters ); +} + + +void +PlugInManager::unload( const std::string &libraryFileName ) +{ + for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it ) + { + if ( (*it).m_fileName == libraryFileName ) + { + unload( *it ); + m_plugIns.erase( it ); + break; + } + } +} + + +void +PlugInManager::addListener( TestResult *eventManager ) +{ + for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it ) + (*it).m_interface->addListener( eventManager ); +} + + +void +PlugInManager::removeListener( TestResult *eventManager ) +{ + for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it ) + (*it).m_interface->removeListener( eventManager ); +} + + +void +PlugInManager::unload( PlugInInfo &plugIn ) +{ + try + { + plugIn.m_interface->uninitialize( &TestFactoryRegistry::getRegistry() ); + delete plugIn.m_manager; + } + catch (...) + { + delete plugIn.m_manager; + plugIn.m_manager = NULL; + throw; + } +} + + +void +PlugInManager::addXmlOutputterHooks( XmlOutputter *outputter ) +{ + for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it ) + (*it).m_interface->addXmlOutputterHooks( outputter ); +} + + +void +PlugInManager::removeXmlOutputterHooks() +{ + for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it ) + (*it).m_interface->removeXmlOutputterHooks(); +} + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) diff --git a/lib/cppunit-1.10.0/src/cppunit/PlugInParameters.cpp b/lib/cppunit-1.10.0/src/cppunit/PlugInParameters.cpp new file mode 100644 index 0000000000..1b532f9fa2 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/PlugInParameters.cpp @@ -0,0 +1,28 @@ +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +CPPUNIT_NS_BEGIN + + +PlugInParameters::PlugInParameters( const std::string &commandLine ) + : m_commandLine( commandLine ) +{ +} + + +PlugInParameters::~PlugInParameters() +{ +} + + +std::string +PlugInParameters::getCommandLine() const +{ + return m_commandLine; +} + + +CPPUNIT_NS_END + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) diff --git a/lib/cppunit-1.10.0/src/cppunit/Protector.cpp b/lib/cppunit-1.10.0/src/cppunit/Protector.cpp new file mode 100644 index 0000000000..5c171ec462 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/Protector.cpp @@ -0,0 +1,86 @@ +#include +#include +#include +#include +#include "ProtectorContext.h" +#include + +CPPUNIT_NS_BEGIN + +Functor::~Functor() +{ +} + + +Protector::~Protector() +{ +} + + +void +Protector::reportError( const ProtectorContext &context, + const Exception &error ) const +{ + std::auto_ptr actualError( error.clone() ); + actualError->setMessage( actualMessage( actualError->message(), context ) ); + context.m_result->addError( context.m_test, + actualError.release() ); +} + + + +void +Protector::reportError( const ProtectorContext &context, + const Message &message, + const SourceLine &sourceLine ) const +{ + reportError( context, Exception( message, sourceLine ) ); +} + + +void +Protector::reportFailure( const ProtectorContext &context, + const Exception &failure ) const +{ + std::auto_ptr actualFailure( failure.clone() ); + actualFailure->setMessage( actualMessage( actualFailure->message(), context ) ); + context.m_result->addFailure( context.m_test, + actualFailure.release() ); +} + + +Message +Protector::actualMessage( const Message &message, + const ProtectorContext &context ) const +{ + Message theActualMessage; + if ( context.m_shortDescription.empty() ) + theActualMessage = message; + else + { + theActualMessage = Message( context.m_shortDescription, + message.shortDescription() ); + theActualMessage.addDetail( message ); + } + + return theActualMessage; +} + + + + +ProtectorGuard::ProtectorGuard( TestResult *result, + Protector *protector ) + : m_result( result ) +{ + m_result->pushProtector( protector ); +} + + +ProtectorGuard::~ProtectorGuard() +{ + m_result->popProtector(); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.cpp b/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.cpp new file mode 100644 index 0000000000..f528341eb1 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.cpp @@ -0,0 +1,86 @@ +#include "ProtectorChain.h" + +CPPUNIT_NS_BEGIN + + +class ProtectorChain::ProtectFunctor : public Functor +{ +public: + ProtectFunctor( Protector *protector, + const Functor &functor, + const ProtectorContext &context ) + : m_protector( protector ) + , m_functor( functor ) + , m_context( context ) + { + } + + bool operator()() const + { + return m_protector->protect( m_functor, m_context ); + } + +private: + Protector *m_protector; + const Functor &m_functor; + const ProtectorContext &m_context; +}; + + +ProtectorChain::~ProtectorChain() +{ + while ( count() > 0 ) + pop(); +} + + +void +ProtectorChain::push( Protector *protector ) +{ + m_protectors.push_back( protector ); +} + + +void +ProtectorChain::pop() +{ + delete m_protectors.back(); + m_protectors.pop_back(); +} + +int +ProtectorChain::count() const +{ + return m_protectors.size(); +} + + +bool +ProtectorChain::protect( const Functor &functor, + const ProtectorContext &context ) +{ + if ( m_protectors.empty() ) + return functor(); + + Functors functors; + for ( int index = m_protectors.size()-1; index >= 0; --index ) + { + const Functor &protectedFunctor = + functors.empty() ? functor : *functors.back(); + + functors.push_back( new ProtectFunctor( m_protectors[index], + protectedFunctor, + context ) ); + } + + const Functor &outermostFunctor = *functors.back(); + bool succeed = outermostFunctor(); + + for ( unsigned int deletingIndex = 0; deletingIndex < m_protectors.size(); ++deletingIndex ) + delete functors[deletingIndex]; + + return succeed; +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.h b/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.h new file mode 100644 index 0000000000..711b56fbc7 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.h @@ -0,0 +1,51 @@ +#ifndef CPPUNIT_PROTECTORCHAIN_H +#define CPPUNIT_PROTECTORCHAIN_H + +#include +#include + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( push ) +#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z +#endif + + +CPPUNIT_NS_BEGIN + +/*! \brief Protector chain (Implementation). + * Implementation detail. + * \internal Protector that protect a Functor using a chain of nested Protector. + */ +class CPPUNIT_API ProtectorChain : public Protector +{ +public: + ~ProtectorChain(); + + void push( Protector *protector ); + + void pop(); + + int count() const; + + bool protect( const Functor &functor, + const ProtectorContext &context ); + +private: + class ProtectFunctor; + +private: + typedef CppUnitDeque Protectors; + Protectors m_protectors; + + typedef CppUnitDeque Functors; +}; + + +CPPUNIT_NS_END + +#if CPPUNIT_NEED_DLL_DECL +#pragma warning( pop ) +#endif + +#endif // CPPUNIT_PROTECTORCHAIN_H + diff --git a/lib/cppunit-1.10.0/src/cppunit/ProtectorContext.h b/lib/cppunit-1.10.0/src/cppunit/ProtectorContext.h new file mode 100644 index 0000000000..c3d496c49c --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/ProtectorContext.h @@ -0,0 +1,38 @@ +#ifndef CPPUNIT_PROTECTORCONTEXT_H +#define CPPUNIT_PROTECTORCONTEXT_H + +#include +#include + +CPPUNIT_NS_BEGIN + +class Test; +class TestResult; + + +/*! \brief Protector context (Implementation). + * Implementation detail. + * \internal Context use to report failure in Protector. + */ +class CPPUNIT_API ProtectorContext +{ +public: + ProtectorContext( Test *test, + TestResult *result, + const std::string &shortDescription ) + : m_test( test ) + , m_result( result ) + , m_shortDescription( shortDescription ) + { + } + + Test *m_test; + TestResult *m_result; + std::string m_shortDescription; +}; + + +CPPUNIT_NS_END + +#endif // CPPUNIT_PROTECTORCONTEXT_H + diff --git a/lib/cppunit-1.10.0/src/cppunit/RepeatedTest.cpp b/lib/cppunit-1.10.0/src/cppunit/RepeatedTest.cpp new file mode 100644 index 0000000000..2533ca1d9a --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/RepeatedTest.cpp @@ -0,0 +1,29 @@ +#include +#include + +CPPUNIT_NS_BEGIN + + +// Counts the number of test cases that will be run by this test. +int +RepeatedTest::countTestCases() const +{ + return TestDecorator::countTestCases() * m_timesRepeat; +} + + +// Runs a repeated test +void +RepeatedTest::run( TestResult *result ) +{ + for ( int n = 0; n < m_timesRepeat; n++ ) + { + if ( result->shouldStop() ) + break; + + TestDecorator::run( result ); + } +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/ShlDynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/ShlDynamicLibraryManager.cpp new file mode 100644 index 0000000000..9f4be22772 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/ShlDynamicLibraryManager.cpp @@ -0,0 +1,53 @@ +#include + +#if defined(CPPUNIT_HAVE_UNIX_SHL_LOADER) +#include + +#include +#include + + +CPPUNIT_NS_BEGIN + + +DynamicLibraryManager::LibraryHandle +DynamicLibraryManager::doLoadLibrary( const std::string &libraryName ) +{ + return ::shl_load(libraryName.c_str(), BIND_IMMEDIATE, 0L); +} + + +void +DynamicLibraryManager::doReleaseLibrary() +{ + ::shl_unload( (shl_t)m_libraryHandle); +} + + +DynamicLibraryManager::Symbol +DynamicLibraryManager::doFindSymbol( const std::string &symbol ) +{ + DynamicLibraryManager::Symbol L_symaddr = 0; + if ( ::shl_findsym( (shl_t*)(&m_libraryHandle), + symbol.c_str(), + TYPE_UNDEFINED, + &L_symaddr ) == 0 ) + { + return L_symaddr; + } + + return 0; +} + + +std::string +DynamicLibraryManager::getLastErrorDetail() const +{ + return ""; +} + + +CPPUNIT_NS_END + + +#endif // defined(CPPUNIT_HAVE_UNIX_SHL_LOADER) diff --git a/lib/cppunit-1.10.0/src/cppunit/SourceLine.cpp b/lib/cppunit-1.10.0/src/cppunit/SourceLine.cpp new file mode 100644 index 0000000000..bd70709f4a --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/SourceLine.cpp @@ -0,0 +1,62 @@ +#include + + +CPPUNIT_NS_BEGIN + + +SourceLine::SourceLine() : + m_lineNumber( -1 ) +{ +} + + +SourceLine::SourceLine( const std::string &fileName, + int lineNumber ) : + m_fileName( fileName ), + m_lineNumber( lineNumber ) +{ +} + + +SourceLine::~SourceLine() +{ +} + + +bool +SourceLine::isValid() const +{ + return !m_fileName.empty(); +} + + +int +SourceLine::lineNumber() const +{ + return m_lineNumber; +} + + +std::string +SourceLine::fileName() const +{ + return m_fileName; +} + + +bool +SourceLine::operator ==( const SourceLine &other ) const +{ + return m_fileName == other.m_fileName && + m_lineNumber == other.m_lineNumber; +} + + +bool +SourceLine::operator !=( const SourceLine &other ) const +{ + return !( *this == other ); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/StringTools.cpp b/lib/cppunit-1.10.0/src/cppunit/StringTools.cpp new file mode 100644 index 0000000000..2f77d24e25 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/StringTools.cpp @@ -0,0 +1,79 @@ +#include +#include + + +CPPUNIT_NS_BEGIN + + +std::string +StringTools::toString( int value ) +{ + OStringStream stream; + stream << value; + return stream.str(); +} + + +std::string +StringTools::toString( double value ) +{ + OStringStream stream; + stream << value; + return stream.str(); +} + + +StringTools::Strings +StringTools::split( const std::string &text, + char separator ) +{ + Strings splittedText; + + std::string::const_iterator itStart = text.begin(); + while ( !text.empty() ) + { + std::string::const_iterator itSeparator = std::find( itStart, + text.end(), + separator ); + splittedText.push_back( text.substr( itStart - text.begin(), + itSeparator - itStart ) ); + if ( itSeparator == text.end() ) + break; + itStart = itSeparator +1; + } + + return splittedText; +} + + +std::string +StringTools::wrap( const std::string &text, + int wrapColumn ) +{ + const char lineBreak = '\n'; + Strings lines = split( text, lineBreak ); + + std::string wrapped; + for ( Strings::const_iterator it = lines.begin(); it != lines.end(); ++it ) + { + if ( it != lines.begin() ) + wrapped += lineBreak; + + const std::string &line = *it; + unsigned int index =0; + while ( index < line.length() ) + { + std::string lineSlice( line.substr( index, wrapColumn ) ); + wrapped += lineSlice; + index += wrapColumn; + if ( index < line.length() ) + wrapped += lineBreak; + } + } + + return wrapped; +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/SynchronizedObject.cpp b/lib/cppunit-1.10.0/src/cppunit/SynchronizedObject.cpp new file mode 100644 index 0000000000..1764538e59 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/SynchronizedObject.cpp @@ -0,0 +1,32 @@ +#include + + +CPPUNIT_NS_BEGIN + + +SynchronizedObject::SynchronizedObject( SynchronizationObject *syncObject ) + : m_syncObject( syncObject == 0 ? new SynchronizationObject() : + syncObject ) +{ +} + + +SynchronizedObject::~SynchronizedObject() +{ + delete m_syncObject; +} + + +/** Accept a new synchronization object for protection of this instance + * TestResult assumes ownership of the object + */ +void +SynchronizedObject::setSynchronizationObject( SynchronizationObject *syncObject ) +{ + delete m_syncObject; + m_syncObject = syncObject; +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/Test.cpp b/lib/cppunit-1.10.0/src/cppunit/Test.cpp new file mode 100644 index 0000000000..fef8be7939 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/Test.cpp @@ -0,0 +1,97 @@ +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +Test * +Test::getChildTestAt( int index ) const +{ + checkIsValidIndex( index ); + return doGetChildTestAt( index ); +} + + +Test * +Test::findTest( const std::string &testName ) const +{ + TestPath path; + Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this ); + mutableThis->findTestPath( testName, path ); + if ( !path.isValid() ) + throw std::invalid_argument( "No test named <" + testName + "> found in test <" + + getName() + ">." ); + return path.getChildTest(); +} + + +bool +Test::findTestPath( const std::string &testName, + TestPath &testPath ) const +{ + Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this ); + if ( getName() == testName ) + { + testPath.add( mutableThis ); + return true; + } + + int childCount = getChildTestCount(); + for ( int childIndex =0; childIndex < childCount; ++childIndex ) + { + if ( getChildTestAt( childIndex )->findTestPath( testName, testPath ) ) + { + testPath.insert( mutableThis, 0 ); + return true; + } + } + + return false; +} + + +bool +Test::findTestPath( const Test *test, + TestPath &testPath ) const +{ + Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this ); + if ( this == test ) + { + testPath.add( mutableThis ); + return true; + } + + int childCount = getChildTestCount(); + for ( int childIndex =0; childIndex < childCount; ++childIndex ) + { + if ( getChildTestAt( childIndex )->findTestPath( test, testPath ) ) + { + testPath.insert( mutableThis, 0 ); + return true; + } + } + + return false; +} + + +TestPath +Test::resolveTestPath( const std::string &testPath ) const +{ + Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this ); + return TestPath( mutableThis, testPath ); +} + + +void +Test::checkIsValidIndex( int index ) const +{ + if ( index < 0 || index >= getChildTestCount() ) + throw std::out_of_range( "Test::checkValidIndex(): invalid index" ); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestAssert.cpp b/lib/cppunit-1.10.0/src/cppunit/TestAssert.cpp new file mode 100644 index 0000000000..484f37222f --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestAssert.cpp @@ -0,0 +1,26 @@ +#if HAVE_CMATH +# include +#else +# include +#endif + +#include + + +CPPUNIT_NS_BEGIN + + +void +assertDoubleEquals( double expected, + double actual, + double delta, + SourceLine sourceLine ) +{ + Asserter::failNotEqualIf( fabs( expected - actual ) > delta, + assertion_traits::toString(expected), + assertion_traits::toString(actual), + sourceLine ); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestCase.cpp b/lib/cppunit-1.10.0/src/cppunit/TestCase.cpp new file mode 100644 index 0000000000..13c05257f6 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestCase.cpp @@ -0,0 +1,137 @@ +#include +#include +#include +#include +#include +#include + +#if CPPUNIT_USE_TYPEINFO_NAME +# include +#endif + +CPPUNIT_NS_BEGIN + +/*! \brief Functor to call test case method (Implementation). + * + * Implementation detail. + */ +class TestCaseMethodFunctor : public Functor +{ +public: + typedef void (TestCase::*Method)(); + + TestCaseMethodFunctor( TestCase *target, + Method method ) + : m_target( target ) + , m_method( method ) + { + } + + bool operator()() const + { + (m_target->*m_method)(); + return true; + } + +private: + TestCase *m_target; + Method m_method; +}; + + +/** Constructs a test case. + * \param name the name of the TestCase. + **/ +TestCase::TestCase( const std::string &name ) + : m_name(name) +{ +} + + +/// Run the test and catch any exceptions that are triggered by it +void +TestCase::run( TestResult *result ) +{ + result->startTest(this); +/* + try { + setUp(); + + try { + runTest(); + } + catch ( Exception &e ) { + Exception *copy = e.clone(); + result->addFailure( this, copy ); + } + catch ( std::exception &e ) { + result->addError( this, new Exception( Message( "uncaught std::exception", + e.what() ) ) ); + } + catch (...) { + Exception *e = new Exception( Message( "uncaught unknown exception" ) ); + result->addError( this, e ); + } + + try { + tearDown(); + } + catch (...) { + result->addError( this, new Exception( Message( "tearDown() failed" ) ) ); + } + } + catch (...) { + result->addError( this, new Exception( Message( "setUp() failed" ) ) ); + } +*/ + if ( result->protect( TestCaseMethodFunctor( this, &TestCase::setUp ), + this, + "setUp() failed" ) ) + { + result->protect( TestCaseMethodFunctor( this, &TestCase::runTest ), + this ); + } + + result->protect( TestCaseMethodFunctor( this, &TestCase::tearDown ), + this, + "tearDown() failed" ); + + result->endTest( this ); +} + + +/// All the work for runTest is deferred to subclasses +void +TestCase::runTest() +{ +} + + +/** Constructs a test case for a suite. + * \deprecated This constructor was used by fixture when TestFixture did not exist. + * Have your fixture inherits TestFixture instead of TestCase. + * \internal + * This TestCase was intended for use by the TestCaller and should not + * be used by a test case for which run() is called. + **/ +TestCase::TestCase() + : m_name( "" ) +{ +} + + +/// Destructs a test case +TestCase::~TestCase() +{ +} + + +/// Returns the name of the test case +std::string +TestCase::getName() const +{ + return m_name; +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestCaseDecorator.cpp b/lib/cppunit-1.10.0/src/cppunit/TestCaseDecorator.cpp new file mode 100644 index 0000000000..4fb8f80d93 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestCaseDecorator.cpp @@ -0,0 +1,47 @@ +#include + +CPPUNIT_NS_BEGIN + + +TestCaseDecorator::TestCaseDecorator( TestCase *test ) + : m_test( test ) + , TestCase( test->getName() ) +{ +} + + +TestCaseDecorator::~TestCaseDecorator() +{ + delete m_test; +} + + +std::string +TestCaseDecorator::getName() const +{ + return m_test->getName(); +} + + +void +TestCaseDecorator::setUp() +{ + m_test->setUp(); +} + + +void +TestCaseDecorator::tearDown() +{ + m_test->tearDown(); +} + + +void +TestCaseDecorator::runTest() +{ + m_test->runTest(); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestComposite.cpp b/lib/cppunit-1.10.0/src/cppunit/TestComposite.cpp new file mode 100644 index 0000000000..4768791b57 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestComposite.cpp @@ -0,0 +1,77 @@ +#include +#include + + +CPPUNIT_NS_BEGIN + + +TestComposite::TestComposite( const std::string &name ) + : m_name( name ) +{ +} + + +TestComposite::~TestComposite() +{ +} + + +void +TestComposite::run( TestResult *result ) +{ + doStartSuite( result ); + doRunChildTests( result ); + doEndSuite( result ); +} + + +int +TestComposite::countTestCases() const +{ + int count = 0; + + int childCount = getChildTestCount(); + for ( int index =0; index < childCount; ++index ) + count += getChildTestAt( index )->countTestCases(); + + return count; +} + + +std::string +TestComposite::getName() const +{ + return m_name; +} + + +void +TestComposite::doStartSuite( TestResult *controller ) +{ + controller->startSuite( this ); +} + + +void +TestComposite::doRunChildTests( TestResult *controller ) +{ + int childCount = getChildTestCount(); + for ( int index =0; index < childCount; ++index ) + { + if ( controller->shouldStop() ) + break; + + getChildTestAt( index )->run( controller ); + } +} + + +void +TestComposite::doEndSuite( TestResult *controller ) +{ + controller->endSuite( this ); +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/TestDecorator.cpp b/lib/cppunit-1.10.0/src/cppunit/TestDecorator.cpp new file mode 100644 index 0000000000..4e25a6af9b --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestDecorator.cpp @@ -0,0 +1,53 @@ +#include + +CPPUNIT_NS_BEGIN + + +TestDecorator::TestDecorator( Test *test ) + : m_test( test) +{ +} + + +TestDecorator::~TestDecorator() +{ + delete m_test; +} + + +int +TestDecorator::countTestCases() const +{ + return m_test->countTestCases(); +} + + +void +TestDecorator::run( TestResult *result ) +{ + m_test->run(result); +} + + +std::string +TestDecorator::getName() const +{ + return m_test->getName(); +} + + +int +TestDecorator::getChildTestCount() const +{ + return m_test->getChildTestCount(); +} + + +Test * +TestDecorator::doGetChildTestAt( int index ) const +{ + return m_test->getChildTestAt( index ); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestFactoryRegistry.cpp b/lib/cppunit-1.10.0/src/cppunit/TestFactoryRegistry.cpp new file mode 100644 index 0000000000..d0339a92b0 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestFactoryRegistry.cpp @@ -0,0 +1,160 @@ +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + +/*! \brief (INTERNAL) List of all TestFactoryRegistry. + */ +class TestFactoryRegistryList +{ +private: + typedef CppUnitMap > Registries; + Registries m_registries; + + enum State { + doNotChange =0, + notCreated, + exist, + destroyed + }; + + static State stateFlag( State newState = doNotChange ) + { + static State state = notCreated; + if ( newState != doNotChange ) + state = newState; + return state; + } + + static TestFactoryRegistryList *getInstance() + { + static TestFactoryRegistryList list; + return &list; + } + + TestFactoryRegistry *getInternalRegistry( const std::string &name ) + { + Registries::const_iterator foundIt = m_registries.find( name ); + if ( foundIt == m_registries.end() ) + { + TestFactoryRegistry *factory = new TestFactoryRegistry( name ); + m_registries.insert( std::pair( name, factory ) ); + return factory; + } + return (*foundIt).second; + } + +public: + TestFactoryRegistryList() + { + stateFlag( exist ); + } + + ~TestFactoryRegistryList() + { + for ( Registries::iterator it = m_registries.begin(); it != m_registries.end(); ++it ) + delete (*it).second; + + stateFlag( destroyed ); + } + + static TestFactoryRegistry *getRegistry( const std::string &name ) + { + // If the following assertion failed, then TestFactoryRegistry::getRegistry() + // was called during static variable destruction without checking the registry + // validity beforehand using TestFactoryRegistry::isValid() beforehand. + assert( isValid() ); + if ( !isValid() ) // release mode + return NULL; // => force CRASH + + return getInstance()->getInternalRegistry( name ); + } + + static bool isValid() + { + return stateFlag() != destroyed; + } +}; + + + +TestFactoryRegistry::TestFactoryRegistry( std::string name ) : + m_name( name ) +{ +} + + +TestFactoryRegistry::~TestFactoryRegistry() +{ +} + + +TestFactoryRegistry & +TestFactoryRegistry::getRegistry( const std::string &name ) +{ + return *TestFactoryRegistryList::getRegistry( name ); +} + + +void +TestFactoryRegistry::registerFactory( const std::string &name, + TestFactory *factory ) +{ + registerFactory( factory ); +} + + +void +TestFactoryRegistry::registerFactory( TestFactory *factory ) +{ + m_factories.insert( factory ); +} + + +void +TestFactoryRegistry::unregisterFactory( TestFactory *factory ) +{ + m_factories.erase( factory ); +} + + +void +TestFactoryRegistry::addRegistry( const std::string &name ) +{ + registerFactory( &getRegistry( name ) ); +} + + +Test * +TestFactoryRegistry::makeTest() +{ + TestSuite *suite = new TestSuite( m_name ); + addTestToSuite( suite ); + return suite; +} + + +void +TestFactoryRegistry::addTestToSuite( TestSuite *suite ) +{ + for ( Factories::iterator it = m_factories.begin(); + it != m_factories.end(); + ++it ) + { + TestFactory *factory = *it; + suite->addTest( factory->makeTest() ); + } +} + + +bool +TestFactoryRegistry::isValid() +{ + return TestFactoryRegistryList::isValid(); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestFailure.cpp b/lib/cppunit-1.10.0/src/cppunit/TestFailure.cpp new file mode 100644 index 0000000000..e31e138938 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestFailure.cpp @@ -0,0 +1,71 @@ +#include +#include +#include + +CPPUNIT_NS_BEGIN + + +/// Constructs a TestFailure with the given test and exception. +TestFailure::TestFailure( Test *failedTest, + Exception *thrownException, + bool isError ) : + m_failedTest( failedTest ), + m_thrownException( thrownException ), + m_isError( isError ) +{ +} + +/// Deletes the owned exception. +TestFailure::~TestFailure() +{ + delete m_thrownException; +} + +/// Gets the failed test. +Test * +TestFailure::failedTest() const +{ + return m_failedTest; +} + + +/// Gets the thrown exception. Never \c NULL. +Exception * +TestFailure::thrownException() const +{ + return m_thrownException; +} + + +/// Gets the failure location. +SourceLine +TestFailure::sourceLine() const +{ + return m_thrownException->sourceLine(); +} + + +/// Indicates if the failure is a failed assertion or an error. +bool +TestFailure::isError() const +{ + return m_isError; +} + + +/// Gets the name of the failed test. +std::string +TestFailure::failedTestName() const +{ + return m_failedTest->getName(); +} + + +TestFailure * +TestFailure::clone() const +{ + return new TestFailure( m_failedTest, m_thrownException->clone(), m_isError ); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestLeaf.cpp b/lib/cppunit-1.10.0/src/cppunit/TestLeaf.cpp new file mode 100644 index 0000000000..3d8767cf52 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestLeaf.cpp @@ -0,0 +1,28 @@ +#include + + +CPPUNIT_NS_BEGIN + + +int +TestLeaf::countTestCases() const +{ + return 1; +} + + +int +TestLeaf::getChildTestCount() const +{ + return 0; +} + + +Test * +TestLeaf::doGetChildTestAt( int index ) const +{ + checkIsValidIndex( index ); + return NULL; // never called, checkIsValidIndex() always throw. +} + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestNamer.cpp b/lib/cppunit-1.10.0/src/cppunit/TestNamer.cpp new file mode 100644 index 0000000000..eec9be9734 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestNamer.cpp @@ -0,0 +1,44 @@ +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +#if CPPUNIT_HAVE_RTTI +TestNamer::TestNamer( const std::type_info &typeInfo ) +{ + m_fixtureName = TypeInfoHelper::getClassName( typeInfo ); +} +#endif + + +TestNamer::TestNamer( const std::string &fixtureName ) + : m_fixtureName( fixtureName ) +{ +} + + +TestNamer::~TestNamer() +{ +} + + +std::string +TestNamer::getFixtureName() const +{ + return m_fixtureName; +} + + +std::string +TestNamer::getTestNameFor( const std::string &testMethodName ) const +{ + return getFixtureName() + "::" + testMethodName; +} + + + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestPath.cpp b/lib/cppunit-1.10.0/src/cppunit/TestPath.cpp new file mode 100644 index 0000000000..2f4903ffe6 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestPath.cpp @@ -0,0 +1,251 @@ +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +TestPath::TestPath() +{ +} + + +TestPath::TestPath( Test *root ) +{ + add( root ); +} + + +TestPath::TestPath( const TestPath &other, + int indexFirst, + int count ) +{ + int countAdjustment = 0; + if ( indexFirst < 0 ) + { + countAdjustment = indexFirst; + indexFirst = 0; + } + + if ( count < 0 ) + count = other.getTestCount(); + else + count += countAdjustment; + + int index = indexFirst; + while ( count-- > 0 && index < other.getTestCount() ) + add( other.getTestAt( index++ ) ); +} + + +TestPath::TestPath( Test *searchRoot, + const std::string &pathAsString ) +{ + PathTestNames testNames; + + Test *parentTest = findActualRoot( searchRoot, pathAsString, testNames ); + add( parentTest ); + + for ( unsigned int index = 1; index < testNames.size(); ++index ) + { + bool childFound = false; + for ( int childIndex =0; childIndex < parentTest->getChildTestCount(); ++childIndex ) + { + if ( parentTest->getChildTestAt( childIndex )->getName() == testNames[index] ) + { + childFound = true; + parentTest = parentTest->getChildTestAt( childIndex ); + break; + } + } + + if ( !childFound ) + throw std::invalid_argument( "TestPath::TestPath(): failed to resolve test name <"+ + testNames[index] + "> of path <" + pathAsString + ">" ); + + add( parentTest ); + } +} + + +TestPath::TestPath( const TestPath &other ) + : m_tests( other.m_tests ) +{ +} + + +TestPath::~TestPath() +{ +} + + +TestPath & +TestPath::operator =( const TestPath &other ) +{ + if ( &other != this ) + m_tests = other.m_tests; + return *this; +} + + +bool +TestPath::isValid() const +{ + return getTestCount() > 0; +} + + +void +TestPath::add( Test *test ) +{ + m_tests.push_back( test ); +} + + +void +TestPath::add( const TestPath &path ) +{ + for ( int index =0; index < path.getTestCount(); ++index ) + add( path.getTestAt( index ) ); +} + + +void +TestPath::insert( Test *test, + int index ) +{ + if ( index < 0 || index > getTestCount() ) + throw std::out_of_range( "TestPath::insert(): index out of range" ); + m_tests.insert( m_tests.begin() + index, test ); +} + +void +TestPath::insert( const TestPath &path, + int index ) +{ + int itemIndex = path.getTestCount() -1; + while ( itemIndex >= 0 ) + insert( path.getTestAt( itemIndex-- ), index ); +} + + +void +TestPath::removeTests() +{ + while ( isValid() ) + removeTest( 0 ); +} + + +void +TestPath::removeTest( int index ) +{ + checkIndexValid( index ); + m_tests.erase( m_tests.begin() + index ); +} + + +void +TestPath::up() +{ + checkIndexValid( 0 ); + removeTest( getTestCount() -1 ); +} + + +int +TestPath::getTestCount() const +{ + return m_tests.size(); +} + + +Test * +TestPath::getTestAt( int index ) const +{ + checkIndexValid( index ); + return m_tests[index]; +} + + +Test * +TestPath::getChildTest() const +{ + return getTestAt( getTestCount() -1 ); +} + + +void +TestPath::checkIndexValid( int index ) const +{ + if ( index < 0 || index >= getTestCount() ) + throw std::out_of_range( "TestPath::checkIndexValid(): index out of range" ); +} + + +std::string +TestPath::toString() const +{ + std::string asString( "/" ); + for ( int index =0; index < getTestCount(); ++index ) + { + if ( index > 0 ) + asString += '/'; + asString += getTestAt(index)->getName(); + } + + return asString; +} + + +Test * +TestPath::findActualRoot( Test *searchRoot, + const std::string &pathAsString, + PathTestNames &testNames ) +{ + bool isRelative = splitPathString( pathAsString, testNames ); + + if ( isRelative && pathAsString.empty() ) + return searchRoot; + + if ( testNames.empty() ) + throw std::invalid_argument( "TestPath::TestPath(): invalid root or root name in absolute path" ); + + Test *root = isRelative ? searchRoot->findTest( testNames[0] ) // throw if bad test name + : searchRoot; + if ( root->getName() != testNames[0] ) + throw std::invalid_argument( "TestPath::TestPath(): searchRoot does not match path root name" ); + + return root; +} + + +bool +TestPath::splitPathString( const std::string &pathAsString, + PathTestNames &testNames ) +{ + bool isRelative = (pathAsString.substr(0,1) != "/"); + + int index = (isRelative ? 0 : 1); + while ( true ) + { + int separatorIndex = pathAsString.find( '/', index ); + if ( separatorIndex >= 0 ) + { + testNames.push_back( pathAsString.substr( index, separatorIndex - index ) ); + index = separatorIndex + 1; + } + else + { + testNames.push_back( pathAsString.substr( index ) ); + break; + } + } + + return isRelative; +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestPlugInDefaultImpl.cpp b/lib/cppunit-1.10.0/src/cppunit/TestPlugInDefaultImpl.cpp new file mode 100644 index 0000000000..5d4c555074 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestPlugInDefaultImpl.cpp @@ -0,0 +1,63 @@ +#include + +#if !defined(CPPUNIT_NO_TESTPLUGIN) + +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +TestPlugInDefaultImpl::TestPlugInDefaultImpl() +{ +} + + +TestPlugInDefaultImpl::~TestPlugInDefaultImpl() +{ +} + + +void +TestPlugInDefaultImpl::initialize( TestFactoryRegistry *registry, + const PlugInParameters ¶meters ) +{ +} + + +void +TestPlugInDefaultImpl::addListener( TestResult *eventManager ) +{ +} + + +void +TestPlugInDefaultImpl::removeListener( TestResult *eventManager ) +{ +} + + +void +TestPlugInDefaultImpl::addXmlOutputterHooks( XmlOutputter *outputter ) +{ +} + + +void +TestPlugInDefaultImpl::removeXmlOutputterHooks() +{ +} + + +void +TestPlugInDefaultImpl::uninitialize( TestFactoryRegistry *registry ) +{ +} + + +CPPUNIT_NS_END + + +#endif // !defined(CPPUNIT_NO_TESTPLUGIN) diff --git a/lib/cppunit-1.10.0/src/cppunit/TestResult.cpp b/lib/cppunit-1.10.0/src/cppunit/TestResult.cpp new file mode 100644 index 0000000000..6be19f1a1b --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestResult.cpp @@ -0,0 +1,196 @@ +#include +#include +#include +#include +#include +#include +#include "DefaultProtector.h" +#include "ProtectorChain.h" +#include "ProtectorContext.h" + +CPPUNIT_NS_BEGIN + + +TestResult::TestResult( SynchronizationObject *syncObject ) + : SynchronizedObject( syncObject ) + , m_protectorChain( new ProtectorChain() ) + , m_stop( false ) +{ + m_protectorChain->push( new DefaultProtector() ); +} + + +TestResult::~TestResult() +{ + delete m_protectorChain; +} + + +void +TestResult::reset() +{ + ExclusiveZone zone( m_syncObject ); + m_stop = false; +} + + +void +TestResult::addError( Test *test, + Exception *e ) +{ + TestFailure failure( test, e, true ); + addFailure( failure ); +} + + +void +TestResult::addFailure( Test *test, Exception *e ) +{ + TestFailure failure( test, e, false ); + addFailure( failure ); +} + + +void +TestResult::addFailure( const TestFailure &failure ) +{ + ExclusiveZone zone( m_syncObject ); + for ( TestListeners::iterator it = m_listeners.begin(); + it != m_listeners.end(); + ++it ) + (*it)->addFailure( failure ); +} + + +void +TestResult::startTest( Test *test ) +{ + ExclusiveZone zone( m_syncObject ); + for ( TestListeners::iterator it = m_listeners.begin(); + it != m_listeners.end(); + ++it ) + (*it)->startTest( test ); +} + + +void +TestResult::endTest( Test *test ) +{ + ExclusiveZone zone( m_syncObject ); + for ( TestListeners::iterator it = m_listeners.begin(); + it != m_listeners.end(); + ++it ) + (*it)->endTest( test ); +} + + +void +TestResult::startSuite( Test *test ) +{ + ExclusiveZone zone( m_syncObject ); + for ( TestListeners::iterator it = m_listeners.begin(); + it != m_listeners.end(); + ++it ) + (*it)->startSuite( test ); +} + + +void +TestResult::endSuite( Test *test ) +{ + ExclusiveZone zone( m_syncObject ); + for ( TestListeners::iterator it = m_listeners.begin(); + it != m_listeners.end(); + ++it ) + (*it)->endSuite( test ); +} + + +bool +TestResult::shouldStop() const +{ + ExclusiveZone zone( m_syncObject ); + return m_stop; +} + + +void +TestResult::stop() +{ + ExclusiveZone zone( m_syncObject ); + m_stop = true; +} + + +void +TestResult::addListener( TestListener *listener ) +{ + ExclusiveZone zone( m_syncObject ); + m_listeners.push_back( listener ); +} + + +void +TestResult::removeListener ( TestListener *listener ) +{ + ExclusiveZone zone( m_syncObject ); + removeFromSequence( m_listeners, listener ); +} + + +void +TestResult::runTest( Test *test ) +{ + startTestRun( test ); + test->run( this ); + endTestRun( test ); +} + + +void +TestResult::startTestRun( Test *test ) +{ + ExclusiveZone zone( m_syncObject ); + for ( TestListeners::iterator it = m_listeners.begin(); + it != m_listeners.end(); + ++it ) + (*it)->startTestRun( test, this ); +} + + +void +TestResult::endTestRun( Test *test ) +{ + ExclusiveZone zone( m_syncObject ); + for ( TestListeners::iterator it = m_listeners.begin(); + it != m_listeners.end(); + ++it ) + (*it)->endTestRun( test, this ); +} + + +bool +TestResult::protect( const Functor &functor, + Test *test, + const std::string &shortDescription ) +{ + ProtectorContext context( test, this, shortDescription ); + return m_protectorChain->protect( functor, context ); +} + + +void +TestResult::pushProtector( Protector *protector ) +{ + m_protectorChain->push( protector ); +} + + +void +TestResult::popProtector() +{ + m_protectorChain->pop(); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestResultCollector.cpp b/lib/cppunit-1.10.0/src/cppunit/TestResultCollector.cpp new file mode 100644 index 0000000000..eee791d4aa --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestResultCollector.cpp @@ -0,0 +1,109 @@ +#include +#include + + +CPPUNIT_NS_BEGIN + + +TestResultCollector::TestResultCollector( SynchronizationObject *syncObject ) + : TestSuccessListener( syncObject ) +{ + reset(); +} + + +TestResultCollector::~TestResultCollector() +{ + TestFailures::iterator itFailure = m_failures.begin(); + while ( itFailure != m_failures.end() ) + delete *itFailure++; +} + + +void +TestResultCollector::reset() +{ + TestSuccessListener::reset(); + + ExclusiveZone zone( m_syncObject ); + m_testErrors = 0; + m_tests.clear(); + m_failures.clear(); +} + + +void +TestResultCollector::startTest( Test *test ) +{ + ExclusiveZone zone (m_syncObject); + m_tests.push_back( test ); +} + + +void +TestResultCollector::addFailure( const TestFailure &failure ) +{ + TestSuccessListener::addFailure( failure ); + + ExclusiveZone zone( m_syncObject ); + if ( failure.isError() ) + ++m_testErrors; + m_failures.push_back( failure.clone() ); +} + + +/// Gets the number of run tests. +int +TestResultCollector::runTests() const +{ + ExclusiveZone zone( m_syncObject ); + return m_tests.size(); +} + + +/// Gets the number of detected errors (uncaught exception). +int +TestResultCollector::testErrors() const +{ + ExclusiveZone zone( m_syncObject ); + return m_testErrors; +} + + +/// Gets the number of detected failures (failed assertion). +int +TestResultCollector::testFailures() const +{ + ExclusiveZone zone( m_syncObject ); + return m_failures.size() - m_testErrors; +} + + +/// Gets the total number of detected failures. +int +TestResultCollector::testFailuresTotal() const +{ + ExclusiveZone zone( m_syncObject ); + return m_failures.size(); +} + + +/// Returns a the list failures (random access collection). +const TestResultCollector::TestFailures & +TestResultCollector::failures() const +{ + ExclusiveZone zone( m_syncObject ); + return m_failures; +} + + +const TestResultCollector::Tests & +TestResultCollector::tests() const +{ + ExclusiveZone zone( m_syncObject ); + return m_tests; +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/TestRunner.cpp b/lib/cppunit-1.10.0/src/cppunit/TestRunner.cpp new file mode 100644 index 0000000000..91b07f6245 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestRunner.cpp @@ -0,0 +1,100 @@ +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +TestRunner::WrappingSuite::WrappingSuite( const std::string &name ) + : TestSuite( name ) +{ +} + + +int +TestRunner::WrappingSuite::getChildTestCount() const +{ + if ( hasOnlyOneTest() ) + return getUniqueChildTest()->getChildTestCount(); + return TestSuite::getChildTestCount(); +} + + +std::string +TestRunner::WrappingSuite::getName() const +{ + if ( hasOnlyOneTest() ) + return getUniqueChildTest()->getName(); + return TestSuite::getName(); +} + + +Test * +TestRunner::WrappingSuite::doGetChildTestAt( int index ) const +{ + if ( hasOnlyOneTest() ) + return getUniqueChildTest()->getChildTestAt( index ); + return TestSuite::doGetChildTestAt( index ); +} + + +void +TestRunner::WrappingSuite::run( TestResult *result ) +{ + if ( hasOnlyOneTest() ) + getUniqueChildTest()->run( result ); + else + TestSuite::run( result ); +} + + +bool +TestRunner::WrappingSuite::hasOnlyOneTest() const +{ + return TestSuite::getChildTestCount() == 1; +} + + +Test * +TestRunner::WrappingSuite::getUniqueChildTest() const +{ + return TestSuite::doGetChildTestAt( 0 ); +} + + + + + +TestRunner::TestRunner() + : m_suite( new WrappingSuite() ) +{ +} + + +TestRunner::~TestRunner() +{ + delete m_suite; +} + + +void +TestRunner::addTest( Test *test ) +{ + m_suite->addTest( test ); +} + + +void +TestRunner::run( TestResult &controller, + const std::string &testPath ) +{ + TestPath path = m_suite->resolveTestPath( testPath ); + Test *testToRun = path.getChildTest(); + + controller.runTest( testToRun ); +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/TestSetUp.cpp b/lib/cppunit-1.10.0/src/cppunit/TestSetUp.cpp new file mode 100644 index 0000000000..d4d8530893 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestSetUp.cpp @@ -0,0 +1,32 @@ +#include + +CPPUNIT_NS_BEGIN + + +TestSetUp::TestSetUp( Test *test ) : TestDecorator( test ) +{ +} + + +void +TestSetUp::setUp() +{ +} + + +void +TestSetUp::tearDown() +{ +} + + +void +TestSetUp::run( TestResult *result ) +{ + setUp(); + TestDecorator::run(result); + tearDown(); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TestSuccessListener.cpp b/lib/cppunit-1.10.0/src/cppunit/TestSuccessListener.cpp new file mode 100644 index 0000000000..3c9c8214c6 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestSuccessListener.cpp @@ -0,0 +1,44 @@ +#include + + +CPPUNIT_NS_BEGIN + + +TestSuccessListener::TestSuccessListener( SynchronizationObject *syncObject ) + : SynchronizedObject( syncObject ) + , m_success( true ) +{ +} + + +TestSuccessListener::~TestSuccessListener() +{ +} + + +void +TestSuccessListener::reset() +{ + ExclusiveZone zone( m_syncObject ); + m_success = true; +} + + +void +TestSuccessListener::addFailure( const TestFailure &failure ) +{ + ExclusiveZone zone( m_syncObject ); + m_success = false; +} + + +bool +TestSuccessListener::wasSuccessful() const +{ + ExclusiveZone zone( m_syncObject ); + return m_success; +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/TestSuite.cpp b/lib/cppunit-1.10.0/src/cppunit/TestSuite.cpp new file mode 100644 index 0000000000..4a27788a14 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestSuite.cpp @@ -0,0 +1,63 @@ +#include +#include + +CPPUNIT_NS_BEGIN + + +/// Default constructor +TestSuite::TestSuite( std::string name ) + : TestComposite( name ) +{ +} + + +/// Destructor +TestSuite::~TestSuite() +{ + deleteContents(); +} + + +/// Deletes all tests in the suite. +void +TestSuite::deleteContents() +{ + int childCount = getChildTestCount(); + for ( int index =0; index < childCount; ++index ) + delete getChildTestAt( index ); + + m_tests.clear(); +} + + +/// Adds a test to the suite. +void +TestSuite::addTest( Test *test ) +{ + m_tests.push_back( test ); +} + + +const CppUnitVector & +TestSuite::getTests() const +{ + return m_tests; +} + + +int +TestSuite::getChildTestCount() const +{ + return m_tests.size(); +} + + +Test * +TestSuite::doGetChildTestAt( int index ) const +{ + return m_tests[index]; +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/TestSuiteBuilderContext.cpp b/lib/cppunit-1.10.0/src/cppunit/TestSuiteBuilderContext.cpp new file mode 100644 index 0000000000..06aa12eff5 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TestSuiteBuilderContext.cpp @@ -0,0 +1,67 @@ +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + +TestSuiteBuilderContextBase::TestSuiteBuilderContextBase( + TestSuite &suite, + const TestNamer &namer, + TestFixtureFactory &factory ) + : m_suite( suite ) + , m_namer( namer ) + , m_factory( factory ) +{ +} + + +void +TestSuiteBuilderContextBase::addTest( Test *test ) +{ + m_suite.addTest( test ); +} + + +std::string +TestSuiteBuilderContextBase::getFixtureName() const +{ + return m_namer.getFixtureName(); +} + + +std::string +TestSuiteBuilderContextBase::getTestNameFor( + const std::string &testMethodName ) const +{ + return m_namer.getTestNameFor( testMethodName ); +} + + +TestFixture * +TestSuiteBuilderContextBase::makeTestFixture() const +{ + return m_factory.makeFixture(); +} + + +void +TestSuiteBuilderContextBase::addProperty( const std::string &key, + const std::string &value ) +{ + m_properties[ key ] = value; +} + +const std::string +TestSuiteBuilderContextBase::getStringProperty( const std::string &key ) const +{ + Properties::const_iterator itFound = m_properties.find( key ); + if ( itFound == m_properties.end() ) + return ""; + + return (*itFound).second; +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TextOutputter.cpp b/lib/cppunit-1.10.0/src/cppunit/TextOutputter.cpp new file mode 100644 index 0000000000..6dd54e52ab --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TextOutputter.cpp @@ -0,0 +1,141 @@ +#include +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +TextOutputter::TextOutputter( TestResultCollector *result, + std::ostream &stream ) + : m_result( result ) + , m_stream( stream ) +{ +} + + +TextOutputter::~TextOutputter() +{ +} + + +void +TextOutputter::write() +{ + printHeader(); + m_stream << std::endl; + printFailures(); + m_stream << std::endl; +} + + +void +TextOutputter::printFailures() +{ + TestResultCollector::TestFailures::const_iterator itFailure = m_result->failures().begin(); + int failureNumber = 1; + while ( itFailure != m_result->failures().end() ) + { + m_stream << std::endl; + printFailure( *itFailure++, failureNumber++ ); + } +} + + +void +TextOutputter::printFailure( TestFailure *failure, + int failureNumber ) +{ + printFailureListMark( failureNumber ); + m_stream << ' '; + printFailureTestName( failure ); + m_stream << ' '; + printFailureType( failure ); + m_stream << ' '; + printFailureLocation( failure->sourceLine() ); + m_stream << std::endl; + printFailureDetail( failure->thrownException() ); + m_stream << std::endl; +} + + +void +TextOutputter::printFailureListMark( int failureNumber ) +{ + m_stream << failureNumber << ")"; +} + + +void +TextOutputter::printFailureTestName( TestFailure *failure ) +{ + m_stream << "test: " << failure->failedTestName(); +} + + +void +TextOutputter::printFailureType( TestFailure *failure ) +{ + m_stream << "(" + << (failure->isError() ? "E" : "F") + << ")"; +} + + +void +TextOutputter::printFailureLocation( SourceLine sourceLine ) +{ + if ( !sourceLine.isValid() ) + return; + + m_stream << "line: " << sourceLine.lineNumber() + << ' ' << sourceLine.fileName(); +} + + +void +TextOutputter::printFailureDetail( Exception *thrownException ) +{ + m_stream << thrownException->message().shortDescription() << std::endl; + m_stream << thrownException->message().details(); +} + + +void +TextOutputter::printHeader() +{ + if ( m_result->wasSuccessful() ) + m_stream << std::endl << "OK (" << m_result->runTests () << " tests)" + << std::endl; + else + { + m_stream << std::endl; + printFailureWarning(); + printStatistics(); + } +} + + +void +TextOutputter::printFailureWarning() +{ + m_stream << "!!!FAILURES!!!" << std::endl; +} + + +void +TextOutputter::printStatistics() +{ + m_stream << "Test Results:" << std::endl; + + m_stream << "Run: " << m_result->runTests() + << " Failures: " << m_result->testFailures() + << " Errors: " << m_result->testErrors() + << std::endl; +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/TextTestProgressListener.cpp b/lib/cppunit-1.10.0/src/cppunit/TextTestProgressListener.cpp new file mode 100644 index 0000000000..cb0a8333ab --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TextTestProgressListener.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +TextTestProgressListener::TextTestProgressListener() +{ +} + + +TextTestProgressListener::~TextTestProgressListener() +{ +} + + +void +TextTestProgressListener::startTest( Test *test ) +{ + std::cerr << "."; +} + + +void +TextTestProgressListener::addFailure( const TestFailure &failure ) +{ + std::cerr << ( failure.isError() ? "E" : "F" ); +} + + +void +TextTestProgressListener::endTestRun( Test *test, + TestResult *eventManager ) +{ + std::cerr << std::endl; + std::cerr.flush(); +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/TextTestResult.cpp b/lib/cppunit-1.10.0/src/cppunit/TextTestResult.cpp new file mode 100644 index 0000000000..c155745b3b --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TextTestResult.cpp @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +TextTestResult::TextTestResult() +{ + addListener( this ); +} + + +void +TextTestResult::addFailure( const TestFailure &failure ) +{ + TestResultCollector::addFailure( failure ); + std::cerr << ( failure.isError() ? "E" : "F" ); +} + + +void +TextTestResult::startTest( Test *test ) +{ + TestResultCollector::startTest (test); + std::cerr << "."; +} + + +void +TextTestResult::print( std::ostream& stream ) +{ + TextOutputter outputter( this, stream ); + outputter.write(); +} + + +std::ostream & +operator <<( std::ostream &stream, + TextTestResult &result ) +{ + result.print (stream); return stream; +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TextTestRunner.cpp b/lib/cppunit-1.10.0/src/cppunit/TextTestRunner.cpp new file mode 100644 index 0000000000..5ca182bba3 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TextTestRunner.cpp @@ -0,0 +1,132 @@ +// ==> Implementation of cppunit/ui/text/TestRunner.h + +#include +#include +#include +#include +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +/*! Constructs a new text runner. + * \param outputter used to print text result. Owned by the runner. + */ +TextTestRunner::TextTestRunner( Outputter *outputter ) + : m_outputter( outputter ) + , m_result( new TestResultCollector() ) + , m_eventManager( new TestResult() ) +{ + if ( !m_outputter ) + m_outputter = new TextOutputter( m_result, std::cout ); + m_eventManager->addListener( m_result ); +} + + +TextTestRunner::~TextTestRunner() +{ + delete m_eventManager; + delete m_outputter; + delete m_result; +} + + +/*! Runs the named test case. + * + * \param testName Name of the test case to run. If an empty is given, then + * all added tests are run. The name can be the name of any + * test in the hierarchy. + * \param doWait if \c true then the user must press the RETURN key + * before the run() method exit. + * \param doPrintResult if \c true (default) then the test result are printed + * on the standard output. + * \param doPrintProgress if \c true (default) then TextTestProgressListener is + * used to show the progress. + * \return \c true is the test was successful, \c false if the test + * failed or was not found. + */ +bool +TextTestRunner::run( std::string testName, + bool doWait, + bool doPrintResult, + bool doPrintProgress ) +{ + TextTestProgressListener progress; + if ( doPrintProgress ) + m_eventManager->addListener( &progress ); + + TestRunner *pThis = this; + pThis->run( *m_eventManager, testName ); + + if ( doPrintProgress ) + m_eventManager->removeListener( &progress ); + + printResult( doPrintResult ); + wait( doWait ); + + return m_result->wasSuccessful(); +} + + +void +TextTestRunner::wait( bool doWait ) +{ + if ( doWait ) + { + std::cout << " to continue" << std::endl; + std::cin.get (); + } +} + + +void +TextTestRunner::printResult( bool doPrintResult ) +{ + std::cout << std::endl; + if ( doPrintResult ) + m_outputter->write(); +} + + +/*! Returns the result of the test run. + * Use this after calling run() to access the result of the test run. + */ +TestResultCollector & +TextTestRunner::result() const +{ + return *m_result; +} + + +/*! Returns the event manager. + * The instance of TestResult results returned is the one that is used to run the + * test. Use this to register additional TestListener before running the tests. + */ +TestResult & +TextTestRunner::eventManager() const +{ + return *m_eventManager; +} + + +/*! Specifies an alternate outputter. + * + * Notes that the outputter will be use after the test run only if \a printResult was + * \c true. + * \param outputter New outputter to use. The previous outputter is destroyed. + * The TextTestRunner assumes ownership of the outputter. + * \see CompilerOutputter, XmlOutputter, TextOutputter. + */ +void +TextTestRunner::setOutputter( Outputter *outputter ) +{ + delete m_outputter; + m_outputter = outputter; +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/TypeInfoHelper.cpp b/lib/cppunit-1.10.0/src/cppunit/TypeInfoHelper.cpp new file mode 100644 index 0000000000..bd01001b46 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/TypeInfoHelper.cpp @@ -0,0 +1,53 @@ +#include +#include + +#if CPPUNIT_HAVE_RTTI + +#include + +#if CPPUNIT_HAVE_GCC_ABI_DEMANGLE +#include +#endif + + +CPPUNIT_NS_BEGIN + + +std::string +TypeInfoHelper::getClassName( const std::type_info &info ) +{ +#if defined(CPPUNIT_HAVE_GCC_ABI_DEMANGLE) && CPPUNIT_HAVE_GCC_ABI_DEMANGLE + + int status = 0; + char* c_name = 0; + + c_name = abi::__cxa_demangle( info.name(), 0, 0, &status ); + + std::string name( c_name ); + free( c_name ); + +#else // CPPUNIT_HAVE_GCC_ABI_DEMANGLE + + static std::string classPrefix( "class " ); + std::string name( info.name() ); + + // Work around gcc 3.0 bug: strip number before type name. + unsigned int firstNotDigitIndex = 0; + while ( firstNotDigitIndex < name.length() && + name[firstNotDigitIndex] >= '0' && + name[firstNotDigitIndex] <= '9' ) + ++firstNotDigitIndex; + name = name.substr( firstNotDigitIndex ); + + if ( name.substr( 0, classPrefix.length() ) == classPrefix ) + return name.substr( classPrefix.length() ); + +#endif // CPPUNIT_HAVE_GCC_ABI_DEMANGLE + + return name; +} + + +CPPUNIT_NS_END + +#endif // CPPUNIT_HAVE_RTTI diff --git a/lib/cppunit-1.10.0/src/cppunit/UnixDynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/UnixDynamicLibraryManager.cpp new file mode 100644 index 0000000000..f235cce5ae --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/UnixDynamicLibraryManager.cpp @@ -0,0 +1,44 @@ +#include + +#if defined(CPPUNIT_HAVE_UNIX_DLL_LOADER) +#include + +#include +#include + + +CPPUNIT_NS_BEGIN + + +DynamicLibraryManager::LibraryHandle +DynamicLibraryManager::doLoadLibrary( const std::string &libraryName ) +{ + return ::dlopen( libraryName.c_str(), RTLD_NOW | RTLD_GLOBAL ); +} + + +void +DynamicLibraryManager::doReleaseLibrary() +{ + ::dlclose( m_libraryHandle); +} + + +DynamicLibraryManager::Symbol +DynamicLibraryManager::doFindSymbol( const std::string &symbol ) +{ + return ::dlsym ( m_libraryHandle, symbol.c_str() ); +} + + +std::string +DynamicLibraryManager::getLastErrorDetail() const +{ + return ""; +} + + +CPPUNIT_NS_END + + +#endif // defined(CPPUNIT_HAVE_UNIX_DLL_LOADER) diff --git a/lib/cppunit-1.10.0/src/cppunit/Win32DynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/Win32DynamicLibraryManager.cpp new file mode 100644 index 0000000000..194b5ba5d2 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/Win32DynamicLibraryManager.cpp @@ -0,0 +1,72 @@ +#include + +#if defined(CPPUNIT_HAVE_WIN32_DLL_LOADER) +#include + +#define WIN32_LEAN_AND_MEAN +#define NOGDI +#define NOUSER +#define NOKERNEL +#define NOSOUND +#define NOMINMAX +#include + + +CPPUNIT_NS_BEGIN + + +DynamicLibraryManager::LibraryHandle +DynamicLibraryManager::doLoadLibrary( const std::string &libraryName ) +{ + return ::LoadLibrary( libraryName.c_str() ); +} + + +void +DynamicLibraryManager::doReleaseLibrary() +{ + ::FreeLibrary( (HINSTANCE)m_libraryHandle ); +} + + +DynamicLibraryManager::Symbol +DynamicLibraryManager::doFindSymbol( const std::string &symbol ) +{ + return (DynamicLibraryManager::Symbol)::GetProcAddress( + (HINSTANCE)m_libraryHandle, + symbol.c_str() ); +} + + +std::string +DynamicLibraryManager::getLastErrorDetail() const +{ + LPVOID lpMsgBuf; + ::FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPTSTR) &lpMsgBuf, + 0, + NULL + ); + + std::string message = (LPCTSTR)lpMsgBuf; + + // Display the string. +// ::MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); + + // Free the buffer. + ::LocalFree( lpMsgBuf ); + + return message; +} + + +CPPUNIT_NS_END + + +#endif // defined(CPPUNIT_HAVE_WIN32_DLL_LOADER) diff --git a/lib/cppunit-1.10.0/src/cppunit/XmlDocument.cpp b/lib/cppunit-1.10.0/src/cppunit/XmlDocument.cpp new file mode 100644 index 0000000000..486c26328d --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/XmlDocument.cpp @@ -0,0 +1,86 @@ +#include +#include + + +CPPUNIT_NS_BEGIN + + +XmlDocument::XmlDocument( const std::string &encoding, + const std::string &styleSheet ) + : m_rootElement( new XmlElement( "DummyRoot" ) ) + , m_styleSheet( styleSheet ) +{ + setEncoding( encoding ); +} + + +XmlDocument::~XmlDocument() +{ + delete m_rootElement; +} + + + +std::string +XmlDocument::encoding() const +{ + return m_encoding; +} + + +void +XmlDocument::setEncoding( const std::string &encoding ) +{ + m_encoding = encoding.empty() ? std::string("ISO-8859-1") : encoding; +} + + +std::string +XmlDocument::styleSheet() const +{ + return m_styleSheet; +} + + +void +XmlDocument::setStyleSheet( const std::string &styleSheet ) +{ + m_styleSheet = styleSheet; +} + + +void +XmlDocument::setRootElement( XmlElement *rootElement ) +{ + if ( rootElement == m_rootElement ) + return; + + delete m_rootElement; + m_rootElement = rootElement; +} + + +XmlElement & +XmlDocument::rootElement() const +{ + return *m_rootElement; +} + + +std::string +XmlDocument::toString() const +{ + std::string asString = "\n"; + + if ( !m_styleSheet.empty() ) + asString += "\n"; + + asString += m_rootElement->toString(); + + return asString; +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/XmlElement.cpp b/lib/cppunit-1.10.0/src/cppunit/XmlElement.cpp new file mode 100644 index 0000000000..f930ad4e93 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/XmlElement.cpp @@ -0,0 +1,226 @@ +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +XmlElement::XmlElement( std::string elementName, + std::string content ) + : m_name( elementName ) + , m_content( content ) +{ +} + + +XmlElement::XmlElement( std::string elementName, + int numericContent ) + : m_name( elementName ) +{ + setContent( numericContent ); +} + + +XmlElement::~XmlElement() +{ + Elements::iterator itNode = m_elements.begin(); + while ( itNode != m_elements.end() ) + { + XmlElement *element = *itNode++; + delete element; + } +} + + +std::string +XmlElement::name() const +{ + return m_name; +} + + +std::string +XmlElement::content() const +{ + return m_content; +} + + +void +XmlElement::setName( const std::string &name ) +{ + m_name = name; +} + + +void +XmlElement::setContent( const std::string &content ) +{ + m_content = content; +} + + +void +XmlElement::setContent( int numericContent ) +{ + m_content = StringTools::toString( numericContent ); +} + + +void +XmlElement::addAttribute( std::string attributeName, + std::string value ) +{ + m_attributes.push_back( Attribute( attributeName, value ) ); +} + + +void +XmlElement::addAttribute( std::string attributeName, + int numericValue ) +{ + addAttribute( attributeName, StringTools::toString( numericValue ) ); +} + + +void +XmlElement::addElement( XmlElement *node ) +{ + m_elements.push_back( node ); +} + + +int +XmlElement::elementCount() const +{ + return m_elements.size(); +} + + +XmlElement * +XmlElement::elementAt( int index ) const +{ + if ( index < 0 || index >= elementCount() ) + throw std::invalid_argument( "XmlElement::elementAt(), out of range index" ); + + return m_elements[ index ]; +} + + +XmlElement * +XmlElement::elementFor( const std::string &name ) const +{ + Elements::const_iterator itElement = m_elements.begin(); + for ( ; itElement != m_elements.end(); ++itElement ) + { + if ( (*itElement)->name() == name ) + return *itElement; + } + + throw std::invalid_argument( "XmlElement::elementFor(), not matching child element found" ); + return NULL; // make some compilers happy. +} + + +std::string +XmlElement::toString( const std::string &indent ) const +{ + std::string element( indent ); + element += "<"; + element += m_name; + if ( !m_attributes.empty() ) + { + element += " "; + element += attributesAsString(); + } + element += ">"; + + if ( !m_elements.empty() ) + { + element += "\n"; + + std::string subNodeIndent( indent + " " ); + Elements::const_iterator itNode = m_elements.begin(); + while ( itNode != m_elements.end() ) + { + const XmlElement *node = *itNode++; + element += node->toString( subNodeIndent ); + } + + element += indent; + } + + if ( !m_content.empty() ) + { + element += escape( m_content ); + if ( !m_elements.empty() ) + { + element += "\n"; + element += indent; + } + } + + element += "\n"; + + return element; +} + + +std::string +XmlElement::attributesAsString() const +{ + std::string attributes; + Attributes::const_iterator itAttribute = m_attributes.begin(); + while ( itAttribute != m_attributes.end() ) + { + if ( !attributes.empty() ) + attributes += " "; + + const Attribute &attribute = *itAttribute++; + attributes += attribute.first; + attributes += "=\""; + attributes += escape( attribute.second ); + attributes += "\""; + } + return attributes; +} + + +std::string +XmlElement::escape( std::string value ) const +{ + std::string escaped; + for ( unsigned int index =0; index < value.length(); ++index ) + { + char c = value[index ]; + switch ( c ) // escape all predefined XML entity (safe?) + { + case '<': + escaped += "<"; + break; + case '>': + escaped += ">"; + break; + case '&': + escaped += "&"; + break; + case '\'': + escaped += "'"; + break; + case '"': + escaped += """; + break; + default: + escaped += c; + } + } + + return escaped; +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/XmlOutputter.cpp b/lib/cppunit-1.10.0/src/cppunit/XmlOutputter.cpp new file mode 100644 index 0000000000..84534242d7 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/XmlOutputter.cpp @@ -0,0 +1,198 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +CPPUNIT_NS_BEGIN + + +XmlOutputter::XmlOutputter( TestResultCollector *result, + std::ostream &stream, + std::string encoding ) + : m_result( result ) + , m_stream( stream ) + , m_xml( new XmlDocument( encoding ) ) +{ +} + + +XmlOutputter::~XmlOutputter() +{ + delete m_xml; +} + + +void +XmlOutputter::addHook( XmlOutputterHook *hook ) +{ + m_hooks.push_back( hook ); +} + + +void +XmlOutputter::removeHook( XmlOutputterHook *hook ) +{ + m_hooks.erase( std::find( m_hooks.begin(), m_hooks.end(), hook ) ); +} + + +void +XmlOutputter::write() +{ + setRootNode(); + m_stream << m_xml->toString(); +} + + +void +XmlOutputter::setStyleSheet( const std::string &styleSheet ) +{ + m_xml->setStyleSheet( styleSheet ); +} + + +void +XmlOutputter::setRootNode() +{ + XmlElement *rootNode = new XmlElement( "TestRun" ); + m_xml->setRootElement( rootNode ); + + for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it ) + (*it)->beginDocument( m_xml ); + + FailedTests failedTests; + fillFailedTestsMap( failedTests ); + + addFailedTests( failedTests, rootNode ); + addSuccessfulTests( failedTests, rootNode ); + addStatistics( rootNode ); + + for ( Hooks::iterator itEnd = m_hooks.begin(); itEnd != m_hooks.end(); ++itEnd ) + (*itEnd)->endDocument( m_xml ); +} + + +void +XmlOutputter::fillFailedTestsMap( FailedTests &failedTests ) +{ + const TestResultCollector::TestFailures &failures = m_result->failures(); + TestResultCollector::TestFailures::const_iterator itFailure = failures.begin(); + while ( itFailure != failures.end() ) + { + TestFailure *failure = *itFailure++; + failedTests.insert( std::pair(failure->failedTest(), failure ) ); + } +} + + +void +XmlOutputter::addFailedTests( FailedTests &failedTests, + XmlElement *rootNode ) +{ + XmlElement *testsNode = new XmlElement( "FailedTests" ); + rootNode->addElement( testsNode ); + + const TestResultCollector::Tests &tests = m_result->tests(); + for ( unsigned int testNumber = 0; testNumber < tests.size(); ++testNumber ) + { + Test *test = tests[testNumber]; + if ( failedTests.find( test ) != failedTests.end() ) + addFailedTest( test, failedTests[test], testNumber+1, testsNode ); + } +} + + +void +XmlOutputter::addSuccessfulTests( FailedTests &failedTests, + XmlElement *rootNode ) +{ + XmlElement *testsNode = new XmlElement( "SuccessfulTests" ); + rootNode->addElement( testsNode ); + + const TestResultCollector::Tests &tests = m_result->tests(); + for ( unsigned int testNumber = 0; testNumber < tests.size(); ++testNumber ) + { + Test *test = tests[testNumber]; + if ( failedTests.find( test ) == failedTests.end() ) + addSuccessfulTest( test, testNumber+1, testsNode ); + } +} + + +void +XmlOutputter::addStatistics( XmlElement *rootNode ) +{ + XmlElement *statisticsElement = new XmlElement( "Statistics" ); + rootNode->addElement( statisticsElement ); + statisticsElement->addElement( new XmlElement( "Tests", m_result->runTests() ) ); + statisticsElement->addElement( new XmlElement( "FailuresTotal", + m_result->testFailuresTotal() ) ); + statisticsElement->addElement( new XmlElement( "Errors", m_result->testErrors() ) ); + statisticsElement->addElement( new XmlElement( "Failures", m_result->testFailures() ) ); + + for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it ) + (*it)->statisticsAdded( m_xml, statisticsElement ); +} + + +void +XmlOutputter::addFailedTest( Test *test, + TestFailure *failure, + int testNumber, + XmlElement *testsNode ) +{ + Exception *thrownException = failure->thrownException(); + + XmlElement *testElement = new XmlElement( "FailedTest" ); + testsNode->addElement( testElement ); + testElement->addAttribute( "id", testNumber ); + testElement->addElement( new XmlElement( "Name", test->getName() ) ); + testElement->addElement( new XmlElement( "FailureType", + failure->isError() ? "Error" : + "Assertion" ) ); + + if ( failure->sourceLine().isValid() ) + addFailureLocation( failure, testElement ); + + testElement->addElement( new XmlElement( "Message", thrownException->what() ) ); + + for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it ) + (*it)->failTestAdded( m_xml, testElement, test, failure ); +} + + +void +XmlOutputter::addFailureLocation( TestFailure *failure, + XmlElement *testElement ) +{ + XmlElement *locationNode = new XmlElement( "Location" ); + testElement->addElement( locationNode ); + SourceLine sourceLine = failure->sourceLine(); + locationNode->addElement( new XmlElement( "File", sourceLine.fileName() ) ); + locationNode->addElement( new XmlElement( "Line", sourceLine.lineNumber() ) ); +} + + +void +XmlOutputter::addSuccessfulTest( Test *test, + int testNumber, + XmlElement *testsNode ) +{ + XmlElement *testElement = new XmlElement( "Test" ); + testsNode->addElement( testElement ); + testElement->addAttribute( "id", testNumber ); + testElement->addElement( new XmlElement( "Name", test->getName() ) ); + + for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it ) + (*it)->successfulTestAdded( m_xml, testElement, test ); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/cppunit/XmlOutputterHook.cpp b/lib/cppunit-1.10.0/src/cppunit/XmlOutputterHook.cpp new file mode 100644 index 0000000000..4b4e8d8e55 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/XmlOutputterHook.cpp @@ -0,0 +1,44 @@ +#include + + +CPPUNIT_NS_BEGIN + + +void +XmlOutputterHook::beginDocument( XmlDocument *document ) +{ +} + + +void +XmlOutputterHook::endDocument( XmlDocument *document ) +{ +} + + +void +XmlOutputterHook::failTestAdded( XmlDocument *document, + XmlElement *testElement, + Test *test, + TestFailure *failure ) +{ +} + + +void +XmlOutputterHook::successfulTestAdded( XmlDocument *document, + XmlElement *testElement, + Test *test ) +{ +} + + +void +XmlOutputterHook::statisticsAdded( XmlDocument *document, + XmlElement *statisticsElement ) +{ +} + + +CPPUNIT_NS_END + diff --git a/lib/cppunit-1.10.0/src/cppunit/cppunit.dsp b/lib/cppunit-1.10.0/src/cppunit/cppunit.dsp new file mode 100644 index 0000000000..aab922047b --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/cppunit.dsp @@ -0,0 +1,691 @@ +# Microsoft Developer Studio Project File - Name="cppunit" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=CPPUNIT - WIN32 DEBUG +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "cppunit.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "cppunit.mak" CFG="CPPUNIT - WIN32 DEBUG" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "cppunit - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "cppunit - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "cppunit - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "WIN32" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +# Begin Special Build Tool +TargetPath=.\Release\cppunit.lib +TargetName=cppunit +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).lib +# End Special Build Tool + +!ELSEIF "$(CFG)" == "cppunit - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "WIN32" /YX /FD /GZ /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Debug\cppunitd.lib" +# Begin Special Build Tool +TargetPath=.\Debug\cppunitd.lib +TargetName=cppunitd +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).lib +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "cppunit - Win32 Release" +# Name "cppunit - Win32 Debug" +# Begin Group "documentation" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\ChangeLog +# End Source File +# Begin Source File + +SOURCE=..\..\CodingGuideLines.txt +# End Source File +# Begin Source File + +SOURCE=..\..\doc\cookbook.dox +# End Source File +# Begin Source File + +SOURCE=..\..\doc\FAQ +# End Source File +# Begin Source File + +SOURCE="..\..\INSTALL-unix" +# End Source File +# Begin Source File + +SOURCE="..\..\INSTALL-WIN32.txt" +# End Source File +# Begin Source File + +SOURCE=..\..\doc\Money.dox +# End Source File +# Begin Source File + +SOURCE=..\..\NEWS +# End Source File +# Begin Source File + +SOURCE=..\..\doc\other_documentation.dox +# End Source File +# Begin Source File + +SOURCE=..\..\THANKS +# End Source File +# Begin Source File + +SOURCE=..\..\TODO +# End Source File +# End Group +# Begin Group "listener" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\BriefTestProgressListener.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\BriefTestProgressListener.h +# End Source File +# Begin Source File + +SOURCE=.\TestResultCollector.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestResultCollector.h +# End Source File +# Begin Source File + +SOURCE=.\TestSuccessListener.cpp +# End Source File +# Begin Source File + +SOURCE=.\TextTestProgressListener.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TextTestProgressListener.h +# End Source File +# Begin Source File + +SOURCE=.\TextTestResult.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TextTestResult.h +# End Source File +# End Group +# Begin Group "textui" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\cppunit\ui\text\TestRunner.h +# End Source File +# Begin Source File + +SOURCE=.\TextTestRunner.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TextTestRunner.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\ui\text\TextTestRunner.h +# End Source File +# End Group +# Begin Group "portability" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE="..\..\include\cppunit\config\config-bcb5.h" +# End Source File +# Begin Source File + +SOURCE="..\..\include\cppunit\config\config-mac.h" +# End Source File +# Begin Source File + +SOURCE="..\..\include\cppunit\config\config-msvc6.h" +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\config\CppUnitApi.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitDeque.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitMap.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitSet.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitStack.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitVector.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Portability.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\config\SelectDllLoader.h +# End Source File +# End Group +# Begin Group "output" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\CompilerOutputter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\CompilerOutputter.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Outputter.h +# End Source File +# Begin Source File + +SOURCE=.\TextOutputter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TextOutputter.h +# End Source File +# Begin Source File + +SOURCE=.\XmlOutputter.cpp + +!IF "$(CFG)" == "cppunit - Win32 Release" + +!ELSEIF "$(CFG)" == "cppunit - Win32 Debug" + +# ADD CPP /W3 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\XmlOutputter.h +# End Source File +# Begin Source File + +SOURCE=.\XmlOutputterHook.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\XmlOutputterHook.h +# End Source File +# End Group +# Begin Group "core" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\AdditionalMessage.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\AdditionalMessage.h +# End Source File +# Begin Source File + +SOURCE=.\Asserter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Asserter.h +# End Source File +# Begin Source File + +SOURCE=.\Exception.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Exception.h +# End Source File +# Begin Source File + +SOURCE=.\Message.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Message.h +# End Source File +# Begin Source File + +SOURCE=.\SourceLine.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\SourceLine.h +# End Source File +# Begin Source File + +SOURCE=.\SynchronizedObject.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\SynchronizedObject.h +# End Source File +# Begin Source File + +SOURCE=.\Test.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Test.h +# End Source File +# Begin Source File + +SOURCE=.\TestAssert.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestAssert.h +# End Source File +# Begin Source File + +SOURCE=.\TestCase.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestCase.h +# End Source File +# Begin Source File + +SOURCE=.\TestComposite.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestComposite.h +# End Source File +# Begin Source File + +SOURCE=.\TestFailure.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestFailure.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestFixture.h +# End Source File +# Begin Source File + +SOURCE=.\TestLeaf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestLeaf.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestListener.h +# End Source File +# Begin Source File + +SOURCE=.\TestPath.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestPath.h +# End Source File +# Begin Source File + +SOURCE=.\TestResult.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestResult.h +# End Source File +# Begin Source File + +SOURCE=.\TestRunner.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestRunner.h +# End Source File +# Begin Source File + +SOURCE=.\TestSuite.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestSuite.h +# End Source File +# End Group +# Begin Group "helper" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\AutoRegisterSuite.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\HelperMacros.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestCaller.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestFactory.h +# End Source File +# Begin Source File + +SOURCE=.\TestFactoryRegistry.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestFactoryRegistry.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestFixtureFactory.h +# End Source File +# Begin Source File + +SOURCE=.\TestNamer.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestNamer.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilder.h +# End Source File +# Begin Source File + +SOURCE=.\TestSuiteBuilderContext.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilderContext.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestSuiteFactory.h +# End Source File +# Begin Source File + +SOURCE=.\TypeInfoHelper.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TypeInfoHelper.h +# End Source File +# End Group +# Begin Group "extension" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\Orthodox.h +# End Source File +# Begin Source File + +SOURCE=.\RepeatedTest.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\RepeatedTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestCaseDecorator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestCaseDecorator.h +# End Source File +# Begin Source File + +SOURCE=.\TestDecorator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestDecorator.h +# End Source File +# Begin Source File + +SOURCE=.\TestSetUp.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestSetUp.h +# End Source File +# End Group +# Begin Group "plugin" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\BeOsDynamicLibraryManager.cpp +# End Source File +# Begin Source File + +SOURCE=.\DynamicLibraryManager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManager.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicLibraryManagerException.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManagerException.h +# End Source File +# Begin Source File + +SOURCE=.\PlugInManager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\PlugInManager.h +# End Source File +# Begin Source File + +SOURCE=.\PlugInParameters.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\PlugInParameters.h +# End Source File +# Begin Source File + +SOURCE=.\ShlDynamicLibraryManager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\TestPlugIn.h +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInDefaultImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h +# End Source File +# Begin Source File + +SOURCE=.\UnixDynamicLibraryManager.cpp +# End Source File +# Begin Source File + +SOURCE=.\Win32DynamicLibraryManager.cpp +# End Source File +# End Group +# Begin Group "tools" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\cppunit\tools\Algorithm.h +# End Source File +# Begin Source File + +SOURCE=.\StringTools.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\tools\StringTools.h +# End Source File +# Begin Source File + +SOURCE=.\XmlDocument.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\tools\XmlDocument.h +# End Source File +# Begin Source File + +SOURCE=.\XmlElement.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\tools\XmlElement.h +# End Source File +# End Group +# Begin Group "protector" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\DefaultProtector.cpp +# End Source File +# Begin Source File + +SOURCE=.\DefaultProtector.h +# End Source File +# Begin Source File + +SOURCE=.\Protector.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Protector.h +# End Source File +# Begin Source File + +SOURCE=.\ProtectorChain.cpp +# End Source File +# Begin Source File + +SOURCE=.\ProtectorChain.h +# End Source File +# Begin Source File + +SOURCE=.\ProtectorContext.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\configure.in +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Makefile.am +# End Source File +# Begin Source File + +SOURCE=.\Makefile.am +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/src/cppunit/cppunit_dll.dsp b/lib/cppunit-1.10.0/src/cppunit/cppunit_dll.dsp new file mode 100644 index 0000000000..ee32f3d4c1 --- /dev/null +++ b/lib/cppunit-1.10.0/src/cppunit/cppunit_dll.dsp @@ -0,0 +1,678 @@ +# Microsoft Developer Studio Project File - Name="cppunit_dll" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=cppunit_dll - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "cppunit_dll.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "cppunit_dll.mak" CFG="cppunit_dll - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "cppunit_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "cppunit_dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "cppunit_dll - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "cppunit_dll___Win32_Release" +# PROP BASE Intermediate_Dir "cppunit_dll___Win32_Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDll" +# PROP Intermediate_Dir "ReleaseDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_BUILD_DLL" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:"..\..\lib\cppunit_dll.pdb" /machine:I386 +# SUBTRACT LINK32 /pdb:none +# Begin Special Build Tool +TargetDir=.\ReleaseDll +TargetPath=.\ReleaseDll\cppunit_dll.dll +TargetName=cppunit_dll +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).dll copy $(TargetDir)\$(TargetName).lib ..\..\lib\$(TargetName).lib +# End Special Build Tool + +!ELSEIF "$(CFG)" == "cppunit_dll - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "cppunit_dll___Win32_Debug" +# PROP BASE Intermediate_Dir "cppunit_dll___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDll" +# PROP Intermediate_Dir "DebugDll" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_BUILD_DLL" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:"..\..\lib\cppunitd_dll.pdb" /debug /machine:I386 /out:"DebugDll\cppunitd_dll.dll" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none +# Begin Special Build Tool +TargetDir=.\DebugDll +TargetPath=.\DebugDll\cppunitd_dll.dll +TargetName=cppunitd_dll +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).dll copy $(TargetDir)\$(TargetName).lib ..\..\lib\$(TargetName).lib +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "cppunit_dll - Win32 Release" +# Name "cppunit_dll - Win32 Debug" +# Begin Group "DllSpecific" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\DllMain.cpp +# End Source File +# End Group +# Begin Group "extension" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\Orthodox.h +# End Source File +# Begin Source File + +SOURCE=.\RepeatedTest.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\RepeatedTest.h +# End Source File +# Begin Source File + +SOURCE=.\TestCaseDecorator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestCaseDecorator.h +# End Source File +# Begin Source File + +SOURCE=.\TestDecorator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestDecorator.h +# End Source File +# Begin Source File + +SOURCE=.\TestSetUp.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestSetUp.h +# End Source File +# End Group +# Begin Group "helper" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\AutoRegisterSuite.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\HelperMacros.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestCaller.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestFactory.h +# End Source File +# Begin Source File + +SOURCE=.\TestFactoryRegistry.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestFactoryRegistry.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestFixtureFactory.h +# End Source File +# Begin Source File + +SOURCE=.\TestNamer.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestNamer.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilder.h +# End Source File +# Begin Source File + +SOURCE=.\TestSuiteBuilderContext.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilderContext.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TestSuiteFactory.h +# End Source File +# Begin Source File + +SOURCE=.\TypeInfoHelper.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\TypeInfoHelper.h +# End Source File +# End Group +# Begin Group "core" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\AdditionalMessage.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\AdditionalMessage.h +# End Source File +# Begin Source File + +SOURCE=.\Asserter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Asserter.h +# End Source File +# Begin Source File + +SOURCE=.\Exception.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Exception.h +# End Source File +# Begin Source File + +SOURCE=.\Message.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Message.h +# End Source File +# Begin Source File + +SOURCE=.\SourceLine.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\SourceLine.h +# End Source File +# Begin Source File + +SOURCE=.\SynchronizedObject.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\SynchronizedObject.h +# End Source File +# Begin Source File + +SOURCE=.\Test.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Test.h +# End Source File +# Begin Source File + +SOURCE=.\TestAssert.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestAssert.h +# End Source File +# Begin Source File + +SOURCE=.\TestCase.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestCase.h +# End Source File +# Begin Source File + +SOURCE=.\TestComposite.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestComposite.h +# End Source File +# Begin Source File + +SOURCE=.\TestFailure.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestFailure.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestFixture.h +# End Source File +# Begin Source File + +SOURCE=.\TestLeaf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestLeaf.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestListener.h +# End Source File +# Begin Source File + +SOURCE=.\TestPath.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestPath.h +# End Source File +# Begin Source File + +SOURCE=.\TestResult.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestResult.h +# End Source File +# Begin Source File + +SOURCE=.\TestRunner.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestRunner.h +# End Source File +# Begin Source File + +SOURCE=.\TestSuite.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestSuite.h +# End Source File +# End Group +# Begin Group "output" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\CompilerOutputter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\CompilerOutputter.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Outputter.h +# End Source File +# Begin Source File + +SOURCE=.\TestResultCollector.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TestResultCollector.h +# End Source File +# Begin Source File + +SOURCE=.\TextOutputter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TextOutputter.h +# End Source File +# Begin Source File + +SOURCE=.\XmlOutputter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\XmlOutputter.h +# End Source File +# Begin Source File + +SOURCE=.\XmlOutputterHook.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\XmlOutputterHook.h +# End Source File +# End Group +# Begin Group "portability" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE="..\..\include\cppunit\config\config-bcb5.h" +# End Source File +# Begin Source File + +SOURCE="..\..\include\cppunit\config\config-mac.h" +# End Source File +# Begin Source File + +SOURCE="..\..\include\cppunit\config\config-msvc6.h" +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\config\CppUnitApi.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitDeque.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitMap.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitSet.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitStack.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\portability\CppUnitVector.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Portability.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\config\SelectDllLoader.h +# End Source File +# End Group +# Begin Group "textui" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\include\cppunit\ui\text\TestRunner.h +# End Source File +# Begin Source File + +SOURCE=.\TextTestRunner.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TextTestRunner.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\ui\text\TextTestRunner.h +# End Source File +# End Group +# Begin Group "listener" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\BriefTestProgressListener.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\BriefTestProgressListener.h +# End Source File +# Begin Source File + +SOURCE=.\TestSuccessListener.cpp +# End Source File +# Begin Source File + +SOURCE=.\TextTestProgressListener.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TextTestProgressListener.h +# End Source File +# Begin Source File + +SOURCE=.\TextTestResult.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\TextTestResult.h +# End Source File +# End Group +# Begin Group "documentation" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\ChangeLog +# End Source File +# Begin Source File + +SOURCE=..\..\doc\cookbook.dox +# End Source File +# Begin Source File + +SOURCE=..\..\doc\FAQ +# End Source File +# Begin Source File + +SOURCE=..\..\NEWS +# End Source File +# Begin Source File + +SOURCE=..\..\doc\other_documentation.dox +# End Source File +# Begin Source File + +SOURCE=..\..\TODO +# End Source File +# End Group +# Begin Group "plugin" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\BeosDynamicLibraryManager.cpp +# End Source File +# Begin Source File + +SOURCE=.\DynamicLibraryManager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManager.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicLibraryManagerException.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManagerException.h +# End Source File +# Begin Source File + +SOURCE=.\PlugInManager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\PlugInManager.h +# End Source File +# Begin Source File + +SOURCE=.\PlugInParameters.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\PlugInParameters.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\TestPlugIn.h +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInDefaultImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h +# End Source File +# Begin Source File + +SOURCE=.\UnixDynamicLibraryManager.cpp +# End Source File +# Begin Source File + +SOURCE=.\Win32DynamicLibraryManager.cpp +# End Source File +# End Group +# Begin Group "tools" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\StringTools.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\tools\StringTools.h +# End Source File +# Begin Source File + +SOURCE=.\XmlDocument.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\tools\XmlDocument.h +# End Source File +# Begin Source File + +SOURCE=.\XmlElement.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\tools\XmlElement.h +# End Source File +# End Group +# Begin Group "protector" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\DefaultProtector.cpp +# End Source File +# Begin Source File + +SOURCE=.\DefaultProtector.h +# End Source File +# Begin Source File + +SOURCE=.\Protector.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Protector.h +# End Source File +# Begin Source File + +SOURCE=.\ProtectorChain.cpp +# End Source File +# Begin Source File + +SOURCE=.\ProtectorChain.h +# End Source File +# Begin Source File + +SOURCE=.\ProtectorContext.h +# End Source File +# End Group +# Begin Source File + +SOURCE="..\..\INSTALL-WIN32.txt" +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\Makefile.am +# End Source File +# Begin Source File + +SOURCE=.\Makefile.am +# End Source File +# Begin Source File + +SOURCE=..\..\include\cppunit\extensions\XmlInputHelper.h +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/COMHelper.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/COMHelper.h new file mode 100644 index 0000000000..add0e28277 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/COMHelper.h @@ -0,0 +1,111 @@ +#ifndef COMHelper_h +#define COMHelper_h + +#pragma warning( push) +#pragma warning( disable: 4786) +#pragma warning( disable: 4290) + +#include +#include + +#include +#include + +namespace COMUtility +{ + +// simple template to reduce the typing effort when doing reinterpret casts +template< typename Interface> + inline void** ppvoid( Interface **ppInterface) +{ + return reinterpret_cast< void**>( ppInterface); +} + + +template< typename Interface> + inline GUID* piid( const Interface* pInterface) +{ + return __uuidof( pInterface); +} + +// to be used with _com_ptr_t, uses function overloading +template< typename InterfacePtr> + inline GUID* piid( const InterfacePtr& pInterface) +{ + return const_cast< GUID*>( &pInterface.GetIID()); +} + + +template< typename Interface> + inline const GUID& riid( const Interface* pInterface) +{ + return *__uuidof( pInterface); +} + +// to be used with _com_ptr_t, use function overloading +template< typename InterfacePtr> + inline const GUID& riid( const InterfacePtr& pInterface) +{ + return pInterface.GetIID(); +} + + +// this is used for regular COM interface pointers +template < class rawTargetInterface, class rawSourceInterface> + inline rawTargetInterface* interface_cast( rawSourceInterface* pSrcInterface) throw( std::bad_cast) +{ + rawTargetInterface* pTargetInterface = NULL; + + if ( SUCCEEDED( pSrcInterface->QueryInterface( __uuidof( pTargetInterface), + reinterpret_cast(&pTargetInterface)))) + return pTargetInterface; + else + throw std::bad_cast(); +} + + +// non-throwing versions of the same - need to use parameter std::nothrow on function call +template < class rawTargetInterface, class rawSourceInterface> + inline rawTargetInterface* interface_cast( const std::nothrow_t&, + rawSourceInterface* pSrcInterface) throw() +{ + rawTargetInterface* pTargetInterface = NULL; + + pSrcInterface->QueryInterface( __uuidof( pTargetInterface), + reinterpret_cast(&pTargetInterface)); + return pTargetInterface; +} + + +// Is probably best used as a static member of the class, so it's +// accessible everywhere +class COMExceptionThrower +{ +public: + COMExceptionThrower( void){} + ~COMExceptionThrower( void){} + + COMExceptionThrower( const HRESULT errCode) + { + this->operator=( errCode); + } + +protected: + // don't allow regular copy constructor call + COMExceptionThrower( const COMExceptionThrower&); + +public: + inline const COMExceptionThrower& operator=( const HRESULT errCode) const throw( _com_error) + { + if ( FAILED( errCode)) + _com_raise_error( errCode); + + return *this; + } +}; + +} // end namespace COMUtility + +#pragma warning( pop) + +#endif // COMHelper_h diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.cpp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.cpp new file mode 100644 index 0000000000..ab8180ee71 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.cpp @@ -0,0 +1,110 @@ +// AddInMod.cpp : implementation file +// + +#include "stdafx.h" + +#include "DSPlugIn.h" +#include "COMHelper.h" +#include "DSAddIn.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +COMUtility::COMExceptionThrower CDSAddIn::cex_; + +CDSAddIn::~CDSAddIn( void) +{ +} + +// This is called when the user first loads the add-in, and on start-up +// of each subsequent Developer Studio session +STDMETHODIMP CDSAddIn::OnConnection(IApplication* pApp, VARIANT_BOOL bFirstTime, + long dwCookie, VARIANT_BOOL* OnConnection) +{ + HRESULT result = S_OK; + + try + { + CComPtr< IUnknown> pIUnk; + + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + + cex_ = _Module.GetClassObject( GetObjectCLSID(), IID_IUnknown, reinterpret_cast(&pIUnk)); + + cex_ = CoRegisterClassObject( + GetObjectCLSID(), + pIUnk, + CLSCTX_LOCAL_SERVER, + REGCLS_MULTIPLEUSE, + &classRegistrationId_ + ); + + pIApp_ = pApp; + + m_dwCookie = dwCookie; + *OnConnection = VARIANT_TRUE; + } + catch( const std::bad_cast&) + { + *OnConnection = VARIANT_FALSE; + } + catch( const _com_error&) + { + *OnConnection = VARIANT_FALSE; + } + + return result; +} + +// This is called on shut-down, and also when the user unloads the add-in +STDMETHODIMP CDSAddIn::OnDisconnection(VARIANT_BOOL bLastTime) +{ + pIApp_.Release(); + CoRevokeClassObject( classRegistrationId_); + + return S_OK; +} + + +// ITestRunnerDSPlugin +STDMETHODIMP CDSAddIn::goToLineInSourceCode( BSTR fileName, int lineNumber) +{ + HRESULT result = S_OK; + + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + + try + { + CComPtr< IDispatch> tmp; + CComPtr< IDocuments> pIDocuments; + CComPtr< ITextDocument> pITextDocu; + CComPtr< ITextSelection> pITextSel; + + cex_ = pIApp_->get_Documents( &tmp); + pIDocuments.Attach( COMUtility::interface_cast( tmp.p)); + tmp.Release(); + cex_ = pIDocuments->Open( fileName, + CComVariant(), + CComVariant(), + &tmp); + pITextDocu.Attach( COMUtility::interface_cast< ITextDocument>( tmp.p)); + tmp.Release(); + cex_ = pITextDocu->get_Selection( &tmp); + pITextSel.Attach( COMUtility::interface_cast< ITextSelection>( tmp.p)); + cex_ = pITextSel->GoToLine( lineNumber, CComVariant( 1)); + } + catch( const std::bad_cast&) + { + result = E_FAIL; + } + catch( const _com_error&) + { + result = E_FAIL; + } + + return result; +} diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.h new file mode 100644 index 0000000000..556f336e1a --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.h @@ -0,0 +1,59 @@ +// DSAddIn.h : header file +// + +#if !defined(AFX_DSADDIN_H__3F8385DE_5079_4944_A01B_236F76A0E901__INCLUDED_) +#define AFX_DSADDIN_H__3F8385DE_5079_4944_A01B_236F76A0E901__INCLUDED_ + + +#include "ToAddToDistribution/TestRunnerDSPluginVC6.h" +#include "COMHelper.h" + +// {F193CE54-716C-41CB-80B2-FA74CA3EE2AC} +// DEFINE_GUID(CLSID_DSAddIn, +// 0xf193ce54, 0x716c, 0x41cb, 0x80, 0xb2, 0xfa, 0x74, 0xca, 0x3e, 0xe2, 0xac); + +///////////////////////////////////////////////////////////////////////////// +// CDSAddIn + +class CDSAddIn : + public CComObjectRoot, + public CComCoClass, + public IDSAddIn, + public ITestRunnerDSPlugin +{ +public: + DECLARE_REGISTRY_RESOURCEID( IDR_DSADDIN) + + CDSAddIn(): classRegistrationId_( 0) {} + ~CDSAddIn(); + + BEGIN_COM_MAP(CDSAddIn) + COM_INTERFACE_ENTRY(IDSAddIn) + COM_INTERFACE_ENTRY(ITestRunnerDSPlugin) + END_COM_MAP() + DECLARE_NOT_AGGREGATABLE(CDSAddIn) + + DECLARE_CLASSFACTORY_SINGLETON( CDSAddIn) + +// IDSAddIns +public: + STDMETHOD( OnConnection)(THIS_ IApplication* pApp, VARIANT_BOOL bFirstTime, + long dwCookie, VARIANT_BOOL* OnConnection); + STDMETHOD( OnDisconnection)(THIS_ VARIANT_BOOL bLastTime); + +// ITestRunnerDSPlugin + STDMETHOD( goToLineInSourceCode)( BSTR fileName, int lineNumber); + + +protected: + CComPtr< IApplication> pIApp_; + DWORD classRegistrationId_; + DWORD m_dwCookie; + + static COMUtility::COMExceptionThrower cex_; +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_DSADDIN_H__3F8385DE_5079_4944_A01B_236F76A0E901__INCLUDED) diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.cpp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.cpp new file mode 100644 index 0000000000..176744321a --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.cpp @@ -0,0 +1,170 @@ +// DSPlugIn.cpp : Defines the initialization routines for the DLL. +// + +#include "stdafx.h" +#include +#include "DSPlugIn.h" +#include "DSAddIn.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +CComModule _Module; + +BEGIN_OBJECT_MAP(ObjectMap) + OBJECT_ENTRY(CLSID_DSAddIn, CDSAddIn) +END_OBJECT_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CDSPlugInApp + +class CDSPlugInApp : public CWinApp +{ +public: + CDSPlugInApp(); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CDSPlugInApp) + public: + virtual BOOL InitInstance(); + virtual int ExitInstance(); + //}}AFX_VIRTUAL + + //{{AFX_MSG(CDSPlugInApp) + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + + +///////////////////////////////////////////////////////////////////////////// +// CDSPlugInApp + +BEGIN_MESSAGE_MAP(CDSPlugInApp, CWinApp) + //{{AFX_MSG_MAP(CDSPlugInApp) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// The one and only CDSPlugInApp object + +CDSPlugInApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// CDSPlugInApp construction + +CDSPlugInApp::CDSPlugInApp() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + +///////////////////////////////////////////////////////////////////////////// +// CDSPlugInApp initialization + +BOOL CDSPlugInApp::InitInstance() +{ + _Module.Init(ObjectMap, m_hInstance, &LIBID_TestRunnerDSPluginLib); + return CWinApp::InitInstance(); +} + +int CDSPlugInApp::ExitInstance() +{ + _Module.Term(); + return CWinApp::ExitInstance(); +} + +///////////////////////////////////////////////////////////////////////////// +// Special entry points required for inproc servers + +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + return _Module.GetClassObject(rclsid, riid, ppv); +} + +STDAPI DllCanUnloadNow(void) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + return (AfxDllCanUnloadNow()==S_OK && _Module.GetLockCount()==0) ? S_OK : S_FALSE; +} + +// by exporting DllRegisterServer, you can use regsvr32.exe +STDAPI DllRegisterServer(void) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + HRESULT hRes = S_OK; + + // Registers object, typelib and all interfaces in typelib + hRes = _Module.RegisterServer(TRUE); + if (FAILED(hRes)) + return hRes; + + // Register description of this add-in object in its own + // "/Description" subkey. + // TODO: If you add more add-ins to this module, you need + // to register all of their descriptions, each description + // in each add-in object's registry CLSID entry: + // HKEY_CLASSES_ROOT\Clsid\{add-in CLSID}\Description="add-in description" +/* + _ATL_OBJMAP_ENTRY* pEntry = _Module.m_pObjMap; + CRegKey key; + LONG lRes = key.Open(HKEY_CLASSES_ROOT, _T("CLSID")); + if (lRes == ERROR_SUCCESS) + { + USES_CONVERSION; + LPOLESTR lpOleStr; + StringFromCLSID(*pEntry->pclsid, &lpOleStr); + LPTSTR lpsz = OLE2T(lpOleStr); + + lRes = key.Open(key, lpsz); + if (lRes == ERROR_SUCCESS) + { + CString strDescription; + strDescription.LoadString(IDS_DSPLUGIN_DESCRIPTION); + key.SetKeyValue(_T("Description"), strDescription); + } + CoTaskMemFree(lpOleStr); + } + if (lRes != ERROR_SUCCESS) + hRes = HRESULT_FROM_WIN32(lRes); +*/ + return hRes; +} + +///////////////////////////////////////////////////////////////////////////// +// DllUnregisterServer - Removes entries from the system registry + +STDAPI DllUnregisterServer(void) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + + HRESULT hRes = S_OK; + _Module.UnregisterServer(); + return hRes; +} + + +///////////////////////////////////////////////////////////////////////////// +// Debugging support + +// GetLastErrorDescription is used in the implementation of the VERIFY_OK +// macro, defined in stdafx.h. + +#ifdef _DEBUG + +void GetLastErrorDescription(CComBSTR& bstr) +{ + CComPtr pErrorInfo; + if (GetErrorInfo(0, &pErrorInfo) == S_OK) + pErrorInfo->GetDescription(&bstr); +} + +#endif //_DEBUG diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.def b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.def new file mode 100644 index 0000000000..38cc6e15bc --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.def @@ -0,0 +1,11 @@ +; DSPlugIn.def : Declares the module parameters for the DLL. + +LIBRARY "TestRunnerDSPlugin" +DESCRIPTION 'TestRunnerDSPlugin Windows Dynamic Link Library' + +EXPORTS + ; Explicit exports can go here + DllCanUnloadNow PRIVATE + DllGetClassObject PRIVATE + DllRegisterServer PRIVATE + DllUnregisterServer PRIVATE diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.dsp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.dsp new file mode 100644 index 0000000000..4617f5594f --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.dsp @@ -0,0 +1,608 @@ +# Microsoft Developer Studio Project File - Name="DSPlugIn" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=DSPlugIn - Win32 Debug Unicode +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "DSPlugIn.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "DSPlugIn.mak" CFG="DSPlugIn - Win32 Debug Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "DSPlugIn - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "DSPlugIn - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "DSPlugIn - Win32 Release Unicode" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "DSPlugIn - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "DSPlugIn" +# PROP Scc_LocalPath ".." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +# SUBTRACT MTL /mktyplib203 +# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /i "../../../../lib" /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 /nologo /subsystem:windows /dll /machine:I386 /out:"Release/TestRunnerDSPlugIn.dll" +# Begin Custom Build - Performing Registration +OutDir=.\Release +TargetPath=.\Release\TestRunnerDSPlugIn.dll +InputPath=.\Release\TestRunnerDSPlugIn.dll +SOURCE="$(InputPath)" + +"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + rem echo Automatically done when the add-in is registered with VC++ + rem regsvr32 "$(TargetPath)" + echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" + rem echo Server registration done! + +# End Custom Build +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=duplicating DLL to lib directory +PostBuild_Cmds=echo The following command may fail if you have already registered the add-in copy Release\TestRunnerDSPlugIn.dll ..\..\..\lib\TestRunnerDSPlugIn.dll +# End Special Build Tool + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +# SUBTRACT MTL /mktyplib203 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /i "../../../../lib" /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug/TestRunnerDSPlugInD.dll" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none +# Begin Custom Build - Performing Registration +OutDir=.\Debug +TargetPath=.\Debug\TestRunnerDSPlugInD.dll +InputPath=.\Debug\TestRunnerDSPlugInD.dll +SOURCE="$(InputPath)" + +"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + rem echo Automatically done when the add-in is registered with VC++ + rem regsvr32 "$(TargetPath)" + echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" + rem echo Server registration done! + +# End Custom Build + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "DSPlugIn___Win32_Release_Unicode" +# PROP BASE Intermediate_Dir "DSPlugIn___Win32_Release_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseUnicode" +# PROP Intermediate_Dir "ReleaseUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../include" /D "NDEBUG" /D "_MBCS" /D "_USRDLL" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "_UNICODE" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# SUBTRACT BASE MTL /mktyplib203 +# ADD MTL /nologo /D "NDEBUG" /win32 +# SUBTRACT MTL /mktyplib203 +# ADD BASE RSC /l 0x409 /i "../../../../lib" /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /i "../../../../lib" /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /machine:I386 /out:"Release/TestRunnerDSPlugIn.dll" +# ADD LINK32 /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /dll /machine:I386 /out:"ReleaseUnicode/TestRunnerDSPlugIn.dll" +# Begin Custom Build - Performing Registration +OutDir=.\ReleaseUnicode +TargetPath=.\ReleaseUnicode\TestRunnerDSPlugIn.dll +InputPath=.\ReleaseUnicode\TestRunnerDSPlugIn.dll +SOURCE="$(InputPath)" + +"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + rem echo Automatically done when the add-in is registered with VC++ + rem regsvr32 "$(TargetPath)" + echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" + rem echo Server registration done! + +# End Custom Build + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "DSPlugIn___Win32_Debug_Unicode" +# PROP BASE Intermediate_Dir "DSPlugIn___Win32_Debug_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugUnicode" +# PROP Intermediate_Dir "DebugUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "_DEBUG" /D "_MBCS" /D "_USRDLL" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "_UNICODE" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# SUBTRACT BASE MTL /mktyplib203 +# ADD MTL /nologo /D "_DEBUG" /win32 +# SUBTRACT MTL /mktyplib203 +# ADD BASE RSC /l 0x409 /i "../../../../lib" /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /i "../../../../lib" /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug/TestRunnerDSPlugInD.dll" /pdbtype:sept +# SUBTRACT BASE LINK32 /pdb:none +# ADD LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /out:"DebugUnicode/TestRunnerDSPlugInD.dll" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none +# Begin Custom Build - Performing Registration +OutDir=.\DebugUnicode +TargetPath=.\DebugUnicode\TestRunnerDSPlugInD.dll +InputPath=.\DebugUnicode\TestRunnerDSPlugInD.dll +SOURCE="$(InputPath)" + +"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + rem echo Automatically done when the add-in is registered with VC++ + rem regsvr32 "$(TargetPath)" + echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" + rem echo Server registration done! + +# End Custom Build +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=duplicating DLL to lib directory +PostBuild_Cmds=echo The following command may fail if you have already registered the add-in copy Debug\TestRunnerDSPlugInD.dll ..\..\..\lib\TestRunnerDSPlugInD.dll +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "DSPlugIn - Win32 Release" +# Name "DSPlugIn - Win32 Debug" +# Name "DSPlugIn - Win32 Release Unicode" +# Name "DSPlugIn - Win32 Debug Unicode" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\DSAddIn.cpp + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\DSPlugIn.cpp + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\DSPlugIn.def + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\DSPlugIn.rc + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +# ADD CPP /Yc"stdafx.h" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 +# ADD CPP /Yc"stdafx.h" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 +# ADD CPP /Yc"stdafx.h" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 +# ADD CPP /Yc"stdafx.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\TestRunnerDSPlugin.idl + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +# ADD MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 +# ADD MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c" /Oicf + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 +# ADD BASE MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c" +# ADD MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 +# ADD BASE MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c" /Oicf +# ADD MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c" /Oicf + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ToAddToDistribution\TestRunnerDSPluginVC6_i.c + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\COMHelper.h + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\DSAddIn.h + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\DSPlugIn.h + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\Resource.h + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\res\DSPlugIn.rc2 +# PROP Exclude_From_Scan -1 +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\DSPlugIn.rgs + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\res\TBarLrge.bmp + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\res\TBarMedm.bmp + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Group +# Begin Source File + +SOURCE=.\ReadMe.txt + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\TestRunnerDSPlugin.tlb + +!IF "$(CFG)" == "DSPlugIn - Win32 Release" + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Release Unicode" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "DSPlugIn - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.h new file mode 100644 index 0000000000..7d1720a34f --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.h @@ -0,0 +1,23 @@ +// DSPlugIn.h : main header file for the DSPLUGIN DLL +// + +#if !defined(AFX_DSPLUGIN_H__4DD05CAB_F04B_43DE_8B5D_17B299239CD9__INCLUDED_) +#define AFX_DSPLUGIN_H__4DD05CAB_F04B_43DE_8B5D_17B299239CD9__INCLUDED_ + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +#include "resource.h" // main symbols + +#include +#include +#include +#include +#include + + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_DSPLUGIN_H__4DD05CAB_F04B_43DE_8B5D_17B299239CD9__INCLUDED) diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rc b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rc new file mode 100644 index 0000000000..b2c9d368ee --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rc @@ -0,0 +1,156 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif //_WIN32\r\n" + "#include ""res\\DSPlugIn.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "1 TYPELIB ""TestRunnerDSPlugin.tlb""\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "\0" + VALUE "CompanyName", "GNU\0" + VALUE "FileDescription", "Cppunit.TestRunner Developer Studio Addin\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "DSPlugIn\0" + VALUE "LegalCopyright", "Copyright (C) 2001\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "TestRunnerDSPlugin.dll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "TestRunnerDSPlugin Dynamic Link Library\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// REGISTRY +// + +IDR_DSADDIN REGISTRY DISCARDABLE "DSPlugIn.rgs" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_DSPLUGIN_LONGNAME "CppUnit Developer Studio Add-in" + IDS_DSPLUGIN_DESCRIPTION + "Allows TestRunner dialog of cppunit to invoke the line of code where assert occurred" + IDS_CMD_STRING "\nDSPlugIn Sample Command\nDisplays a message box\nDSPlugIn Command" +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 +#include "res\DSPlugIn.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif +1 TYPELIB "TestRunnerDSPlugin.tlb" + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rgs b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rgs new file mode 100644 index 0000000000..93aefb717a --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rgs @@ -0,0 +1,32 @@ +HKCR +{ + GNU.cppunit.DevStudioAddin.1 = s 'CppUnit.Testrunner Developer Studio Add-in' + { + CLSID = s '{F193CE54-716C-41CB-80B2-FA74CA3EE2AC}' + } + GNU.cppunit.DevStudioAddin = s 'CppUnit.Testrunner Developer Studio Add-in' + { + CLSID = s '{F193CE54-716C-41CB-80B2-FA74CA3EE2AC}' + CurVer = s 'GNU.cppunit.DevStudioAddin.1' + } + NoRemove CLSID + { + ForceRemove {F193CE54-716C-41CB-80B2-FA74CA3EE2AC} = s 'CppUnit.Testrunner Developer Studio Add-in' + { + ProgID = s 'GNU.cppunit.DevStudioAddin.1' + VersionIndependentProgID = s 'GNU.cppunit.DevStudioAddin' + InprocServer32 = s '%MODULE%' + TypeLib = s '{3ADE0E38-5A56-4a68-BD8D-67E9E7502971}' + Description = s 'Allows TestRunner dialog of cppunit to invoke the line of code where error occurred' + } + } + NoRemove Interface + { + ForceRemove {3ADE0E37-5A56-4a68-BD8D-67E9E7502971} = s 'ITestRunnerDSPlugin' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{3ADE0E38-5A56-4a68-BD8D-67E9E7502971}' + } + } +} diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/ReadMe.txt b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/ReadMe.txt new file mode 100644 index 0000000000..0384029a30 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/ReadMe.txt @@ -0,0 +1,96 @@ +======================================================================== + DEVELOPER STUDIO ADD-IN : DSPlugIn +======================================================================== + + +The Add-in Wizard has created this DSPlugIn DLL for you. This DLL not only +demonstrates the basics of creating a Developer Studio add-in, but it is also +a starting point for writing your own add-in. + +An add-in mainly does two things. + (1) It adds commands to Developer Studio, which can then be tied + to keystrokes or toolbar buttons by the user or programmatically + by the add-in. + (2) It responds to events fired by Developer Studio. +In both cases, the add-in code has access to the full Developer Studio +Automation Object Model, and may manipulate those objects to affect the +behavior of Developer Studio. + +This file contains a summary of what you will find in each of the files that +make up your DSPlugIn DLL. + + +DSPlugIn.h + This is the main header file for the DLL. It declares the + CDSPlugInApp class. + +DSPlugIn.cpp + This is the main DLL source file. It contains the class CDSPlugInApp. + It also contains the OLE entry points required of inproc servers. + +DSPlugIn.dsp + This file (the project file) contains information at the project level and + is used to build a single project or subproject. Other users can share the + project (.dsp) file, but they should export the makefiles locally. + +DSPlugIn.odl + This file contains the Object Description Language source code for the + type library of your DLL. + +DSPlugIn.rc + This is a listing of all of the Microsoft Windows resources that the + program uses. This file can be directly edited in Microsoft + Developer Studio. + +res\DSPlugIn.rc2 + This file contains resources that are not edited by Microsoft + Developer Studio. You should place all resources not + editable by the resource editor in this file. + +DSPlugIn.def + This file contains information about the DLL that must be + provided to run with Microsoft Windows. It defines parameters + such as the name and description of the DLL. It also exports + functions from the DLL. + +DSPlugIn.clw + This file contains information used by ClassWizard to edit existing + classes or add new classes. ClassWizard also uses this file to store + information needed to create and edit message maps and dialog data + maps and to create prototype member functions. + +///////////////////////////////////////////////////////////////////////////// +Add-in-specific files: + +DSAddIn.cpp, DSAddIn.h + These files contain the CDSAddIn class, which implements the + IDSAddIn interface. This interface contains handlers + for connecting and disconnecting the add-in. + +Commands.cpp, Commands.h + These files contain the CCommands class, which implements your + command dispatch interface. This interface contains one method + for each command you add to Developer Studio. It already implements + a sample command (DSPlugInCommand) which displays a message + box when it is invoked. You will probably want to rename and modify this + command, as well as add your own commands. + + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named DSPlugIn.pch and a precompiled types file named StdAfx.obj. + +Resource.h + This is the standard header file, which defines new resource IDs. + Microsoft Developer Studio reads and updates this file. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.cpp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.cpp new file mode 100644 index 0000000000..f233c6ed37 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.cpp @@ -0,0 +1,7 @@ +// stdafx.cpp : source file that includes just the standard includes +// DSPlugIn.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +#include "atlimpl.cpp" diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.h new file mode 100644 index 0000000000..eef9da856d --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.h @@ -0,0 +1,72 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__4D384BCD_0580_402B_8270_1C9B5FB5ADA8__INCLUDED_) +#define AFX_STDAFX_H__4D384BCD_0580_402B_8270_1C9B5FB5ADA8__INCLUDED_ + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include // MFC core and standard components +#include + +#include +//You may derive a class from CComModule and use it if you want to override +//something, but do not change the name of _Module +extern CComModule _Module; +#include + +// Developer Studio Object Model +#include +#include +#include +#include +#include +#include +#include +#include +#include + +///////////////////////////////////////////////////////////////////////////// +// Debugging support + +// Use VERIFY_OK around all calls to the Developer Studio objects which +// you expect to return S_OK. +// In DEBUG builds of your add-in, VERIFY_OK displays an ASSERT dialog box +// if the expression returns an HRESULT other than S_OK. If the HRESULT +// is a success code, the ASSERT box will display that HRESULT. If it +// is a failure code, the ASSERT box will display that HRESULT plus the +// error description string provided by the object which raised the error. +// In RETAIL builds of your add-in, VERIFY_OK just evaluates the expression +// and ignores the returned HRESULT. + +#ifdef _DEBUG + +void GetLastErrorDescription(CComBSTR& bstr); // Defined in DSPlugIn.cpp +#define VERIFY_OK(f) \ + { \ + HRESULT hr = (f); \ + if (hr != S_OK) \ + { \ + if (FAILED(hr)) \ + { \ + CComBSTR bstr; \ + GetLastErrorDescription(bstr); \ + _RPTF2(_CRT_ASSERT, "Object call returned %lx\n\n%S", hr, (BSTR) bstr); \ + } \ + else \ + _RPTF1(_CRT_ASSERT, "Object call returned %lx", hr); \ + } \ + } + +#else //_DEBUG + +#define VERIFY_OK(f) (f); + +#endif //_DEBUG + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__4D384BCD_0580_402B_8270_1C9B5FB5ADA8__INCLUDED) diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/TestRunnerDSPlugin.idl b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/TestRunnerDSPlugin.idl new file mode 100644 index 0000000000..9770d9ce92 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/TestRunnerDSPlugin.idl @@ -0,0 +1,43 @@ +// BCProto.idl : IDL source for BCProto.dll +// + +// This file will be processed by the MIDL tool to +// produce the type library (BCProto.tlb) and marshalling code. + +import "oaidl.idl"; +import "ocidl.idl"; + +[ + object, + uuid(3ADE0E37-5A56-4a68-BD8D-67E9E7502971), + helpstring("ITestRunnerDSPlugin Interface"), + pointer_default(unique), + oleautomation +] +interface ITestRunnerDSPlugin : IUnknown +{ + // please let me know whether get_current is accessible through VB + [helpstring("command goToLineInSourceCode")] + HRESULT goToLineInSourceCode( [in] BSTR fileName, [in] int lineNumber); +}; + + +[ + uuid(3ADE0E38-5A56-4a68-BD8D-67E9E7502971), + version(1.0), + helpstring("TestRunnerDSPlugin 1.0 Type Library") +] +library TestRunnerDSPluginLib +{ + importlib("stdole32.tlb"); + + [ + uuid( F193CE54-716C-41CB-80B2-FA74CA3EE2AC), + version(1.0), + helpstring("TestRunner Developer Studio Plugin") + ] + coclass DSAddIn + { + [default] interface ITestRunnerDSPlugin; + } +}; \ No newline at end of file diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/DSPlugIn.rc2 b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/DSPlugIn.rc2 new file mode 100644 index 0000000000..f61a889462 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/DSPlugIn.rc2 @@ -0,0 +1,13 @@ +// +// DSPLUGIN.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarLrge.bmp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarLrge.bmp new file mode 100644 index 0000000000..c128524c3f Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarLrge.bmp differ diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarMedm.bmp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarMedm.bmp new file mode 100644 index 0000000000..6f24e11e9e Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarMedm.bmp differ diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/resource.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/resource.h new file mode 100644 index 0000000000..6bddcc0b2d --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/resource.h @@ -0,0 +1,19 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by DSPlugIn.rc +// +#define IDS_DSPLUGIN_LONGNAME 1 +#define IDS_DSPLUGIN_DESCRIPTION 2 +#define IDS_CMD_STRING 3 +#define IDR_DSADDIN 133 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 134 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.cpp b/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.cpp new file mode 100644 index 0000000000..7292704cd3 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.cpp @@ -0,0 +1,195 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#ifndef _UNICODE +#define TCERR std::cerr +#else +#define TCERR std::wcerr +#endif + +class NotOwningTestRunner : public CppUnit::TestRunner +{ +public: + typedef CppUnit::TestRunner SuperClass; // work around VC++ bug + + void addTest( CppUnit::Test *test ) + { + SuperClass::addTest( new CppUnit::TestDecorator( test ) ); + } +}; + + +/*! Converts a ansi string to a TCHAR string. + */ +std::basic_string +toVariableString( const char *text ) +{ +#ifdef _UNICODE + int textLength = ::strlen( text ); + + wchar_t *unicodeString = new wchar_t[ textLength + 1 ]; + + ::MultiByteToWideChar( CP_THREAD_ACP, MB_PRECOMPOSED, + text, textLength, + unicodeString, textLength + 1 ); + + std::wstring str( unicodeString ); + delete[] unicodeString; + return str; +#else + return text; +#endif +} + + +/*! Converts a TCHAR string to an ANSI string. + */ +std::string +toAnsiString( const TCHAR *text ) +{ +#ifdef _UNICODE + int bufferLength = ::WideCharToMultiByte( CP_THREAD_ACP, 0, + text, text.GetLength(), + NULL, 0, NULL, NULL ) +1; + char *ansiString = new char[bufferLength]; + ::WideCharToMultiByte( CP_THREAD_ACP, 0, + text, text.GetLength(), + ansiString, bufferLength, + NULL, + NULL ); + + std::string str( ansiString, bufferLength-1 ); + delete[] ansiString; + + return str; +#else + return std::string( text ); +#endif +} + + +/*! Runs the specified tests located in the root suite. + * \param root Root suite that contains all the test of the DLL. + * \param testPaths Array of string that contains the test paths of all the test to run. + * \param numberOfPath Number of test paths in \a testPaths. If 0 then \a root suite + * is run. + * \return \c true if the run succeed, \c false if a test failed or if a test + * path was not resolved. + */ +bool +runDllTest( CppUnit::Test *root, + TCHAR *testPaths[], + int numberOfPath ) +{ + CppUnit::TestResult controller; + CppUnit::TestResultCollector result; + controller.addListener( &result ); + CppUnit::TextTestProgressListener progress; + controller.addListener( &progress ); + + NotOwningTestRunner runner; + if ( numberOfPath == 0 ) + runner.addTest( root ); + else + { + for ( int index =0; index < numberOfPath; ++index ) + { + const TCHAR *testPath = testPaths[index]; + try + { + runner.addTest( root->resolveTestPath( testPath).getChildTest() ); + } + catch ( std::invalid_argument & ) + { + TCERR << _T("Failed to resolve test path: ") << testPath << std::endl; + return false; + } + } + } + + runner.run( controller ); + + std::cerr << std::endl; + + CppUnit::CompilerOutputter outputter( &result, std::cerr ); + outputter.write(); + + return result.wasSuccessful(); +} + + +/*! Main + * + * Usage: + * + * DllPlugInTester.exe dll-filename [testpath1] [testpath2]... + * + * dll-filename must be the name of the DLL. If the DLL use some other DLL, they + * should be in the path or in the same directory as the DLL. The DLL must export + * a function named "GetTestPlugInInterface" with the signature + * GetTestPlugInInterfaceFunction. Both are defined in: + * \code + * #include + * \endcode. + * + * See examples/msvc6/TestPlugIn for an example of post-build testing. + * + * If no test path is specified, they all the test of the suite returned by the DLL + * are run. + * + * You can specify as much test path as you which. Only the test specified by the + * test paths will be run. Test paths are resolved using Test::resolveTestPath() on + * the suite returned by the DLL. + * + * If all test succeed and no error happen then the application exit with code 0. + * If any error occurs (failed to load dll, failed to resolve test paths) or a + * test fail, the application exit with code 1. + */ +int +_tmain( int argc, + TCHAR* argv[], + TCHAR* envp[] ) +{ + const int successReturnCode = 0; + const int failureReturnCode = 1; + + // check command line + const TCHAR *applicationName = argv[0]; + if ( argc < 2 ) + { + TCERR << _T("Usage: ") << std::endl + << applicationName + << " dll-filename [test-path] [test-path]..." + << std::endl; + return failureReturnCode; + } + + // open the dll + const TCHAR *dllFileName = argv[1]; + + bool wasSuccessful = false; + try + { + CppUnit::TestPlugInSuite suite( dllFileName ); + wasSuccessful = runDllTest( &suite, argv+2, argc-2 ); + } + catch ( CppUnit::DynamicLibraryManagerException &e ) + { + TCERR << "Failed to load test plug-in:" << std::endl + << toVariableString( e.what() ) << std::endl; + } + + return wasSuccessful ? successReturnCode : failureReturnCode; +} + + diff --git a/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.dsp b/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.dsp new file mode 100644 index 0000000000..2f831f02c3 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.dsp @@ -0,0 +1,150 @@ +# Microsoft Developer Studio Project File - Name="DllPlugInTester" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=DllPlugInTester - Win32 Debug Unicode +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "DllPlugInTester.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "DllPlugInTester.mak" CFG="DllPlugInTester - Win32 Debug Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "DllPlugInTester - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "DllPlugInTester - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "DllPlugInTester - Win32 Release Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE "DllPlugInTester - Win32 Debug Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "DllPlugInTester - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\lib\DllPlugInTester.exe" /libpath:"../../../lib" + +!ELSEIF "$(CFG)" == "DllPlugInTester - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\lib\DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../../lib" + +!ELSEIF "$(CFG)" == "DllPlugInTester - Win32 Release Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "DllPlugInTester___Win32_Release_Unicode" +# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Release_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseUnicode" +# PROP Intermediate_Dir "ReleaseUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\lib\DllPlugInTesteru.exe" /libpath:"../../../lib" + +!ELSEIF "$(CFG)" == "DllPlugInTester - Win32 Debug Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "DllPlugInTester___Win32_Debug_Unicode" +# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Debug_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugUnicode" +# PROP Intermediate_Dir "DebugUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../../lib" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\lib\DllPlugInTesterud.exe" /pdbtype:sept /libpath:"../../../lib" + +!ENDIF + +# Begin Target + +# Name "DllPlugInTester - Win32 Release" +# Name "DllPlugInTester - Win32 Debug" +# Name "DllPlugInTester - Win32 Release Unicode" +# Name "DllPlugInTester - Win32 Debug Unicode" +# Begin Source File + +SOURCE=.\DllPlugInTester.cpp +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/ReadMe.txt b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/ReadMe.txt new file mode 100644 index 0000000000..fac526041b --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/ReadMe.txt @@ -0,0 +1,88 @@ +======================================================================== + MICROSOFT FOUNDATION CLASS LIBRARY : TestPlugInRunner +======================================================================== + + +AppWizard has created this TestPlugInRunner application for you. This application +not only demonstrates the basics of using the Microsoft Foundation classes +but is also a starting point for writing your application. + +This file contains a summary of what you will find in each of the files that +make up your TestPlugInRunner application. + +TestPlugInRunner.dsp + This file (the project file) contains information at the project level and + is used to build a single project or subproject. Other users can share the + project (.dsp) file, but they should export the makefiles locally. + +TestPlugInRunner.h + This is the main header file for the application. It includes other + project specific headers (including Resource.h) and declares the + TestPlugInRunnerApp application class. + +TestPlugInRunner.cpp + This is the main application source file that contains the application + class TestPlugInRunnerApp. + +TestPlugInRunner.rc + This is a listing of all of the Microsoft Windows resources that the + program uses. It includes the icons, bitmaps, and cursors that are stored + in the RES subdirectory. This file can be directly edited in Microsoft + Visual C++. + +TestPlugInRunner.clw + This file contains information used by ClassWizard to edit existing + classes or add new classes. ClassWizard also uses this file to store + information needed to create and edit message maps and dialog data + maps and to create prototype member functions. + +res\TestPlugInRunner.ico + This is an icon file, which is used as the application's icon. This + icon is included by the main resource file TestPlugInRunner.rc. + +res\TestPlugInRunner.rc2 + This file contains resources that are not edited by Microsoft + Visual C++. You should place all resources not editable by + the resource editor in this file. + + + + +///////////////////////////////////////////////////////////////////////////// + +AppWizard creates one dialog class: + +TestPlugInRunnerDlg.h, TestPlugInRunnerDlg.cpp - the dialog + These files contain your TestPlugInRunnerDlg class. This class defines + the behavior of your application's main dialog. The dialog's + template is in TestPlugInRunner.rc, which can be edited in Microsoft + Visual C++. + + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named TestPlugInRunner.pch and a precompiled types file named StdAfx.obj. + +Resource.h + This is the standard header file, which defines new resource IDs. + Microsoft Visual C++ reads and updates this file. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +If your application uses MFC in a shared DLL, and your application is +in a language other than the operating system's current language, you +will need to copy the corresponding localized resources MFC42XXX.DLL +from the Microsoft Visual C++ CD-ROM onto the system or system32 directory, +and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation. +For example, MFC42DEU.DLL contains resources translated to German.) If you +don't do this, some of the UI elements of your application will remain in the +language of the operating system. + +///////////////////////////////////////////////////////////////////////////// diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/Resource.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/Resource.h new file mode 100644 index 0000000000..e9b1bea2a9 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/Resource.h @@ -0,0 +1,49 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by TestPlugInRunner.rc +// +#define IDS_ERROR_SELECT_TEST 1 +#define IDS_ERRORLIST_TYPE 2 +#define IDS_ERRORLIST_NAME 3 +#define IDS_ERRORLIST_FAILED_CONDITION 4 +#define IDS_ERRORLIST_LINE_NUMBER 5 +#define IDS_ERRORLIST_FILE_NAME 6 +#define IDR_MAINFRAME 128 +#define IDR_ACCELERATOR_TEST_RUNNER 131 +#define IDC_LIST 1000 +#define ID_RUN 1001 +#define ID_STOP 1002 +#define IDC_PROGRESS 1003 +#define IDC_INDICATOR 1004 +#define IDC_COMBO_TEST 1005 +#define IDC_STATIC_RUNS 1007 +#define IDC_STATIC_ERRORS 1008 +#define IDC_STATIC_FAILURES 1009 +#define IDC_EDIT_TIME 1010 +#define IDC_BUTTON1 1011 +#define IDC_BROWSE_TEST 1011 +#define IDC_TREE_TEST 1012 +#define IDC_DETAILS 1012 +#define IDC_CHECK_AUTORUN 1013 +#define IDC_RUNNING_TEST_CASE_LABEL 1016 +#define IDC_STATIC_TEST_NAME 1017 +#define IDC_STATIC_PROGRESS 1018 +#define IDC_STATIC_LABEL_RUNS 1019 +#define IDC_STATIC_LABEL_ERRORS 1020 +#define IDC_STATIC_LABEL_FAILURES 1021 +#define IDC_STATIC_PROGRESS_BAR 1022 +#define IDC_STATIC_DETAILS 1023 +#define IDC_CHOOSE_DLL 1040 +#define IDC_RELOAD_DLL 1041 +#define ID_QUIT_APPLICATION 32771 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 130 +#define _APS_NEXT_COMMAND_VALUE 32772 +#define _APS_NEXT_CONTROL_VALUE 1042 +#define _APS_NEXT_SYMED_VALUE 103 +#endif +#endif diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.cpp new file mode 100644 index 0000000000..f0e39426dd --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// TestPlugInRunner.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + + + diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.h new file mode 100644 index 0000000000..7d2a6ea8ce --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.h @@ -0,0 +1,29 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__2CCC624C_C151_496F_A333_28951EA9A8D3__INCLUDED_) +#define AFX_STDAFX_H__2CCC624C_C151_496F_A333_28951EA9A8D3__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#pragma warning( disable : 4786 ) // warning of hell: debug symbol too long... + +#include // MFC core and standard components +#include // MFC extensions +#include // MFC Automation classes +#include // MFC support for Internet Explorer 4 Common Controls +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__2CCC624C_C151_496F_A333_28951EA9A8D3__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.cpp new file mode 100644 index 0000000000..7fd05745ef --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.cpp @@ -0,0 +1,93 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestPlugIn.cpp for class TestPlugIn +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/06/23 +// ////////////////////////////////////////////////////////////////////////// + +#include "StdAfx.h" +#include "TestPlugIn.h" +#include +#include +#include +#include "TestPlugInException.h" + + +TestPlugIn::TestPlugIn( const std::string fileName ) : + m_fileName( fileName ) +{ + m_copyFileName = m_fileName + "-hotrunner"; +} + + +TestPlugIn::~TestPlugIn() +{ + deleteDllCopy(); +} + + +void +TestPlugIn::deleteDllCopy() +{ + ::DeleteFile( m_copyFileName.c_str() ); +} + + +class NullTest : public CPPUNIT_NS::TestCase +{ +public: + NullTest( std::string name ) : TestCase( name ) + { + } + + ~NullTest() + { + } + + void runTests() + { + CPPUNIT_ASSERT_MESSAGE( "Failed to load" + getName(), FALSE ); + } +}; + + +CPPUNIT_NS::Test * +TestPlugIn::makeTest() +{ + reloadDll(); + return CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest(); +} + + +void +TestPlugIn::reloadDll() +{ + m_manager.unload( m_copyFileName ); + makeDllCopy(); + loadDll(); +} + + +void +TestPlugIn::makeDllCopy() +{ + if ( ::CopyFile( m_fileName.c_str(), m_copyFileName.c_str(), FALSE ) == FALSE ) + { + throw TestPlugInException( "Failed to copy DLL" + m_fileName + + " to " + m_copyFileName, TestPlugInException::failedToCopyDll ); + } +} + + +void +TestPlugIn::loadDll() +{ + try + { + m_manager.load( m_copyFileName ); + } + catch ( CPPUNIT_NS::DynamicLibraryManagerException &e ) + { + throw TestPlugInException( e.what(), + TestPlugInException::failedToLoadDll ); + } +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.h new file mode 100644 index 0000000000..73b0d141f4 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.h @@ -0,0 +1,68 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestPlugIn.h for class TestPlugIn +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/06/23 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTPLUGIN_H +#define TESTPLUGIN_H + +#include +#include +#include + + +/*! \class TestPlugIn + * \brief This class represents a test plug-in. + */ +class TestPlugIn +{ +public: + /*! Constructs a TestPlugIn object. + */ + TestPlugIn( const std::string fileName ); + + /*! Destructor. + */ + virtual ~TestPlugIn(); + + /*! Obtains a new test from a new copy of the dll. + * \exception TestPlugInException if a error occurs. + */ + CPPUNIT_NS::Test *makeTest(); + +private: + /// Prevents the use of the copy constructor. + TestPlugIn( const TestPlugIn © ); + + /// Prevents the use of the copy operator. + void operator =( const TestPlugIn © ); + + void reloadDll(); + void deleteDllCopy(); + + /*! Copy m_fileName DLL to m_copyFileName. + * + * Working on a copy of the DLL allow to update the original DLL. + * \exception TestPlugInException on copy failure. + */ + void makeDllCopy(); + + /*! Load the DLL. + * \exception TestPlugInException on dll loading failure. + */ + void loadDll(); + +private: + std::string m_fileName; + std::string m_copyFileName; + CPPUNIT_NS::PlugInManager m_manager; +}; + + + +// Inlines methods for TestPlugIn: +// ------------------------------- + + + +#endif // TESTPLUGIN_H diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.cpp new file mode 100644 index 0000000000..f006c0f08f --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.cpp @@ -0,0 +1,43 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestPlugInException.cpp for class TestPlugInException +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/06/23 +// ////////////////////////////////////////////////////////////////////////// + +#include "StdAfx.h" +#include "TestPlugInException.h" + + +TestPlugInException::TestPlugInException( std::string message, + Cause cause ) : + runtime_error( message ), + m_cause( cause ) +{ +} + + +TestPlugInException::TestPlugInException( const TestPlugInException © ) : + runtime_error( copy ) +{ +} + + +TestPlugInException::~TestPlugInException() +{ +} + + +TestPlugInException & +TestPlugInException::operator =( const TestPlugInException © ) +{ + runtime_error::operator =( copy ); + m_cause = copy.m_cause; + return *this; +} + + +TestPlugInException::Cause +TestPlugInException::getCause() const +{ + return m_cause; +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.h new file mode 100644 index 0000000000..15005dcbcf --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.h @@ -0,0 +1,60 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestPlugInException.h for class TestPlugInException +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/06/23 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTPLUGINEXCEPTION_H +#define TESTPLUGINEXCEPTION_H + +#include +#include + + +/*! \class TestPlugInException + * \brief This class represents a failure of using the test plug-in. + */ +class TestPlugInException : public std::runtime_error +{ +public: + enum Cause + { + failedToLoadDll =0, + failedToCopyDll, + failedToGetInterfaceFunction, + failedToMakeTest + }; + + /*! Constructs a TestPlugInException object. + */ + TestPlugInException( std::string message, + Cause cause ); + + /*! Copy constructor. + * @param copy Object to copy. + */ + TestPlugInException( const TestPlugInException © ); + + /*! Destructor. + */ + virtual ~TestPlugInException(); + + /*! Copy operator. + * @param copy Object to copy. + * @return Reference on this object. + */ + TestPlugInException &operator =( const TestPlugInException © ); + + Cause getCause() const; + +private: + Cause m_cause; +}; + + + +// Inlines methods for TestPlugInException: +// ---------------------------------------- + + + +#endif // TESTPLUGINEXCEPTION_H diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.dsp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.dsp new file mode 100644 index 0000000000..f12d11e5f1 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.dsp @@ -0,0 +1,472 @@ +# Microsoft Developer Studio Project File - Name="TestPlugInRunner" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=TestPlugInRunner - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "TestPlugInRunner.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "TestPlugInRunner.mak" CFG="TestPlugInRunner - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "TestPlugInRunner - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "TestPlugInRunner - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "TestPlugInRunner - Win32 Release" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /I "../TestRunner" /I "..\..\..\include" /I "..\..\..\include\msvc6" /I "..\TestRunner" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /D "CPPUNIT_SUBCLASSING_TESTRUNNERDLG_BUILD" /D "CPPUNIT_DLL" /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 +# ADD LINK32 cppunit_dll.lib winmm.lib /nologo /subsystem:windows /machine:I386 /libpath:"../../../lib/" +# Begin Special Build Tool +TargetPath=.\Release\TestPlugInRunner.exe +TargetName=TestPlugInRunner +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).exe +# End Special Build Tool + +!ELSEIF "$(CFG)" == "TestPlugInRunner - Win32 Debug" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /I "..\TestRunner" /D "_DEBUG" /D "CPPUNIT_TESTPLUGINRUNNER_BUILD" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /D "CPPUNIT_SUBCLASSING_TESTRUNNERDLG_BUILD" /D "CPPUNIT_DLL" /Yu"stdafx.h" /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 cppunitd_dll.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /out:"Debug/TestPlugInRunnerd.exe" /pdbtype:sept /libpath:"../../../lib/" +# Begin Special Build Tool +TargetPath=.\Debug\TestPlugInRunnerd.exe +TargetName=TestPlugInRunnerd +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).exe +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "TestPlugInRunner - Win32 Release" +# Name "TestPlugInRunner - Win32 Debug" +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\res\errortype.bmp +# End Source File +# Begin Source File + +SOURCE=.\res\ico00001.ico +# End Source File +# Begin Source File + +SOURCE=..\testrunner\res\ico00001.ico +# End Source File +# Begin Source File + +SOURCE=..\testrunner\res\ico00002.ico +# End Source File +# Begin Source File + +SOURCE=..\testrunner\res\idr_test.ico +# End Source File +# Begin Source File + +SOURCE=.\res\test_type.bmp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\res\test_type.bmp +# End Source File +# Begin Source File + +SOURCE=.\res\TestPlugInRunner.ico +# End Source File +# Begin Source File + +SOURCE=.\res\TestPlugInRunner.rc2 +# End Source File +# Begin Source File + +SOURCE=..\testrunner\res\tfwkui_r.bmp +# End Source File +# End Group +# Begin Group "Gui" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\Resource.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInRunner.rc +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInRunnerApp.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInRunnerApp.h +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInRunnerDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInRunnerDlg.h +# End Source File +# End Group +# Begin Group "Interface" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\include\msvc6\testrunner\TestPlugInInterface.h +# End Source File +# End Group +# Begin Group "Models" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\TestPlugIn.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestPlugIn.h +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInException.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInException.h +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInRunnerModel.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestPlugInRunnerModel.h +# End Source File +# End Group +# Begin Group "DLL" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\lib\cppunit_dll.dll + +!IF "$(CFG)" == "TestPlugInRunner - Win32 Release" + +# Begin Custom Build - Updating $(InputPath) +IntDir=.\Release +InputPath=..\..\..\lib\cppunit_dll.dll +InputName=cppunit_dll + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ELSEIF "$(CFG)" == "TestPlugInRunner - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\lib\cppunitd_dll.dll + +!IF "$(CFG)" == "TestPlugInRunner - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "TestPlugInRunner - Win32 Debug" + +# Begin Custom Build - Updating $(InputPath) +IntDir=.\Debug +InputPath=..\..\..\lib\cppunitd_dll.dll +InputName=cppunitd_dll + +"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) $(IntDir)\$(InputName).dll + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\lib\testrunner.dll +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=..\..\..\lib\testrunnerd.dll +# PROP Exclude_From_Build 1 +# End Source File +# End Group +# Begin Group "TestRunner-Was-In-Dll" + +# PROP Default_Filter "" +# Begin Group "UserInterface" + +# PROP Default_Filter "" +# Begin Group "DynamicWindow" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicBar.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicBar.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicControlsManager.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicControlsManager.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicDialog.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicDialog.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicFormView.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicFormView.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicPropSheet.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicPropSheet.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicWnd.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicWnd.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicWndEx.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCDynamicWndEx.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCSizeIconCtrl.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\cdxCSizeIconCtrl.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\SizeCBar.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=..\testrunner\DynamicWindow\SizeCBar.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\testrunner\ListCtrlFormatter.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\ListCtrlFormatter.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\ListCtrlSetter.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\ListCtrlSetter.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\MsDevCallerListCtrl.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\MsDevCallerListCtrl.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\ProgressBar.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\ProgressBar.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\ResourceLoaders.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\ResourceLoaders.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\TestRunnerDlg.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\TestRunnerDlg.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\TreeHierarchyDlg.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\TreeHierarchyDlg.h +# End Source File +# End Group +# Begin Group "Components" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\testrunner\ActiveTest.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\ActiveTest.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\MfcSynchronizationObject.h +# End Source File +# Begin Source File + +SOURCE=..\testrunner\TestRunnerModel.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\TestRunnerModel.h +# End Source File +# End Group +# Begin Group "NewFiles" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\testrunner\MostRecentTests.cpp +# End Source File +# Begin Source File + +SOURCE=..\testrunner\MostRecentTests.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\msvc6\DSPlugin\TestRunnerDSPluginVC6_i.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# End Group +# End Group +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.rc b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.rc new file mode 100644 index 0000000000..ea866aee77 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.rc @@ -0,0 +1,268 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +CPP_UNIT_TEST_RUNNER_PLUG_IN_IDD_TEST_PLUG_IN_RUNNER DIALOG DISCARDABLE 0, 0, 330, 226 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Test plug-in runner" +FONT 8, "MS Sans Serif" +BEGIN + PUSHBUTTON "&Choose DLL",IDC_CHOOSE_DLL,273,72,50,14 + PUSHBUTTON "Re&load DLL",IDC_RELOAD_DLL,273,88,50,14 + LTEXT "&Test:",IDC_STATIC_TEST_NAME,7,7,17,8 + COMBOBOX IDC_COMBO_TEST,28,7,235,157,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "&Browse",IDC_BROWSE_TEST,273,7,50,14 + DEFPUSHBUTTON "&Run",ID_RUN,273,23,50,14 + LTEXT "Progress:",IDC_STATIC_PROGRESS,7,23,33,9 + LTEXT "none",IDC_RUNNING_TEST_CASE_LABEL,43,23,220,9 + LTEXT "Progress Bar",IDC_STATIC_PROGRESS_BAR,7,34,256,15,NOT + WS_VISIBLE + LTEXT "Runs:",IDC_STATIC_LABEL_RUNS,7,55,29,10 + LTEXT "0",IDC_STATIC_RUNS,48,55,30,8 + LTEXT "Errors:",IDC_STATIC_LABEL_ERRORS,89,55,29,10 + LTEXT "0",IDC_STATIC_ERRORS,127,55,19,8 + LTEXT "Failures:",IDC_STATIC_LABEL_FAILURES,174,55,29,10 + LTEXT "0",IDC_STATIC_FAILURES,212,55,19,8 + LTEXT "&Errors and Failures:",IDC_STATIC,7,70,67,9 + CONTROL "List1",IDC_LIST,"SysListView32",LVS_REPORT | + LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | + WS_TABSTOP,7,81,257,60 + LTEXT "&Details:",IDC_STATIC_DETAILS,7,145,24,8 + EDITTEXT IDC_DETAILS,7,156,316,48,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY + CONTROL "&Autorun at startup",IDC_CHECK_AUTORUN,"Button", + BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,273,46,49,19 + PUSHBUTTON "&Stop",ID_STOP,273,112,50,14 + PUSHBUTTON "&Close",IDOK,273,128,50,14 + EDITTEXT IDC_EDIT_TIME,7,206,316,13,ES_AUTOHSCROLL | ES_READONLY +END + +CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY DIALOG DISCARDABLE 0, 0, 259, 250 +STYLE DS_MODALFRAME | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU +CAPTION "Test hierarchy" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "Select",IDOK,202,7,50,14 + CONTROL "Tree1",IDC_TREE_TEST,"SysTreeView32",TVS_HASBUTTONS | + TVS_HASLINES | TVS_LINESATROOT | TVS_FULLROWSELECT | + WS_BORDER | WS_TABSTOP,7,7,189,236 + PUSHBUTTON "&Close",IDCANCEL,202,34,50,14 +END + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "\0" + VALUE "FileDescription", "TestPlugInRunner MFC Application\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "TestPlugInRunner\0" + VALUE "LegalCopyright", "Copyright (C) 2001\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "TestPlugInRunner.EXE\0" + VALUE "ProductName", "TestPlugInRunner Application\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + "CPP_UNIT_TEST_RUNNER_PLUG_IN_IDD_TEST_PLUG_IN_RUNNER", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 323 + TOPMARGIN, 7 + BOTTOMMARGIN, 219 + END + + "CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 252 + TOPMARGIN, 7 + BOTTOMMARGIN, 243 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_ACCELERATOR_TEST_RUNNER ACCELERATORS DISCARDABLE +BEGIN + "Q", ID_QUIT_APPLICATION, VIRTKEY, NOINVERT + VK_SPACE, ID_RUN, VIRTKEY, NOINVERT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +CPP_UNIT_TEST_RUNNER_IDB_ERROR_TYPE BITMAP DISCARDABLE "res\\errortype.bmp" +CPP_UNIT_TEST_RUNNER_IDB_TEST_TYPE BITMAP DISCARDABLE "res\\test_type.bmp" +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// French (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif //_WIN32\r\n" + "#include ""res\\TestPlugInRunner.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +CPP_UNIT_TEST_RUNNER_PLUG_IN_IDR_TEST_PLUGIN_RUNNER ICON DISCARDABLE "res\\TestPlugInRunner.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ERROR_SELECT_TEST "You must select a test!" + IDS_ERRORLIST_TYPE "Type" + IDS_ERRORLIST_NAME "Name" + IDS_ERRORLIST_FAILED_CONDITION "Failed Condition" + IDS_ERRORLIST_LINE_NUMBER "Line Number" + IDS_ERRORLIST_FILE_NAME "File Name" +END + +#endif // French (France) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 +#include "res\TestPlugInRunner.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp new file mode 100644 index 0000000000..75d3d8c111 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp @@ -0,0 +1,84 @@ +// TestPlugInRunner.cpp : Defines the class behaviors for the application. +// + +#include "stdafx.h" +#include "TestPlugInRunnerApp.h" +#include "TestPlugInRunnerDlg.h" +#include "TestPlugInRunnerModel.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +HINSTANCE g_testRunnerResource; + +///////////////////////////////////////////////////////////////////////////// +// TestPlugInRunnerApp + +BEGIN_MESSAGE_MAP(TestPlugInRunnerApp, CWinApp) + //{{AFX_MSG_MAP(TestPlugInRunnerApp) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG + ON_COMMAND(ID_HELP, CWinApp::OnHelp) +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// TestPlugInRunnerApp construction + +TestPlugInRunnerApp::TestPlugInRunnerApp() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + +///////////////////////////////////////////////////////////////////////////// +// The one and only TestPlugInRunnerApp object + +TestPlugInRunnerApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// TestPlugInRunnerApp initialization + +BOOL TestPlugInRunnerApp::InitInstance() +{ + AfxEnableControlContainer(); + + // Standard initialization + // If you are not using these features and wish to reduce the size + // of your final executable, you should remove from the following + // the specific initialization routines you do not need. + +#ifdef _AFXDLL +# if _MSC_VER < 1300 // vc6 + Enable3dControls(); // Call this when using MFC in a shared DLL +# endif +#else + Enable3dControlsStatic(); // Call this when linking to MFC statically +#endif + + g_testRunnerResource = AfxGetResourceHandle(); + + SetRegistryKey(_T("CppUnit Test Plug-In Runner")); + + TestPlugInRunnerModel model; + TestPlugInRunnerDlg dlg( &model ); + m_pMainWnd = &dlg; + int nResponse = dlg.DoModal(); + if (nResponse == IDOK) + { + // TODO: Place code here to handle when the dialog is + // dismissed with OK + } + else if (nResponse == IDCANCEL) + { + // TODO: Place code here to handle when the dialog is + // dismissed with Cancel + } + + // Since the dialog has been closed, return FALSE so that we exit the + // application, rather than start the application's message pump. + return FALSE; +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.h new file mode 100644 index 0000000000..fc022d29a3 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.h @@ -0,0 +1,49 @@ +// TestPlugInRunner.h : main header file for the TESTPLUGINRUNNER application +// + +#if !defined(AFX_TESTPLUGINRUNNER_H__C64A0384_27BB_4A9A_854C_B19BF07A81F8__INCLUDED_) +#define AFX_TESTPLUGINRUNNER_H__C64A0384_27BB_4A9A_854C_B19BF07A81F8__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +#include "resource.h" // main symbols + +///////////////////////////////////////////////////////////////////////////// +// TestPlugInRunnerApp: +// See TestPlugInRunner.cpp for the implementation of this class +// + +class TestPlugInRunnerApp : public CWinApp +{ +public: + TestPlugInRunnerApp(); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(TestPlugInRunnerApp) + public: + virtual BOOL InitInstance(); + //}}AFX_VIRTUAL + +// Implementation + + //{{AFX_MSG(TestPlugInRunnerApp) + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TESTPLUGINRUNNER_H__C64A0384_27BB_4A9A_854C_B19BF07A81F8__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp new file mode 100644 index 0000000000..bf9e2a78f6 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp @@ -0,0 +1,197 @@ +// TestPlugInRunnerDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "TestPlugInRunnerDlg.h" +#include "TestPlugIn.h" +#include "TestPlugInException.h" +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// TestPlugInRunnerDlg dialog + +TestPlugInRunnerDlg::TestPlugInRunnerDlg( TestPlugInRunnerModel *model, + CWnd* pParent ) + : TestRunnerDlg( model, "CPP_UNIT_TEST_RUNNER_PLUG_IN_IDD_TEST_PLUG_IN_RUNNER", pParent ) +{ + //{{AFX_DATA_INIT(TestPlugInRunnerDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 + m_hIcon = AfxGetApp()->LoadIcon("CPP_UNIT_TEST_RUNNER_PLUG_IN_IDR_TEST_PLUGIN_RUNNER"); +} + + +void +TestPlugInRunnerDlg::DoDataExchange( CDataExchange* pDX ) +{ + TestRunnerDlg::DoDataExchange(pDX); + //{{AFX_DATA_MAP(TestPlugInRunnerDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(TestPlugInRunnerDlg, TestRunnerDlg) + //{{AFX_MSG_MAP(TestPlugInRunnerDlg) + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDC_CHOOSE_DLL, OnChooseDll) + ON_BN_CLICKED(IDC_RELOAD_DLL, OnReloadDll) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// TestPlugInRunnerDlg message handlers + +BOOL TestPlugInRunnerDlg::OnInitDialog() +{ + TestRunnerDlg::OnInitDialog(); + + // Set the icon for this dialog. The framework does this automatically + // when the application's main window is not a dialog + SetIcon(m_hIcon, TRUE); // Set big icon + SetIcon(m_hIcon, FALSE); // Set small icon + + // TODO: Add extra initialization here + loadPluginIfNesseccary(); + + return TRUE; // return TRUE unless you set the focus to a control +} + +// If you add a minimize button to your dialog, you will need the code below +// to draw the icon. For MFC applications using the document/view model, +// this is automatically done for you by the framework. + +void TestPlugInRunnerDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // device context for painting + + SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); + + // Center icon in client rectangle + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // Draw the icon + dc.DrawIcon(x, y, m_hIcon); + } + else + { + TestRunnerDlg::OnPaint(); + } +} + + +// The system calls this to obtain the cursor to display while the user drags +// the minimized window. +HCURSOR TestPlugInRunnerDlg::OnQueryDragIcon() +{ + return (HCURSOR) m_hIcon; +} + + +TestPlugInRunnerModel & +TestPlugInRunnerDlg::plugInModel() +{ + return *static_cast( m_model ); +} + + +void +TestPlugInRunnerDlg::OnChooseDll() +{ + CFileDialog dlg( TRUE, "*.dll", "", 0, + "Test Plug-in (*.dll)|*.dll|All Files (*.*)|*.*||", + this ); + if ( dlg.DoModal() != IDOK ) + return; + + try + { + loadDll(std::string(dlg.GetPathName())); + } + catch ( TestPlugInException &e ) + { + AfxMessageBox( e.what() ); + } +} + + +void +TestPlugInRunnerDlg::OnReloadDll() +{ + reset(); + plugInModel().reloadPlugIn(); +} + + +std::list +TestPlugInRunnerDlg::getCommandLineArguments() +{ + int argc; + LPWSTR *argv = ::CommandLineToArgvW( ::GetCommandLineW(), &argc ); + + std::list arguments; + for( int index = 0; index < argc; index++ ) + arguments.push_back( std::string( CString( argv[index] ) ) ); + + ::GlobalFree( argv ); + + return arguments; +} + + +void +TestPlugInRunnerDlg::loadPluginIfNesseccary() +{ + std::list argv = getCommandLineArguments(); + std::list::iterator iter = std::find( argv.begin(), + argv.end(), + std::string( "-testsuite" ) ); + + if ( iter == argv.end() ) + return; + + try + { + loadDll( *++iter ); + } + catch( std::exception &e ) + { + AfxMessageBox( e.what() ); + } +} + + +void +TestPlugInRunnerDlg::loadDll( std::string path ) +{ + TestPlugIn *plugIn = new TestPlugIn( path ); + plugInModel().setPlugIn( plugIn ); + + m_model->selectHistoryTest( plugInModel().rootTest() ); + updateHistoryCombo(); +} + + +void +TestPlugInRunnerDlg::initializeLayout() +{ + TestRunnerDlg::initializeLayout(); + + AddSzXControl( IDC_CHOOSE_DLL, mdRepos ); + AddSzXControl( IDC_RELOAD_DLL, mdRepos ); + +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h new file mode 100644 index 0000000000..8772a0a276 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h @@ -0,0 +1,67 @@ +// TestPlugInRunnerDlg.h : header file +// + +#if !defined(AFX_TESTPLUGINRUNNERDLG_H__AF6DB5BC_25E5_4459_8A54_9704298F64FF__INCLUDED_) +#define AFX_TESTPLUGINRUNNERDLG_H__AF6DB5BC_25E5_4459_8A54_9704298F64FF__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "resource.h" +#include +#include +#include "TestPlugInRunnerModel.h" +#include +#include + +///////////////////////////////////////////////////////////////////////////// +// TestPlugInRunnerDlg dialog + +class TestPlugInRunnerDlg : public TestRunnerDlg +{ +// Construction +public: + TestPlugInRunnerDlg( TestPlugInRunnerModel *model, + CWnd* pParent = NULL); + +// Dialog Data + //{{AFX_DATA(TestPlugInRunnerDlg) + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(TestPlugInRunnerDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + HICON m_hIcon; + + // Generated message map functions + //{{AFX_MSG(TestPlugInRunnerDlg) + virtual BOOL OnInitDialog(); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + afx_msg void OnChooseDll(); + afx_msg void OnReloadDll(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP(); + +protected: + virtual void initializeLayout(); + + +private: + TestPlugInRunnerModel &plugInModel(); + + static std::list getCommandLineArguments(); + void loadPluginIfNesseccary(); + void loadDll( std::string path ); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TESTPLUGINRUNNERDLG_H__AF6DB5BC_25E5_4459_8A54_9704298F64FF__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp new file mode 100644 index 0000000000..71ae0cfb29 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp @@ -0,0 +1,52 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestPlugInRunnerModel.cpp for class TestPlugInRunnerModel +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/06/24 +// ////////////////////////////////////////////////////////////////////////// + +#include "StdAfx.h" +#include "TestPlugInRunnerModel.h" +#include +#include "TestPlugIn.h" + + +TestPlugInRunnerModel::TestPlugInRunnerModel() : + TestRunnerModel( new CPPUNIT_NS::TestSuite( "Default" ) ), + m_plugIn( new TestPlugIn( "default plug-in" ) ) +{ +} + + +TestPlugInRunnerModel::~TestPlugInRunnerModel() +{ + delete m_plugIn; +} + + +void +TestPlugInRunnerModel::setPlugIn( TestPlugIn *plugIn ) +{ + delete m_plugIn; + m_plugIn = plugIn; + reloadPlugIn(); +} + + +void +TestPlugInRunnerModel::reloadPlugIn() +{ + try + { + CWaitCursor waitCursor; + m_history.clear(); + setRootTest( m_plugIn->makeTest() ); + + loadHistory(); + } + catch (...) + { + setRootTest( new CPPUNIT_NS::TestSuite( "Default" ) ); + loadHistory(); + throw; + } +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.h new file mode 100644 index 0000000000..b6c12d6a54 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.h @@ -0,0 +1,48 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestPlugInRunnerModel.h for class TestPlugInRunnerModel +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/06/24 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTPLUGINRUNNERMODEL_H +#define TESTPLUGINRUNNERMODEL_H + +#include +class TestPlugIn; + + +/*! \class TestPlugInRunnerModel + * \brief This class represents a model for the plug in runner. + */ +class TestPlugInRunnerModel : public TestRunnerModel +{ +public: + /*! Constructs a TestPlugInRunnerModel object. + */ + TestPlugInRunnerModel(); + + /*! Destructor. + */ + virtual ~TestPlugInRunnerModel(); + + void setPlugIn( TestPlugIn *plugIn ); + + void reloadPlugIn(); +private: + /// Prevents the use of the copy constructor. + TestPlugInRunnerModel( const TestPlugInRunnerModel © ); + + /// Prevents the use of the copy operator. + void operator =( const TestPlugInRunnerModel © ); + +private: + TestPlugIn *m_plugIn; +}; + + + +// Inlines methods for TestPlugInRunnerModel: +// ------------------------------------------ + + + +#endif // TESTPLUGINRUNNERMODEL_H diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.ico b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.ico new file mode 100644 index 0000000000..4eafd8bb15 Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.ico differ diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.rc2 b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.rc2 new file mode 100644 index 0000000000..0f08ced3a1 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.rc2 @@ -0,0 +1,13 @@ +// +// TESTPLUGINRUNNER.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/errortype.bmp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/errortype.bmp new file mode 100644 index 0000000000..aa645babbf Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/errortype.bmp differ diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/test_type.bmp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/test_type.bmp new file mode 100644 index 0000000000..63e7fa0f28 Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/test_type.bmp differ diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.cpp new file mode 100644 index 0000000000..94268ba782 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.cpp @@ -0,0 +1,83 @@ +#include "stdafx.h" +#include "ActiveTest.h" + + + +// Construct the active test +ActiveTest::ActiveTest( CPPUNIT_NS::Test *test ) + : TestDecorator( test ) + , m_runCompleted() +{ + m_currentTestResult = NULL; + m_threadHandle = INVALID_HANDLE_VALUE; +} + + +// Pend until the test has completed +ActiveTest::~ActiveTest() +{ + CSingleLock( &m_runCompleted, TRUE ); + m_test = NULL; +} + + +// Set the test result that we are to run +void +ActiveTest::setTestResult( CPPUNIT_NS::TestResult *result ) +{ + m_currentTestResult = result; +} + + +// Run our test result +void +ActiveTest::run() +{ + TestDecorator::run( m_currentTestResult ); +} + + +// Spawn a thread to a test +void +ActiveTest::run( CPPUNIT_NS::TestResult *result ) +{ + CWinThread *thread; + + setTestResult( result ); + m_runCompleted.ResetEvent(); + + thread = ::AfxBeginThread( threadFunction, + this, + THREAD_PRIORITY_NORMAL, + 0, + CREATE_SUSPENDED); + + ::DuplicateHandle( GetCurrentProcess(), + thread->m_hThread, + GetCurrentProcess(), + &m_threadHandle, + 0, + FALSE, + DUPLICATE_SAME_ACCESS ); + + thread->ResumeThread (); +} + + +// Simple execution thread. Assuming that an ActiveTest instance +// only creates one of these at a time. +UINT +ActiveTest::threadFunction( LPVOID thisInstance ) +{ + ActiveTest *test = (ActiveTest *)thisInstance; + + test->run (); + + ::CloseHandle( test->m_threadHandle ); + test->m_threadHandle = INVALID_HANDLE_VALUE; + + test->m_runCompleted.SetEvent(); + + return 0; +} + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.h new file mode 100644 index 0000000000..809d6e6b3a --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.h @@ -0,0 +1,47 @@ +#ifndef CPPUNIT_ACTIVETEST_H +#define CPPUNIT_ACTIVETEST_H + +#include + +#ifndef CPPUNIT_TESTDECORATOR_H +#include +#endif + + +/* A Microsoft-specific active test + * + * An active test manages its own + * thread of execution. This one + * is very simple and only sufficient + * for the limited use we put it through + * in the TestRunner. It spawns a thread + * on run (TestResult *) and signals + * completion of the test. + * + * We assume that only one thread + * will be active at once for each + * instance. + * + */ + +class ActiveTest : public CPPUNIT_NS::TestDecorator +{ +public: + ActiveTest( CPPUNIT_NS::Test *test ); + ~ActiveTest(); + + void run( CPPUNIT_NS::TestResult *result ); + +protected: + HANDLE m_threadHandle; + CEvent m_runCompleted; + CPPUNIT_NS::TestResult *m_currentTestResult; + + void run(); + void setTestResult( CPPUNIT_NS::TestResult *result ); + static UINT threadFunction( LPVOID thisInstance ); +}; + +#endif + + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/Change-Diary-ResourceBugFix.txt b/lib/cppunit-1.10.0/src/msvc6/testrunner/Change-Diary-ResourceBugFix.txt new file mode 100644 index 0000000000..7fcdd3da06 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/Change-Diary-ResourceBugFix.txt @@ -0,0 +1,111 @@ +Diary of making test runner DLL resource safe. + +Repeat everything, that was done for version 1.8.0. This is point 1) to 9). + +0) With the unit-tests for the test runner DLL all four tests fail with the original + version 1.9.8 of CPP-Unit. + +1) Replace the original integer dialog ids with new string ids + CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY + CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TESTRUNNER + Because these are not in resource.h VC++ interpretes these values + as string ids. + +2) TestRunnerDlg.cpp: + - Make a copy of the constructor and replace the integer id with a string id. + - Move the initialization code in the two constructors to the new private member + function init(). + - Put an ASSERT in the old constructor. + - Remove the enum IDD=IDD_DIALOG_TESTRUNNER from the resource.h and TestRunnerDlg.h + header files. Accordingly remove the default value nDialogResourceId in the + constructor, that uses the integer id. + +3) TreeHierarchyDlg.cpp: + - Replace the integer id in the call to the base class constructor with + the new string id. + - Remove the enum IDD=IDD_DIALOG_TEST_HIERARCHY from the resource.h and + TreeHierarchyDlg.h header file. + +4) Test. Two of the four tests still fail. The remaining errors result from + the conflicts in the string table. + +5) Since strings ids don't work for the string table I created the new function + loadCString to load the strings from the correct resource module which is of + course the test runner module. The new function is in the files + ResourceLoaders.[cpp|h] since I didn't find a good existing place. Baptiste, + if you know of a good existing place simply move the function and remove the + two new files. + +6) Check all occurences of the strings and replace the original string refernces + with the new function loadCString. + IDS_ERROR_SELECT_TEST + IDS_ERRORLIST_TYPE + IDS_ERRORLIST_NAME + IDS_ERRORLIST_FAILED_CONDITION + IDS_ERRORLIST_LINE_NUMBER + IDS_ERRORLIST_FILE_NAME + +7) Test. No more errors are found. + +8) Change the two bitmaps that are used in the list and the tree to use + string ids instead of integer ids. + - First changed the unit test so that the originally incorrect behaviour + is shown. Inserted red circles in the bitmaps in the unit test. + Then added the new test checkListBitmaps() and changed checkBrowseDlg() + to let the user visually check, if the correct bitmaps are used. + This has to be done by the user visually, because I couldn't think of + an automatic test, that could be implemented easily. + The last test for the correct bitmaps will ALWAYS fail, so that the + bitmaps can be checked visually. + - Changed the RC-file of the test runner DLL: + CPP_UNIT_TEST_RUNNER_IDB_TEST_TYPE + CPP_UNIT_TEST_RUNNER_IDB_ERROR_TYPE + Removed the original string ids from resource.h and changed TreeHierarchyDlg.cpp + and TestRunnerDlg.cpp so that the new string ids are used. + + +9) Changed the TestPlugInRunner. I don't know, how I can test this and would + ask you Baptiste to check it or let me know, how I can check it. + I did the following: + - Change the dialog id to the string id + CPP_UNIT_TEST_RUNNER_PLUG_IN_IDD_TEST_PLUG_IN_RUNNER + ^^^^^^^ => This is different from the string id used + in the test runner DLL! + - Removed the original integer id from resource.h and TestPlugInRunnerDlg.h. + - Changed the constructor in TestPlugInRunnerDlg.cpp to use the new string id. + - Replaced the integer id IDR_TEST_PLUGIN_RUNNER for the icon with the string + id CPP_UNIT_TEST_RUNNER_PLUG_IN_IDR_TEST_PLUGIN_RUNNER in the RC-file and in + the constructor TestPlugInRunnerDlg and removed the original id from resource.h. + + +Here start the changes, that were only needed for version 1.9.8. + +10) TestRunner is OK now. But I saw, that TestPlugInRunner has now more + resources than in version 1.8.0. After looking at it more carefully + it turned out that the sources of the test runner DLL have been + included in the test plug-in runner. In version 1.8.0 the test runner + was used through the testrunner.dll. This means that some additional + changes have to be made to the test plug-in runner. + - Additionally changed IDD_DIALOG_TEST_HIERARCHY to + CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY. This is the same + name as in the original test runner because the dialog is created + with the original code. I don't know how to check this, thus I'm + not sure wether this is OK. + - Replaced the ids for the bitmaps. Here the same applies as in the + previous point, I'm not sure, if it works. + - Include ResourceLoaders.cpp in the subproject + TestPlugInRunner/TestRunner-Was-In-Dll/UserInterface + - Removed the original #include "TestRunnerApp.h" in ResourceLoaders.cpp + and replaced it with + extern HINSTANCE g_testRunnerResource; + - Included + HINSTANCE g_testRunnerResource; + in TestPlugInRunnerApp.cpp and set the variable in InitInstance() with + g_testRunnerResource = AfxGetResourceHandle(); + - Replaced the integer id for the icon with a string id + m_hIcon = AfxGetApp()->LoadIcon("CPP_UNIT_TEST_RUNNER_PLUG_IN_IDR_TEST_PLUGIN_RUNNER"); + in the constructor in TestPlugInRunnerDlg.cpp and in the RC-file. + +11) FINISHED. + +-- Steven Mitter \ No newline at end of file diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.cpp new file mode 100644 index 0000000000..ea347dd0fd --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.cpp @@ -0,0 +1,1061 @@ +///////////////////////////////////////////////////////////////////////// +// Copyright (C) 1998, 1999 by Cristi Posea +// All rights reserved +// +// Use and distribute freely, except: don't remove my name from the +// source or documentation (don't take credit for my work), mark your +// changes (don't get me blamed for your possible bugs), don't alter +// or remove this notice. +// No warrantee of any kind, express or implied, is included with this +// software; use at your own risk, responsibility for damages (if any) to +// anyone resulting from the use of this software rests entirely with the +// user. +// +// This class is intended to be used as a base class. Do not simply add +// your code to this file - instead create a new class derived from +// CSizingControlBar and put there what you need. +// Modify this file only to fix bugs, and don't forget to send me a copy. +// +// Send bug reports, bug fixes, enhancements, requests, flames, etc., +// and I'll try to keep a version up to date. I can be reached at: +// cristip@dundas.com +// +// More details at MFC Programmer's SourceBook +// http://www.codeguru.com/docking/docking_window.shtml or search +// www.codeguru.com for my name if the article was moved. +// +///////////////////////////////////////////////////////////////////////// +// +// Acknowledgements: +// o Thanks to Harlan R. Seymour (harlans@dundas.com) for his continuous +// support during development of this code. +// o Thanks to Dundas Software for the opportunity to test this code +// on real-life applications. +// If you don't know who they are, visit them at www.dundas.com . +// Their award winning components and development suites are +// a pile of gold. +// o Thanks to Chris Maunder (chrism@dundas.com) who came with the +// simplest way to query "Show window content while dragging" system +// setting. +// o Thanks to Zafir Anjum (zafir@codeguru.com) for publishing this +// code on his cool site (www.codeguru.com). +// o Some ideas for the gripper came from the CToolBarEx flat toolbar +// by Joerg Koenig (Joerg.Koenig@rhein-neckar.de). Also he inspired +// me on writing this notice:) . Thanks, Joerg! +// o Thanks to Jakawan Ratiwanich (jack@alpha.fsec.ucf.edu) and to +// Udo Schaefer (Udo.Schaefer@vcase.de) for the dwStyle bug fix under +// VC++ 6.0. +// o And, of course, many thanks to all of you who used this code, +// for the invaluable feedback I received. +// +///////////////////////////////////////////////////////////////////////// + + +// sizecbar.cpp : implementation file +// + +#include "stdafx.h" +#include "sizecbar.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////// +// CSizingControlBar + +CSCBArray CSizingControlBar::m_arrBars; // static member + +IMPLEMENT_DYNAMIC(CSizingControlBar, baseCSizingControlBar); + +CSizingControlBar::CSizingControlBar() +{ + m_szMin = CSize(33, 32); + m_szHorz = CSize(200, 200); + m_szVert = CSize(200, 200); + m_szFloat = CSize(200, 200); + m_bTracking = FALSE; + m_bKeepSize = FALSE; + m_bParentSizing = FALSE; + m_cxEdge = 5; + m_bDragShowContent = FALSE; + m_nDockBarID = 0; + m_dwSCBStyle = 0; +} + +CSizingControlBar::~CSizingControlBar() +{ +} + +BEGIN_MESSAGE_MAP(CSizingControlBar, baseCSizingControlBar) + //{{AFX_MSG_MAP(CSizingControlBar) + ON_WM_CREATE() + ON_WM_PAINT() + ON_WM_NCPAINT() + ON_WM_NCCALCSIZE() + ON_WM_WINDOWPOSCHANGING() + ON_WM_CAPTURECHANGED() + ON_WM_SETTINGCHANGE() + ON_WM_LBUTTONUP() + ON_WM_MOUSEMOVE() + ON_WM_NCLBUTTONDOWN() + ON_WM_LBUTTONDOWN() + ON_WM_LBUTTONDBLCLK() + ON_WM_RBUTTONDOWN() + ON_WM_NCLBUTTONUP() + ON_WM_NCMOUSEMOVE() + ON_WM_NCHITTEST() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +BOOL CSizingControlBar::Create(LPCTSTR lpszWindowName, CWnd* pParentWnd, + CSize sizeDefault, BOOL bHasGripper, + UINT nID, DWORD dwStyle) +{ + // must have a parent + ASSERT_VALID(pParentWnd); + // cannot be both fixed and dynamic + // (CBRS_SIZE_DYNAMIC is used for resizng when floating) + ASSERT (!((dwStyle & CBRS_SIZE_FIXED) && + (dwStyle & CBRS_SIZE_DYNAMIC))); + + m_dwStyle = dwStyle & CBRS_ALL; // save the control bar styles + + m_szHorz = sizeDefault; // set the size members + m_szVert = sizeDefault; + m_szFloat = sizeDefault; + + m_cyGripper = bHasGripper ? 12 : 0; // set the gripper width + + // register and create the window - skip CControlBar::Create() + CString wndclass = ::AfxRegisterWndClass(CS_DBLCLKS, + ::LoadCursor(NULL, IDC_ARROW), + ::GetSysColorBrush(COLOR_BTNFACE), 0); + + dwStyle &= ~CBRS_ALL; // keep only the generic window styles + dwStyle |= WS_CLIPCHILDREN; // prevents flashing + if (!CWnd::Create(wndclass, lpszWindowName, dwStyle, + CRect(0, 0, 0, 0), pParentWnd, nID)) + return FALSE; + + return TRUE; +} + +///////////////////////////////////////////////////////////////////////// +// CSizingControlBar message handlers + +int CSizingControlBar::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (baseCSizingControlBar::OnCreate(lpCreateStruct) == -1) + return -1; + + // querry SPI_GETDRAGFULLWINDOWS system parameter + // OnSettingChange() will update m_bDragShowContent + m_bDragShowContent = FALSE; + ::SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, + &m_bDragShowContent, 0); + + m_arrBars.Add(this); // register + +// m_dwSCBStyle |= SCBS_SHOWEDGES; + + return 0; +} + +BOOL CSizingControlBar::DestroyWindow() +{ + int nPos = FindSizingBar(this); + ASSERT(nPos >= 0); + + m_arrBars.RemoveAt(nPos); // unregister + + return baseCSizingControlBar::DestroyWindow(); +} + +const BOOL CSizingControlBar::IsFloating() const +{ + return !IsHorzDocked() && !IsVertDocked(); +} + +const BOOL CSizingControlBar::IsHorzDocked() const +{ + return (m_nDockBarID == AFX_IDW_DOCKBAR_TOP || + m_nDockBarID == AFX_IDW_DOCKBAR_BOTTOM); +} + +const BOOL CSizingControlBar::IsVertDocked() const +{ + return (m_nDockBarID == AFX_IDW_DOCKBAR_LEFT || + m_nDockBarID == AFX_IDW_DOCKBAR_RIGHT); +} + +const BOOL CSizingControlBar::IsSideTracking() const +{ + // don't call this when not tracking + ASSERT(m_bTracking && !IsFloating()); + + return (m_htEdge == HTLEFT || m_htEdge == HTRIGHT) ? + IsHorzDocked() : IsVertDocked(); +} + +CSize CSizingControlBar::CalcFixedLayout(BOOL bStretch, BOOL bHorz) +{ + if (bStretch) // the bar is stretched (is not the child of a dockbar) + if (bHorz) + return CSize(32767, m_szHorz.cy); + else + return CSize(m_szVert.cx, 32767); + + // dirty cast - using CSCBDockBar to access protected CDockBar members + CSCBDockBar* pDockBar = (CSCBDockBar*) m_pDockBar; + + // force imediate RecalcDelayShow() for all sizing bars on the row + // with delayShow/delayHide flags set to avoid IsVisible() problems + CSCBArray arrSCBars; + GetRowSizingBars(arrSCBars); + AFX_SIZEPARENTPARAMS layout; + layout.hDWP = pDockBar->m_bLayoutQuery ? + NULL : ::BeginDeferWindowPos(arrSCBars.GetSize()); + for (int i = 0; i < arrSCBars.GetSize(); i++) + arrSCBars[i]->RecalcDelayShow(&layout); + if (layout.hDWP != NULL) + ::EndDeferWindowPos(layout.hDWP); + + // get available length + CRect rc = pDockBar->m_rectLayout; + if (rc.IsRectEmpty()) + m_pDockSite->GetClientRect(&rc); + int nLengthAvail = bHorz ? rc.Width() + 2 : rc.Height() - 2; + + if (IsVisible() && !IsFloating() && + m_bParentSizing && arrSCBars[0] == this) + if (NegociateSpace(nLengthAvail, (bHorz != FALSE))) + AlignControlBars(); + + m_bParentSizing = FALSE; + + CSize szRet = bHorz ? m_szHorz : m_szVert; + szRet.cx = max(m_szMin.cx, szRet.cx); + szRet.cy = max(m_szMin.cy, szRet.cy); + + return szRet; +} + +CSize CSizingControlBar::CalcDynamicLayout(int nLength, DWORD dwMode) +{ + if (dwMode & (LM_HORZDOCK | LM_VERTDOCK)) // docked ? + { + if (nLength == -1) + m_bParentSizing = TRUE; + + return baseCSizingControlBar::CalcDynamicLayout(nLength, dwMode); + } + + if (dwMode & LM_MRUWIDTH) return m_szFloat; + if (dwMode & LM_COMMIT) return m_szFloat; // already committed + + ((dwMode & LM_LENGTHY) ? m_szFloat.cy : m_szFloat.cx) = nLength; + + m_szFloat.cx = max(m_szFloat.cx, m_szMin.cx); + m_szFloat.cy = max(m_szFloat.cy, m_szMin.cy); + + return m_szFloat; +} + +void CSizingControlBar::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) +{ + // force non-client recalc if moved or resized + lpwndpos->flags |= SWP_FRAMECHANGED; + + baseCSizingControlBar::OnWindowPosChanging(lpwndpos); + + // find on which side are we docked + UINT nOldDockBarID = m_nDockBarID; + m_nDockBarID = GetParent()->GetDlgCtrlID(); + + if (!IsFloating()) + if (lpwndpos->flags & SWP_SHOWWINDOW) + m_bKeepSize = TRUE; +} + +///////////////////////////////////////////////////////////////////////// +// Mouse Handling +// +void CSizingControlBar::OnLButtonDown(UINT nFlags, CPoint point) +{ + if (m_pDockBar != NULL) + { + // start the drag + ASSERT(m_pDockContext != NULL); + ClientToScreen(&point); + m_pDockContext->StartDrag(point); + } + else + CWnd::OnLButtonDown(nFlags, point); +} + +void CSizingControlBar::OnLButtonDblClk(UINT nFlags, CPoint point) +{ + if (m_pDockBar != NULL) + { + // toggle docking + ASSERT(m_pDockContext != NULL); + m_pDockContext->ToggleDocking(); + } + else + CWnd::OnLButtonDblClk(nFlags, point); +} + +void CSizingControlBar::OnNcLButtonDown(UINT nHitTest, CPoint point) +{ + if (IsFloating()) + { + baseCSizingControlBar::OnNcLButtonDown(nHitTest, point); + return; + } + + if (m_bTracking) return; + + if ((nHitTest >= HTSIZEFIRST) && (nHitTest <= HTSIZELAST)) + StartTracking(nHitTest); // sizing edge hit +} + +void CSizingControlBar::OnNcLButtonUp(UINT nHitTest, CPoint point) +{ + if (nHitTest == HTCLOSE) + m_pDockSite->ShowControlBar(this, FALSE, FALSE); // hide + + baseCSizingControlBar::OnNcLButtonUp(nHitTest, point); +} + +void CSizingControlBar::OnLButtonUp(UINT nFlags, CPoint point) +{ + if (m_bTracking) + StopTracking(); + + baseCSizingControlBar::OnLButtonUp(nFlags, point); +} + +void CSizingControlBar::OnRButtonDown(UINT nFlags, CPoint point) +{ + if (m_bTracking) + StopTracking(); + + baseCSizingControlBar::OnRButtonDown(nFlags, point); +} + +void CSizingControlBar::OnMouseMove(UINT nFlags, CPoint point) +{ + if (m_bTracking) + OnTrackUpdateSize(point); + + baseCSizingControlBar::OnMouseMove(nFlags, point); +} + +void CSizingControlBar::OnCaptureChanged(CWnd *pWnd) +{ + if (m_bTracking && (pWnd != this)) + StopTracking(); + + baseCSizingControlBar::OnCaptureChanged(pWnd); +} + +void CSizingControlBar::OnNcCalcSize(BOOL bCalcValidRects, + NCCALCSIZE_PARAMS FAR* lpncsp) +{ + // compute the the client area + CRect rcClient = lpncsp->rgrc[0]; + rcClient.DeflateRect(5, 5); + + m_dwSCBStyle &= ~SCBS_EDGEALL; + + switch(m_nDockBarID) + { + case AFX_IDW_DOCKBAR_TOP: + m_dwSCBStyle |= SCBS_EDGEBOTTOM; + rcClient.DeflateRect(m_cyGripper, 0, 0, 0); + break; + case AFX_IDW_DOCKBAR_BOTTOM: + m_dwSCBStyle |= SCBS_EDGETOP; + rcClient.DeflateRect(m_cyGripper, 0, 0, 0); + break; + case AFX_IDW_DOCKBAR_LEFT: + m_dwSCBStyle |= SCBS_EDGERIGHT; + rcClient.DeflateRect(0, m_cyGripper, 0, 0); + break; + case AFX_IDW_DOCKBAR_RIGHT: + m_dwSCBStyle |= SCBS_EDGELEFT; + rcClient.DeflateRect(0, m_cyGripper, 0, 0); + break; + default: + break; + } + + if (!IsFloating() && m_pDockBar != NULL) + { + CSCBArray arrSCBars; + GetRowSizingBars(arrSCBars); + + for (int i = 0; i < arrSCBars.GetSize(); i++) + if (arrSCBars[i] == this) + { + if (i > 0) + m_dwSCBStyle |= IsHorzDocked() ? + SCBS_EDGELEFT : SCBS_EDGETOP; + if (i < arrSCBars.GetSize() - 1) + m_dwSCBStyle |= IsHorzDocked() ? + SCBS_EDGERIGHT : SCBS_EDGEBOTTOM; + } + } + + // make room for edges only if they will be painted + if (m_dwSCBStyle & SCBS_SHOWEDGES) + rcClient.DeflateRect( + (m_dwSCBStyle & SCBS_EDGELEFT) ? m_cxEdge : 0, + (m_dwSCBStyle & SCBS_EDGETOP) ? m_cxEdge : 0, + (m_dwSCBStyle & SCBS_EDGERIGHT) ? m_cxEdge : 0, + (m_dwSCBStyle & SCBS_EDGEBOTTOM) ? m_cxEdge : 0); + + // "hide" button positioning + CPoint ptOrgBtn; + if (IsHorzDocked()) + ptOrgBtn = CPoint(rcClient.left - m_cyGripper - 1, + rcClient.top - 1); + else + ptOrgBtn = CPoint(rcClient.right - 11, + rcClient.top - m_cyGripper - 1); + + m_biHide.Move(ptOrgBtn - CRect(lpncsp->rgrc[0]).TopLeft()); + + lpncsp->rgrc[0] = rcClient; +} + +void CSizingControlBar::OnNcPaint() +{ + // get window DC that is clipped to the non-client area + CWindowDC dc(this); + + CRect rcClient, rcBar; + GetClientRect(rcClient); + ClientToScreen(rcClient); + GetWindowRect(rcBar); + rcClient.OffsetRect(-rcBar.TopLeft()); + rcBar.OffsetRect(-rcBar.TopLeft()); + + // client area is not our bussiness :) + dc.ExcludeClipRect(rcClient); + + // draw borders in non-client area + CRect rcDraw = rcBar; + DrawBorders(&dc, rcDraw); + + // erase parts not drawn + dc.IntersectClipRect(rcDraw); + + // erase NC background the hard way + HBRUSH hbr = (HBRUSH)GetClassLong(m_hWnd, GCL_HBRBACKGROUND); + ::FillRect(dc.m_hDC, rcDraw, hbr); + + if (m_dwSCBStyle & SCBS_SHOWEDGES) + { + CRect rcEdge; // paint the sizing edges + for (int i = 0; i < 4; i++) + if (GetEdgeRect(rcBar, GetEdgeHTCode(i), rcEdge)) + dc.Draw3dRect(rcEdge, ::GetSysColor(COLOR_BTNHIGHLIGHT), + ::GetSysColor(COLOR_BTNSHADOW)); + } + + if (m_cyGripper && !IsFloating()) + NcPaintGripper(&dc, rcClient); + + ReleaseDC(&dc); +} + +void CSizingControlBar::NcPaintGripper(CDC* pDC, CRect rcClient) +{ + // paints a simple "two raised lines" gripper + // override this if you want a more sophisticated gripper + CRect gripper = rcClient; + CRect rcbtn = m_biHide.GetRect(); + BOOL bHorz = IsHorzDocked(); + + gripper.DeflateRect(1, 1); + if (bHorz) + { // gripper at left + gripper.left -= m_cyGripper; + gripper.right = gripper.left + 3; + gripper.top = rcbtn.bottom + 3; + } + else + { // gripper at top + gripper.top -= m_cyGripper; + gripper.bottom = gripper.top + 3; + gripper.right = rcbtn.left - 3; + } + + pDC->Draw3dRect(gripper, ::GetSysColor(COLOR_BTNHIGHLIGHT), + ::GetSysColor(COLOR_BTNSHADOW)); + + gripper.OffsetRect(bHorz ? 3 : 0, bHorz ? 0 : 3); + + pDC->Draw3dRect(gripper, ::GetSysColor(COLOR_BTNHIGHLIGHT), + ::GetSysColor(COLOR_BTNSHADOW)); + + m_biHide.Paint(pDC); +} + +void CSizingControlBar::OnPaint() +{ + // overridden to skip border painting based on clientrect + CPaintDC dc(this); +} + +UINT CSizingControlBar::OnNcHitTest(CPoint point) +{ + if (IsFloating()) + return baseCSizingControlBar::OnNcHitTest(point); + + CRect rcBar, rcEdge; + GetWindowRect(rcBar); + + for (int i = 0; i < 4; i++) + if (GetEdgeRect(rcBar, GetEdgeHTCode(i), rcEdge)) + if (rcEdge.PtInRect(point)) return GetEdgeHTCode(i); + + CRect rc = m_biHide.GetRect(); + rc.OffsetRect(rcBar.TopLeft()); + if (rc.PtInRect(point)) + return HTCLOSE; + + return HTCLIENT; +} + +void CSizingControlBar::OnSettingChange(UINT uFlags, LPCTSTR lpszSection) +{ + baseCSizingControlBar::OnSettingChange(uFlags, lpszSection); + + m_bDragShowContent = FALSE; + ::SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, + &m_bDragShowContent, 0); // update +} + +///////////////////////////////////////////////////////////////////////// +// CSizingControlBar implementation helpers + +void CSizingControlBar::StartTracking(UINT nHitTest) +{ + SetCapture(); + + // make sure no updates are pending + RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_UPDATENOW); + + BOOL bHorz = IsHorzDocked(); + + m_szOld = bHorz ? m_szHorz : m_szVert; + + CRect rc; + GetWindowRect(&rc); + CRect rcEdge; + VERIFY(GetEdgeRect(rc, nHitTest, rcEdge)); + m_ptOld = rcEdge.CenterPoint(); + + m_htEdge = nHitTest; + m_bTracking = TRUE; + + CSCBArray arrSCBars; + GetRowSizingBars(arrSCBars); + + // compute the minsize as the max minsize of the sizing bars on row + m_szMinT = m_szMin; + for (int i = 0; i < arrSCBars.GetSize(); i++) + if (bHorz) + m_szMinT.cy = max(m_szMinT.cy, arrSCBars[i]->m_szMin.cy); + else + m_szMinT.cx = max(m_szMinT.cx, arrSCBars[i]->m_szMin.cx); + + if (!IsSideTracking()) + { + // the control bar cannot grow with more than the size of + // remaining client area of the mainframe + m_pDockSite->RepositionBars(0, 0xFFFF, AFX_IDW_PANE_FIRST, + reposQuery, &rc, NULL, TRUE); + m_szMaxT = m_szOld + rc.Size() - CSize(4, 4); + } + else + { + // side tracking: max size is the actual size plus the amount + // the neighbour bar can be decreased to reach its minsize + for (int i = 0; i < arrSCBars.GetSize(); i++) + if (arrSCBars[i] == this) break; + + CSizingControlBar* pBar = arrSCBars[i + + ((m_htEdge == HTTOP || m_htEdge == HTLEFT) ? -1 : 1)]; + + m_szMaxT = m_szOld + (bHorz ? pBar->m_szHorz : + pBar->m_szVert) - pBar->m_szMin; + } + + OnTrackInvertTracker(); // draw tracker +} + +void CSizingControlBar::StopTracking() +{ + OnTrackInvertTracker(); // erase tracker + + m_bTracking = FALSE; + ReleaseCapture(); + + m_pDockSite->DelayRecalcLayout(); +} + +void CSizingControlBar::OnTrackUpdateSize(CPoint& point) +{ + ASSERT(!IsFloating()); + + CPoint pt = point; + ClientToScreen(&pt); + CSize szDelta = pt - m_ptOld; + + CSize sizeNew = m_szOld; + switch (m_htEdge) + { + case HTLEFT: sizeNew -= CSize(szDelta.cx, 0); break; + case HTTOP: sizeNew -= CSize(0, szDelta.cy); break; + case HTRIGHT: sizeNew += CSize(szDelta.cx, 0); break; + case HTBOTTOM: sizeNew += CSize(0, szDelta.cy); break; + } + + // enforce the limits + sizeNew.cx = max(m_szMinT.cx, min(m_szMaxT.cx, sizeNew.cx)); + sizeNew.cy = max(m_szMinT.cy, min(m_szMaxT.cy, sizeNew.cy)); + + BOOL bHorz = IsHorzDocked(); + szDelta = sizeNew - (bHorz ? m_szHorz : m_szVert); + + if (szDelta == CSize(0, 0)) return; // no size change + + OnTrackInvertTracker(); // erase tracker + + (bHorz ? m_szHorz : m_szVert) = sizeNew; // save the new size + + CSCBArray arrSCBars; + GetRowSizingBars(arrSCBars); + + for (int i = 0; i < arrSCBars.GetSize(); i++) + if (!IsSideTracking()) + { // track simultaneously + CSizingControlBar* pBar = arrSCBars[i]; + (bHorz ? pBar->m_szHorz.cy : pBar->m_szVert.cx) = + bHorz ? sizeNew.cy : sizeNew.cx; + } + else + { // adjust the neighbour's size too + if (arrSCBars[i] != this) continue; + + CSizingControlBar* pBar = arrSCBars[i + + ((m_htEdge == HTTOP || m_htEdge == HTLEFT) ? -1 : 1)]; + + (bHorz ? pBar->m_szHorz.cx : pBar->m_szVert.cy) -= + bHorz ? szDelta.cx : szDelta.cy; + } + + OnTrackInvertTracker(); // redraw tracker at new pos + + if (m_bDragShowContent) + m_pDockSite->DelayRecalcLayout(); +} + +void CSizingControlBar::OnTrackInvertTracker() +{ + ASSERT(m_bTracking); + + if (m_bDragShowContent) + return; // don't show tracker if DragFullWindows is on + + BOOL bHorz = IsHorzDocked(); + CRect rc, rcBar, rcDock, rcFrame; + GetWindowRect(rcBar); + m_pDockBar->GetWindowRect(rcDock); + m_pDockSite->GetWindowRect(rcFrame); + VERIFY(GetEdgeRect(rcBar, m_htEdge, rc)); + if (!IsSideTracking()) + rc = bHorz ? + CRect(rcDock.left + 1, rc.top, rcDock.right - 1, rc.bottom) : + CRect(rc.left, rcDock.top + 1, rc.right, rcDock.bottom - 1); + + rc.OffsetRect(-rcFrame.TopLeft()); + + CSize sizeNew = bHorz ? m_szHorz : m_szVert; + CSize sizeDelta = sizeNew - m_szOld; + if (m_nDockBarID == AFX_IDW_DOCKBAR_LEFT && m_htEdge == HTTOP || + m_nDockBarID == AFX_IDW_DOCKBAR_RIGHT && m_htEdge != HTBOTTOM || + m_nDockBarID == AFX_IDW_DOCKBAR_TOP && m_htEdge == HTLEFT || + m_nDockBarID == AFX_IDW_DOCKBAR_BOTTOM && m_htEdge != HTRIGHT) + sizeDelta = -sizeDelta; + rc.OffsetRect(sizeDelta); + + CDC *pDC = m_pDockSite->GetDCEx(NULL, + DCX_WINDOW | DCX_CACHE | DCX_LOCKWINDOWUPDATE); + CBrush* pBrush = CDC::GetHalftoneBrush(); + CBrush* pBrushOld = pDC->SelectObject(pBrush); + + pDC->PatBlt(rc.left, rc.top, rc.Width(), rc.Height(), PATINVERT); + + pDC->SelectObject(pBrushOld); + m_pDockSite->ReleaseDC(pDC); +} + +BOOL CSizingControlBar::GetEdgeRect(CRect rcWnd, UINT nHitTest, + CRect& rcEdge) +{ + rcEdge = rcWnd; + if (m_dwSCBStyle & SCBS_SHOWEDGES) + rcEdge.DeflateRect(1, 1); + BOOL bHorz = IsHorzDocked(); + + switch (nHitTest) + { + case HTLEFT: + if (!(m_dwSCBStyle & SCBS_EDGELEFT)) return FALSE; + rcEdge.right = rcEdge.left + m_cxEdge; + rcEdge.DeflateRect(0, bHorz ? m_cxEdge: 0); + break; + case HTTOP: + if (!(m_dwSCBStyle & SCBS_EDGETOP)) return FALSE; + rcEdge.bottom = rcEdge.top + m_cxEdge; + rcEdge.DeflateRect(bHorz ? 0 : m_cxEdge, 0); + break; + case HTRIGHT: + if (!(m_dwSCBStyle & SCBS_EDGERIGHT)) return FALSE; + rcEdge.left = rcEdge.right - m_cxEdge; + rcEdge.DeflateRect(0, bHorz ? m_cxEdge: 0); + break; + case HTBOTTOM: + if (!(m_dwSCBStyle & SCBS_EDGEBOTTOM)) return FALSE; + rcEdge.top = rcEdge.bottom - m_cxEdge; + rcEdge.DeflateRect(bHorz ? 0 : m_cxEdge, 0); + break; + default: + ASSERT(FALSE); // invalid hit test code + } + return TRUE; +} + +UINT CSizingControlBar::GetEdgeHTCode(int nEdge) +{ + if (nEdge == 0) return HTLEFT; + if (nEdge == 1) return HTTOP; + if (nEdge == 2) return HTRIGHT; + if (nEdge == 3) return HTBOTTOM; + ASSERT(FALSE); // invalid edge no + return HTNOWHERE; +} + +void CSizingControlBar::GetRowInfo(int& nFirst, int& nLast, int& nThis) +{ + ASSERT_VALID(m_pDockBar); // verify bounds + + nThis = m_pDockBar->FindBar(this); + ASSERT(nThis != -1); + + int i, nBars = m_pDockBar->m_arrBars.GetSize(); + + // find the first and the last bar in row + for (nFirst = -1, i = nThis - 1; i >= 0 && nFirst == -1; i--) + if (m_pDockBar->m_arrBars[i] == NULL) + nFirst = i + 1; + for (nLast = -1, i = nThis + 1; i < nBars && nLast == -1; i++) + if (m_pDockBar->m_arrBars[i] == NULL) + nLast = i - 1; + + ASSERT((nLast != -1) && (nFirst != -1)); +} + +void CSizingControlBar::GetRowSizingBars(CSCBArray& arrSCBars) +{ + arrSCBars.RemoveAll(); + + int nFirst, nLast, nThis; + GetRowInfo(nFirst, nLast, nThis); + + for (int i = nFirst; i <= nLast; i++) + { + CControlBar* pBar = (CControlBar*)m_pDockBar->m_arrBars[i]; + if (HIWORD(pBar) == 0) continue; // placeholder + if (!pBar->IsVisible()) continue; + if (FindSizingBar(pBar) >= 0) + arrSCBars.Add((CSizingControlBar*)pBar); + } +} + +const int CSizingControlBar::FindSizingBar(CControlBar* pBar) const +{ + for (int nPos = 0; nPos < m_arrBars.GetSize(); nPos++) + if (m_arrBars[nPos] == pBar) + return nPos; // got it + + return -1; // not found +} + +BOOL CSizingControlBar::NegociateSpace(int nLengthAvail, BOOL bHorz) +{ + ASSERT(bHorz == IsHorzDocked()); + + int nFirst, nLast, nThis; + GetRowInfo(nFirst, nLast, nThis); + + // step 1: subtract the visible fixed bars' lengths + for (int i = nFirst; i <= nLast; i++) + { + CControlBar* pFBar = (CControlBar*)m_pDockBar->m_arrBars[i]; + if (HIWORD(pFBar) == 0) continue; // placeholder + if (!pFBar->IsVisible() || (FindSizingBar(pFBar) >= 0)) continue; + + CRect rcBar; + pFBar->GetWindowRect(&rcBar); + + nLengthAvail -= (bHorz ? rcBar.Width() - 2 : rcBar.Height() - 2); + } + + CSCBArray arrSCBars; + GetRowSizingBars(arrSCBars); + CSizingControlBar* pBar; + + // step 2: compute actual and min lengths; also the common width + int nActualLength = 0; + int nMinLength = 2; + int nWidth = 0; + for (i = 0; i < arrSCBars.GetSize(); i++) + { + pBar = arrSCBars[i]; + nActualLength += bHorz ? pBar->m_szHorz.cx - 2 : + pBar->m_szVert.cy - 2; + nMinLength += bHorz ? pBar->m_szMin.cx - 2: + pBar->m_szMin.cy - 2; + nWidth = max(nWidth, bHorz ? pBar->m_szHorz.cy : + pBar->m_szVert.cx); + } + + // step 3: pop the bar out of the row if not enough room + if (nMinLength > nLengthAvail) + { + if (nFirst < nThis || nThis < nLast) + { // not enough room - create a new row + m_pDockBar->m_arrBars.InsertAt(nLast + 1, this); + m_pDockBar->m_arrBars.InsertAt(nLast + 1, (CControlBar*) NULL); + m_pDockBar->m_arrBars.RemoveAt(nThis); + } + return FALSE; + } + + // step 4: make the bars same width + for (i = 0; i < arrSCBars.GetSize(); i++) + if (bHorz) + arrSCBars[i]->m_szHorz.cy = nWidth; + else + arrSCBars[i]->m_szVert.cx = nWidth; + + if (nActualLength == nLengthAvail) + return TRUE; // no change + + // step 5: distribute the difference between the bars, but + // don't shrink them below minsize + int nDelta = nLengthAvail - nActualLength; + + while (nDelta != 0) + { + int nDeltaOld = nDelta; + for (i = 0; i < arrSCBars.GetSize(); i++) + { + pBar = arrSCBars[i]; + int nLMin = bHorz ? pBar->m_szMin.cx : pBar->m_szMin.cy; + int nL = bHorz ? pBar->m_szHorz.cx : pBar->m_szVert.cy; + + if ((nL == nLMin) && (nDelta < 0) || // already at min length + pBar->m_bKeepSize) // or wants to keep its size + continue; + + // sign of nDelta + int nDelta2 = (nDelta == 0) ? 0 : ((nDelta < 0) ? -1 : 1); + + (bHorz ? pBar->m_szHorz.cx : pBar->m_szVert.cy) += nDelta2; + nDelta -= nDelta2; + if (nDelta == 0) break; + } + // clear m_bKeepSize flags + if ((nDeltaOld == nDelta) || (nDelta == 0)) + for (i = 0; i < arrSCBars.GetSize(); i++) + arrSCBars[i]->m_bKeepSize = FALSE; + } + + return TRUE; +} + +void CSizingControlBar::AlignControlBars() +{ + int nFirst, nLast, nThis; + GetRowInfo(nFirst, nLast, nThis); + + BOOL bHorz = IsHorzDocked(); + BOOL bNeedRecalc = FALSE; + int nPos, nAlign = bHorz ? -2 : 0; + + CRect rc, rcDock; + m_pDockBar->GetWindowRect(&rcDock); + + for (int i = nFirst; i <= nLast; i++) + { + CControlBar* pBar = (CControlBar*)m_pDockBar->m_arrBars[i]; + if (HIWORD(pBar) == 0) continue; // placeholder + if (!pBar->IsVisible()) continue; + + pBar->GetWindowRect(&rc); + rc.OffsetRect(-rcDock.TopLeft()); + + if ((nPos = FindSizingBar(pBar)) >= 0) + rc = CRect(rc.TopLeft(), bHorz ? + m_arrBars[nPos]->m_szHorz : m_arrBars[nPos]->m_szVert); + + if ((bHorz ? rc.left : rc.top) != nAlign) + { + if (!bHorz) + rc.OffsetRect(0, nAlign - rc.top - 2); + else if (m_nDockBarID == AFX_IDW_DOCKBAR_TOP) + rc.OffsetRect(nAlign - rc.left, -2); + else + rc.OffsetRect(nAlign - rc.left, 0); + pBar->MoveWindow(rc); + bNeedRecalc = TRUE; + } + nAlign += (bHorz ? rc.Width() : rc.Height()) - 2; + } + + if (bNeedRecalc) + { + m_pDockSite->DelayRecalcLayout(); + TRACE("ccc\n"); + } +} + +void CSizingControlBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) +{ + BOOL bNeedPaint = FALSE; + + CPoint pt; + ::GetCursorPos(&pt); + BOOL bHit = (OnNcHitTest(pt) == HTCLOSE); + BOOL bLButtonDown = (::GetKeyState(VK_LBUTTON) < 0); + + BOOL bWasPushed = m_biHide.bPushed; + m_biHide.bPushed = bHit && bLButtonDown; + + BOOL bWasRaised = m_biHide.bRaised; + m_biHide.bRaised = bHit && !bLButtonDown; + + bNeedPaint |= (m_biHide.bPushed ^ bWasPushed) || + (m_biHide.bRaised ^ bWasRaised); + + if (bNeedPaint) + SendMessage(WM_NCPAINT); +} + +void CSizingControlBar::LoadState(LPCTSTR lpszProfileName) +{ + ASSERT_VALID(this); + ASSERT(GetSafeHwnd()); // must be called after Create() + + CWinApp* pApp = AfxGetApp(); + + TCHAR szSection[256]; + wsprintf(szSection, _T("%s-SCBar-%d"), lpszProfileName, + GetDlgCtrlID()); + + m_szHorz.cx = max(m_szMin.cx, (int) pApp->GetProfileInt(szSection, + _T("sizeHorzCX"), m_szHorz.cx)); + m_szHorz.cy = max(m_szMin.cy, (int) pApp->GetProfileInt(szSection, + _T("sizeHorzCY"), m_szHorz.cy)); + + m_szVert.cx = max(m_szMin.cx, (int) pApp->GetProfileInt(szSection, + _T("sizeVertCX"), m_szVert.cx)); + m_szVert.cy = max(m_szMin.cy, (int) pApp->GetProfileInt(szSection, + _T("sizeVertCY"), m_szVert.cy)); + + m_szFloat.cx = max(m_szMin.cx, (int) pApp->GetProfileInt(szSection, + _T("sizeFloatCX"), m_szFloat.cx)); + m_szFloat.cy = max(m_szMin.cy, (int) pApp->GetProfileInt(szSection, + _T("sizeFloatCY"), m_szFloat.cy)); +} + +void CSizingControlBar::SaveState(LPCTSTR lpszProfileName) +{ + // place your SaveState or GlobalSaveState call in + // CMainFrame::DestroyWindow(), not in OnDestroy() + ASSERT_VALID(this); + ASSERT(GetSafeHwnd()); + + CWinApp* pApp = AfxGetApp(); + + TCHAR szSection[256]; + wsprintf(szSection, _T("%s-SCBar-%d"), lpszProfileName, + GetDlgCtrlID()); + + pApp->WriteProfileInt(szSection, _T("sizeHorzCX"), m_szHorz.cx); + pApp->WriteProfileInt(szSection, _T("sizeHorzCY"), m_szHorz.cy); + + pApp->WriteProfileInt(szSection, _T("sizeVertCX"), m_szVert.cx); + pApp->WriteProfileInt(szSection, _T("sizeVertCY"), m_szVert.cy); + + pApp->WriteProfileInt(szSection, _T("sizeFloatCX"), m_szFloat.cx); + pApp->WriteProfileInt(szSection, _T("sizeFloatCY"), m_szFloat.cy); +} + +void CSizingControlBar::GlobalLoadState(LPCTSTR lpszProfileName) +{ + for (int i = 0; i < m_arrBars.GetSize(); i++) + ((CSizingControlBar*) m_arrBars[i])->LoadState(lpszProfileName); +} + +void CSizingControlBar::GlobalSaveState(LPCTSTR lpszProfileName) +{ + for (int i = 0; i < m_arrBars.GetSize(); i++) + ((CSizingControlBar*) m_arrBars[i])->SaveState(lpszProfileName); +} + +///////////////////////////////////////////////////////////////////////// +// CSCBButton + +CSCBButton::CSCBButton() +{ + bRaised = FALSE; + bPushed = FALSE; +} + +void CSCBButton::Paint(CDC* pDC) +{ + CRect rc = GetRect(); + + if (bPushed) + pDC->Draw3dRect(rc, ::GetSysColor(COLOR_BTNSHADOW), + ::GetSysColor(COLOR_BTNHIGHLIGHT)); + else + if (bRaised) + pDC->Draw3dRect(rc, ::GetSysColor(COLOR_BTNHIGHLIGHT), + ::GetSysColor(COLOR_BTNSHADOW)); + + COLORREF clrOldTextColor = pDC->GetTextColor(); + pDC->SetTextColor(::GetSysColor(COLOR_BTNTEXT)); + int nPrevBkMode = pDC->SetBkMode(TRANSPARENT); + CFont font; + int ppi = pDC->GetDeviceCaps(LOGPIXELSX); + int pointsize = MulDiv(60, 96, ppi); // 6 points at 96 ppi + font.CreatePointFont(pointsize, _T("Marlett")); + CFont* oldfont = pDC->SelectObject(&font); + + pDC->TextOut(ptOrg.x + 2, ptOrg.y + 2, CString(_T("r"))); // x-like + + pDC->SelectObject(oldfont); + pDC->SetBkMode(nPrevBkMode); + pDC->SetTextColor(clrOldTextColor); +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.h new file mode 100644 index 0000000000..8d23a429e7 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.h @@ -0,0 +1,195 @@ +///////////////////////////////////////////////////////////////////////// +// Copyright (C) 1998, 1999 by Cristi Posea +// All rights reserved +// +// Use and distribute freely, except: don't remove my name from the +// source or documentation (don't take credit for my work), mark your +// changes (don't get me blamed for your possible bugs), don't alter +// or remove this notice. +// No warrantee of any kind, express or implied, is included with this +// software; use at your own risk, responsibility for damages (if any) to +// anyone resulting from the use of this software rests entirely with the +// user. +// +// This class is intended to be used as a base class. Do not simply add +// your code to this file - instead create a new class derived from +// CSizingControlBar and put there what you need. +// Modify this file only to fix bugs, and don't forget to send me a copy. +// +// Send bug reports, bug fixes, enhancements, requests, flames, etc., +// and I'll try to keep a version up to date. I can be reached at: +// cristip@dundas.com +// +// More details at MFC Programmer's SourceBook +// http://www.codeguru.com/docking/docking_window.shtml or search +// www.codeguru.com for my name if the article was moved. +// +///////////////////////////////////////////////////////////////////////// + +#if !defined(__SIZECBAR_H__) +#define __SIZECBAR_H__ + +#include // for CDockContext +#include // for CArray + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +///////////////////////////////////////////////////////////////////////// +// CSCBButton (button info) helper class + +class CSCBButton +{ +public: + CSCBButton(); + + void Move(CPoint ptTo) {ptOrg = ptTo; }; + CRect GetRect() { return CRect(ptOrg, CSize(11, 11)); }; + void Paint(CDC* pDC); + + BOOL bPushed; + BOOL bRaised; + +protected: + CPoint ptOrg; +}; + +///////////////////////////////////////////////////////////////////////// +// CSCBDockBar dummy class for access to protected members + +class CSCBDockBar : public CDockBar +{ + friend class CSizingControlBar; +}; + +///////////////////////////////////////////////////////////////////////// +// CSizingControlBar control bar styles + +#define SCBS_EDGELEFT 0x00000001 +#define SCBS_EDGERIGHT 0x00000002 +#define SCBS_EDGETOP 0x00000004 +#define SCBS_EDGEBOTTOM 0x00000008 +#define SCBS_EDGEALL 0x0000000F +#define SCBS_SHOWEDGES 0x00000010 +#define SCBS_GRIPPER 0x00000020 + +///////////////////////////////////////////////////////////////////////// +// CSizingControlBar control bar + +#ifndef baseCSizingControlBar +#define baseCSizingControlBar CControlBar +#endif + +class CSizingControlBar; +typedef CTypedPtrArray CSCBArray; + +class CSizingControlBar : public baseCSizingControlBar +{ + DECLARE_DYNAMIC(CSizingControlBar); + +// Construction +protected: + CSizingControlBar(); + +public: + virtual BOOL Create(LPCTSTR lpszWindowName, CWnd* pParentWnd, + CSize sizeDefault, BOOL bHasGripper, UINT nID, + DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP); + +// Attributes +public: + CSize m_szHorz; + CSize m_szVert; + CSize m_szFloat; + const BOOL IsFloating() const; + const BOOL IsHorzDocked() const; + const BOOL IsVertDocked() const; + const BOOL IsSideTracking() const; + +// Operations +public: + virtual void LoadState(LPCTSTR lpszProfileName); + virtual void SaveState(LPCTSTR lpszProfileName); + static void GlobalLoadState(LPCTSTR lpszProfileName); + static void GlobalSaveState(LPCTSTR lpszProfileName); + +// Overridables + virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler); + +// Overrides +public: + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CSizingControlBar) + public: + virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz); + virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode); + virtual BOOL DestroyWindow(); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CSizingControlBar(); + +protected: + // implementation helpers + UINT GetEdgeHTCode(int nEdge); + BOOL GetEdgeRect(CRect rcWnd, UINT nHitTest, CRect& rcEdge); + virtual void StartTracking(UINT nHitTest); + virtual void StopTracking(); + virtual void OnTrackUpdateSize(CPoint& point); + virtual void OnTrackInvertTracker(); + virtual void NcPaintGripper(CDC* pDC, CRect rcClient); + + virtual void AlignControlBars(); + const int FindSizingBar(CControlBar* pBar) const; + void GetRowInfo(int& nFirst, int& nLast, int& nThis); + void GetRowSizingBars(CSCBArray& arrSCBars); + BOOL NegociateSpace(int nLengthAvail, BOOL bHorz); + +protected: + static CSCBArray m_arrBars; + + DWORD m_dwSCBStyle; + UINT m_htEdge; + + CSize m_szMin; + CSize m_szMinT; + CSize m_szMaxT; + CSize m_szOld; + CPoint m_ptOld; + BOOL m_bTracking; + BOOL m_bKeepSize; + BOOL m_bParentSizing; + BOOL m_bDragShowContent; + UINT m_nDockBarID; + int m_cxEdge; + int m_cyGripper; + + CSCBButton m_biHide; + +// Generated message map functions +protected: + //{{AFX_MSG(CSizingControlBar) + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnNcPaint(); + afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp); + afx_msg UINT OnNcHitTest(CPoint point); + afx_msg void OnCaptureChanged(CWnd *pWnd); + afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection); + afx_msg void OnLButtonUp(UINT nFlags, CPoint point); + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point); + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); + afx_msg void OnRButtonDown(UINT nFlags, CPoint point); + afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point); + afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos); + afx_msg void OnPaint(); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() +}; + +#endif // !defined(__SIZECBAR_H__) + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.html b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.html new file mode 100644 index 0000000000..1158584074 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.html @@ -0,0 +1,180 @@ + + + + + + The Code Project - CSizingControlBar - a resizable control bar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

CSizingControlBar - a resizable control bar

+

Cristi Posea

+

DevStudio-like docking window 

+

+Newsletter | +Forums | +Search | +Latest Updates | +Submit an Article | +Win a Prize! +

+
+

+Level:    Advanced
+Posted:   17 Nov 1999
+Updated: 12 Jan 2000
+

+
Platform:
VC++ 5.0-6.0, NT 4.0, Win95/98/2k
+
Keywords:
GUI, MFC, docking
+
+ +
Home + +>> Toolbars & Docking Windows + +>> General + +Problems? Suggestions? +Email us
+
+ + + +

Features of CSizingControlBar 2.31

+ +
    +
  • Resizable control bar, that can be resized both when docked and when floating. +
  • Multiple sizing control bars can be docked on the same row/column. +
  • Full dynamic resizing, both when docked and floating, including diagonal resizing when floating. +
  • State persistence support (SaveState/LoadState). +
  • Gripper with "hide bar" flat button. +
  • Memory DC flickerless NC painting. +
  • Sample extension class with focus autosensing text caption. On Win98/Win2k, the caption is painted with gradient. +
  • No custom resources were used (bitmaps, cursors, strings, etc.), so the integration is easier and you have full control over the resources you eventually use in derived classes. +
  • Easy to use: just derive your own control bar(s) from CSizingControlBar then add your child controls. +
+ +

Instructions

+

Derive a class from CSizingControlBar (you have an example in mybar.h and mybar.cpp).
+Add a member variable to CMainFrame (in mainfrm.h). + +

+CMyBar m_wndMyBar;
+
+ +

Create the bar in CMainFrame::OnCreate(). Then set bar styles, enable it to dock... like any control bar. +

Some experience in working with control bars (like toolbars) is required. + +

+if (!m_wndMyBar.Create(_T("My Bar"), this, CSize(200, 100),
+    TRUE /*bHasGripper*/, AFX_IDW_CONTROLBAR_FIRST + 32))
+{
+    TRACE0("Failed to create mybar\n");
+    return -1;
+    // fail to create
+}
+m_wndMyBar.SetBarStyle(m_wndMyBar.GetBarStyle() |
+    CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
+m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY);
+EnableDocking(CBRS_ALIGN_ANY);
+
+m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd);
+
+DockControlBar(&m_wndMyBar, AFX_IDW_DOCKBAR_LEFT);
+
+ +Note: Starting with version 2.3, the line + +
+m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd);
+
+ +must be added to CMainFrame::OnCreate(), after the EnableDocking() call. This is required! + +

Plugging in the CSizingControlBarCF class

+ +

1. Add scbarcf.h and scbarcf.cpp to your project. +

2. In your derived class header file change the "#include "sizecbar.h" to "#include "scbarcf.h". +

3. Replace the base class for your custom bar from CSizingControlBar to CSizingControlBarCF. If you used the baseCMyBar trick, you only have to change a line. Otherwise, replace all occurences of CSizingControlBar with CSizingControlBarCF in your derived class. +

4. Rebuild and run. Easy, huh? + +

Remarks

+

This class is intended to be used as a base class. +Do not simply add your code to the sizecbar.* files - instead create a new class derived from CSizingControlBar and put there what you need. + +

Window IDs: You can see above that the control bar is created with the ID AFX_IDW_CONTROLBAR_FIRST + 32. +The usage of IDs in the range of AFX_IDW_CONTROLBAR_FIRST + 32 .. AFX_IDW_CONTROLBAR_LAST is required only if the bar will not be enabled for docking (that's is - it will stay fixed right under the frame's menu). +But in this situation you won't be able to fully use the features of this class, so if you will enable it to dock (a reasonable guess :) then you can use any valid window ID.
+Another place where the IDs are important is the saving/loading of the bar's state. +You must use different IDs for each control bar that is enabled to dock, and this includes the other bars too. +For example, if you have two toolbars, you can create the first one with the default ID (which is AFX_IDW_TOOLBAR = AFX_IDW_CONTROLBAR_FIRST), but the second one must have a different ID. + +

OnUpdateCmdUI: This member function is pure virtual in CControlBar (the base class of CSizingControlBar). +Its purpose is to allow updating of controls at idle time (from here CCmdUI::DoUpdate() is called for the toolbars' buttons, dialogbars' controls, the panes of status bar, etc.).
+However, I found it very useful to update the look of the "x" flat button (no timers needed). +So, if you will use this function, don't forget to call the base class' member (see mybar.cpp). + +

Dynamic resizing: This feature allows redrawing of the bar during resizing. +Also all the bars are repositioned and redrawn if necessary.
+The SPI_GETDRAGFULLWINDOWS system parameter is queried for this (it is enabled by the "Show window contents while dragging" checkbox in Display Properties). + +

CBRS_SIZE_DYNAMIC: This bar style is required. Make sure you add it to the bar, otherwise the application will crash when the user floats a bar. You can add it using SetBarStyle() after Create(), or by changing the default style for Create() to something like: WS_VISIBLE | WS_CHILD | CBRS_TOP | CBRS_SIZE_DYNAMIC. + +

State persistence: The common MFC control bars' docking state is saved using CMainFrame::SaveBarState(). In addition to the info saved by this function, the CSizingControlBar class needs to save 3 sizes. This is done in CSizingControlBar::SaveState() function, so a m_wndMyBar.SaveState() call is required. Please note that the state storing code must be placed in CMainFrame's OnClose() or DestroyWindow(), not in OnDestroy(), because at the time WM_DESTROY message is received, the floating bars are already destroyed.
+In CMainFrame::OnCreate(), the m_wndMyBar.LoadState() call must be placed before LoadBarState().
+Alternatively, if you have multiple CSizingControlBar derived bars, you can call once the static member SizingControlBar::GlobalSaveState() instead of calling each bar's SaveState(). The same for LoadState() - there is a CSizingControlBar::GlobalLoadState() function. See both samples here for more details. + +

See also www.datamekanix.com for a full changelog, FAQ, a dedicated message board and more. + + +


+ + + + + + + + + +
+
Home + >> Toolbars & Docking Windows +
last updated 12 Jan 2000
+
Copyright © CodeProject, 1999-2000.
All rights reserved
+
+
webmaster@codeproject.com
+
+ + \ No newline at end of file diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.cpp new file mode 100644 index 0000000000..edebbd45cc --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.cpp @@ -0,0 +1,184 @@ +// cdxCDynamicBar.cpp : implementation file +// + +#include "stdafx.h" +#include "cdxCDynamicBar.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicBarDlg dialog +///////////////////////////////////////////////////////////////////////////// + +IMPLEMENT_DYNAMIC(cdxCDynamicBarDlg,cdxCDynamicChildDlg); + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicBarDlg dialog +///////////////////////////////////////////////////////////////////////////// + +BEGIN_MESSAGE_MAP(cdxCDynamicBarDlg, cdxCDynamicChildDlg) + ON_WM_CLOSE() +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicBarDlg functions +///////////////////////////////////////////////////////////////////////////// + +bool cdxCDynamicBarDlg::Create(cdxCDynamicBar *pBar) +{ + return cdxCDynamicChildDlg::Create(m_nID,(CWnd *)pBar) != FALSE; +} + + + + + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicBar +///////////////////////////////////////////////////////////////////////////// + +IMPLEMENT_DYNAMIC(cdxCDynamicBar,CSizingControlBar); + +///////////////////////////////////////////////////////////////////////////// +// construction +///////////////////////////////////////////////////////////////////////////// + +BEGIN_MESSAGE_MAP(cdxCDynamicBar, CSizingControlBar) + //{{AFX_MSG_MAP(cdxCDynamicBar) + ON_WM_SIZING() + ON_WM_SIZE() + ON_WM_NCCALCSIZE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicBar message handlers +///////////////////////////////////////////////////////////////////////////// + +/* + * create bar & dialog + */ + +BOOL cdxCDynamicBar::Create(LPCTSTR lpszWindowName, CWnd* pParentWnd, + CSize sizeDefault, BOOL bHasGripper, UINT nID, + DWORD dwStyle) +{ + if(!( CSizingControlBar::Create( lpszWindowName, + pParentWnd, + sizeDefault, + bHasGripper, + nID, + dwStyle|WS_CLIPCHILDREN) )) + { + ASSERT(false); + return FALSE; + } + + if(!( m_rDlg.Create(this) )) + { + DestroyWindow(); + ASSERT(false); + return FALSE; + } + + ASSERT(::IsWindow(m_hWnd)); + ASSERT(m_rDlg.IsWindow()); + ASSERT(!m_rectBorder.IsRectNull()); + + // the following code will even be provided by + m_szMin.cx = m_rectBorder.left + m_rectBorder.right; + m_szMin.cy = m_rectBorder.top + m_rectBorder.bottom; + m_szMin += m_rDlg.m_szMin; + + return TRUE; +} + +/* + * route command UI updates to dialog + */ + +void cdxCDynamicBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) +{ + CSizingControlBar::OnUpdateCmdUI(pTarget,bDisableIfNoHndler); + if(m_rDlg.IsWindow()) + m_rDlg.OnUpdateCmdUI(pTarget,bDisableIfNoHndler); +} + +/* + * when sizing starts, we'll force the super-duper anti-flickering mode : + */ + +void cdxCDynamicBar::OnSizing(UINT fwSide, LPRECT pRect) +{ + CSizingControlBar::OnSizing(fwSide, pRect); + m_rDlg.StartAntiFlickering((fwSide == WMSZ_BOTTOM) || + (fwSide == WMSZ_BOTTOMRIGHT) || + (fwSide == WMSZ_RIGHT)); +} + +/* + * let my dialog cover the entire area + */ + +void cdxCDynamicBar::OnSize(UINT nType, int cx, int cy) +{ + CSizingControlBar::OnSize(nType, cx, cy); + if(::IsWindow(m_hWnd) && m_rDlg.IsWindow() && (nType != SIZE_MINIMIZED)) + { + m_rDlg.SetWindowPos( NULL,0,0,cx,cy, SWP_NOACTIVATE| + SWP_NOOWNERZORDER| + SWP_NOZORDER); + + } +} + +/* + * OnNcCalcSize() is used to calculate the optimum + * min size for the dialog. + */ + +void cdxCDynamicBar::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) +{ + m_rectBorder = lpncsp->rgrc[0]; // load initial rectangle + + CSizingControlBar::OnNcCalcSize(bCalcValidRects, lpncsp); + + ASSERT(m_rectBorder.left <= lpncsp->rgrc[0].left); + ASSERT(m_rectBorder.top <= lpncsp->rgrc[0].top); + ASSERT(m_rectBorder.right >= lpncsp->rgrc[0].right); + ASSERT(m_rectBorder.bottom >= lpncsp->rgrc[0].bottom); + + m_rectBorder.left = lpncsp->rgrc[0].left - m_rectBorder.left; + m_rectBorder.top = lpncsp->rgrc[0].top - m_rectBorder.top; + m_rectBorder.right = m_rectBorder.right - lpncsp->rgrc[0].right; + m_rectBorder.bottom = m_rectBorder.bottom - lpncsp->rgrc[0].bottom; + m_szMin = m_rDlg.m_szMin; + m_szMin.cx += m_rectBorder.left + m_rectBorder.right; + m_szMin.cy += m_rectBorder.top + m_rectBorder.bottom; +} + +/* + * route commands a long... + */ + +BOOL cdxCDynamicBar::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) +{ + if(m_rDlg.IsWindow() && m_rDlg.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) + return TRUE; + return CSizingControlBar::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); +} + +/* + * route commands ... + */ + +BOOL cdxCDynamicBar::OnCommand(WPARAM wParam, LPARAM lParam) +{ + if(m_rDlg.IsWindow() && m_rDlg.OnCommand(wParam, lParam)) + return TRUE; + return CSizingControlBar::OnCommand(wParam, lParam); +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.h new file mode 100644 index 0000000000..5a9e924d02 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.h @@ -0,0 +1,168 @@ +#if !defined(AFX_CDXCDYNAMICBAR_H__910C28F6_6854_11D3_803A_000000000000__INCLUDED_) +#define AFX_CDXCDYNAMICBAR_H__910C28F6_6854_11D3_803A_000000000000__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 +// cdxCDynamicBar.h : header file +// + +#include "SizeCBar.h" +#include "cdxCDynamicDialog.h" + +/* + * cdxCDynamicDlgBarT + * ================== + * A resizable dialog bar. + * The entire bar stuff is handled using + * CSizingControlBar by Cristi Posea + * http://www.codeguru.com/docking/docking_window2.shtml + * titled "Resizable Docking Window 2". + * To use it, the following steps must be performed: + * + * a) Create a new dialog say + * CMyBarDlg + * + * b) Change its base class from CDialog to cdxCDynamicBarDlg. + * + * c) In your mainframe, add a member variable + * cdxCDynamicDlgBarT m_wndMyBar; + * + * e) Add the following code to your CMainFrame::OnCreate() + * + * if (!m_wndMyBar.Create(_T("My Bar"), this, CSize(200, 100), + * TRUE, AFX_IDW_CONTROLBAR_FIRST + 32)) + * { + * TRACE0("Failed to create mybar\n"); + * return -1; // fail to create + * } + * + * m_wndMyBar.SetBarStyle(m_wndMyBar.GetBarStyle() | + * CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); + * + * m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY); + * EnableDocking(CBRS_ALIGN_ANY); // <---- needed only once for the frame + * DockControlBar(&m_wndMyBar, AFX_IDW_DOCKBAR_LEFT); + * + * f) Refer to URL stated above to learn more about the features of the + * CSizingControlBar class. + */ + +/* + * cdxCDynamicBarDlg + * ================= + * The child dialog. + */ + +class cdxCDynamicBarDlg : public cdxCDynamicChildDlg +{ + DECLARE_DYNAMIC(cdxCDynamicBarDlg); + + friend class cdxCDynamicBar; + +public: + const UINT m_nID; + +public: + cdxCDynamicBarDlg(UINT idd, CWnd *pParent = NULL) : m_nID(idd), cdxCDynamicChildDlg(idd,pParent) { } + virtual ~cdxCDynamicBarDlg() {} + + // + // Create() without parameters :) + // + + virtual bool Create(cdxCDynamicBar *pBar); + + // + // this handler might be used to update things + // +protected: + virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) { UpdateDialogControls(pTarget,bDisableIfNoHndler); } + + // + // this catches OnOK, OnCancel and OnClose + // to protect the dialog from being closed accidentially + // +protected: + virtual void OnOK() {} + virtual void OnCancel() {} + afx_msg void OnClose() { OnCancel(); } + + DECLARE_MESSAGE_MAP(); +}; + +/* + * cdxCDynamicBar + * ============== + * The bar. + */ + +class cdxCDynamicBar : public CSizingControlBar +{ + DECLARE_DYNAMIC(cdxCDynamicBar); + +private: + cdxCDynamicBarDlg & m_rDlg; + CRect m_rectBorder; + +public: + cdxCDynamicBar(cdxCDynamicBarDlg & rDlg) : m_rDlg(rDlg), m_rectBorder(0,0,0,0) {} + virtual ~cdxCDynamicBar() {} + +// Attributes +public: + virtual BOOL Create(LPCTSTR lpszWindowName, CWnd* pParentWnd, + CSize sizeDefault, BOOL bHasGripper, UINT nID, + DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP); + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(cdxCDynamicBar) + public: + virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo); + protected: + virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam); + //}}AFX_VIRTUAL + +// Implementation +protected: + virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler); + + // Generated message map functions +protected: + //{{AFX_MSG(cdxCDynamicBar) + afx_msg void OnSizing(UINT fwSide, LPRECT pRect); + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp); + //}}AFX_MSG + DECLARE_MESSAGE_MAP(); +}; + +/* + * cdxCDynamicBarT + * =============== + * A nice template class, makes life easier :) + */ + +template +class cdxCDynamicBarT : public cdxCDynamicBar +{ +public: + DLG m_wndDlg; + +public: + cdxCDynamicBarT() : m_wndDlg(), cdxCDynamicBar(m_wndDlg) {} + virtual ~cdxCDynamicBarT() { m_wndDlg.DestroyWindow(); cdxCDynamicBar::DestroyWindow(); } +}; + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicBarDlg inlines +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CDXCDYNAMICBAR_H__910C28F6_6854_11D3_803A_000000000000__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.cpp new file mode 100644 index 0000000000..b3334e9746 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.cpp @@ -0,0 +1,779 @@ +// cdxCDynamicControlsManager.cpp: implementation of the cdxCDynamicControlsManager class. +// +////////////////////////////////////////////////////////////////////// + +/* + * you should define OEMRESOURCE + * in your project settings (C/C++, General) ! + */ + +#include "stdafx.h" +#include "cdxCDynamicControlsManager.h" + +#include +#include + +#ifndef OBM_SIZE +#define OBM_SIZE 32766 +#pragma message("*** NOTE: cdxCDynamicControlsManager.cpp: Please define OEMRESOURCE in your project settings !") +// taken from WinresRc.h +// if not used for any reason +#endif + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// Some static variables +///////////////////////////////////////////////////////////////////////////// + +#define REGVAL_NOSTATE -1 +#define REGVAL_VISIBLE 1 +#define REGVAL_HIDDEN 0 +#define REGVAL_MAXIMIZED 1 +#define REGVAL_ICONIC 0 +#define REGVAL_INVALID 0 +#define REGVAL_VALID 1 + +/* + * registry value names + * (for StoreWindowPosition()/RestoreWindowPosition()) + */ + +static LPCTSTR lpszRegVal_Left = _T("Left"), + lpszRegVal_Right = _T("Right"), + lpszRegVal_Top = _T("Top"), + lpszRegVal_Bottom = _T("Bottom"), + lpszRegVal_Visible = _T("Visibility"), + lpszRegVal_State = _T("State"), + lpszRegVal_Valid = _T("(valid)"); + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicControlsManager::ControlData::ControlEntry +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// construction/destruction +///////////////////////////////////////////////////////////////////////////// + +cdxCDynamicControlsManager::ControlData::ControlEntry::ControlEntry(CWnd & ctrl, ControlData & rMaster) +: m_rMaster(rMaster), m_rCtrl(ctrl) +{ + if(m_pNext = rMaster.m_pCtrl) + m_pNext->m_pPrev = this; + rMaster.m_pCtrl = this; + m_pPrev = NULL; + + // raise total counter + ++rMaster.m_rMaster.m_iTotalCnt; +} + +cdxCDynamicControlsManager::ControlData::ControlEntry::~ControlEntry() +{ + if(m_pPrev) + { + if(m_pPrev->m_pNext = m_pNext) + m_pNext->m_pPrev = m_pPrev; + } + else + { + ASSERT( m_rMaster.m_pCtrl == this ); + if(m_rMaster.m_pCtrl = m_pNext) + m_pNext->m_pPrev = NULL; + } + + // lower + ASSERT( m_rMaster.m_rMaster.m_iTotalCnt > 0 ); + ++m_rMaster.m_rMaster.m_iTotalCnt; +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicControlsManager::ControlData +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// construction/destruction +///////////////////////////////////////////////////////////////////////////// + +/* + * constructor + * copies all paramaters and gets the controls initial position using + * GetWindowPos(). + * + * NOTE that the constructor need ctrl.m_hWnd to exist (in contrast to + * Add() + */ + +cdxCDynamicControlsManager::ControlData::ControlData(cdxCDynamicControlsManager & rMaster, CWnd & ctrl, const PositionSetup & rPosSetup) +: m_rMaster(rMaster), m_pCtrl(NULL), + m_pNext(NULL), m_pPrev(NULL), + m_posSetup(rPosSetup) +{ + ASSERT(::IsWindow(ctrl.m_hWnd)); // control must have already been created ! + ASSERT(rPosSetup.IsValid()); + + // + // get initial values + // + + WINDOWPLACEMENT wpl; + VERIFY( ctrl.GetWindowPlacement(&wpl) ); + + m_rectOriginal = wpl.rcNormalPosition; + + // + // remember control + // + + new ControlEntry(ctrl,*this); + ASSERT(m_pCtrl != NULL); + + // + // link us to the cdxCDynamicControlsManager's list + // + + if(m_pNext = m_rMaster.m_pFirst) + m_pNext->m_pPrev = this; + m_pPrev = NULL; + m_rMaster.m_pFirst = this; +} + +/* + * detach from list + * The m_Ctrl deletes all children by itself + */ + +cdxCDynamicControlsManager::ControlData::~ControlData() +{ + // + // delete all control references + // + + while(m_pCtrl) + delete m_pCtrl; + + // + // unlink from list + // + + if(m_pPrev) + { + if(m_pPrev->m_pNext = m_pNext) + m_pNext->m_pPrev = m_pPrev; + } + else + { + ASSERT(m_rMaster.m_pFirst == this); + if(m_rMaster.m_pFirst = m_pNext) + m_pNext->m_pPrev = NULL; + } +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicControlsManager::ControlData virtuals +///////////////////////////////////////////////////////////////////////////// + +/* + * checks whether the CWnd is part of this control data + */ + +bool cdxCDynamicControlsManager::ControlData::IsMember(CWnd & ctrl) const +{ + for(const ControlEntry *pEntry = m_pCtrl; pEntry; pEntry = pEntry->GetNext()) + if(*pEntry == ctrl) + return true; + + return false; +} + +/* + * removes a CWnd from this chain + */ + +bool cdxCDynamicControlsManager::ControlData::Rem(CWnd & ctrl) +{ + for(ControlEntry *pEntry = m_pCtrl; pEntry; pEntry = pEntry->GetNext()) + if(*pEntry == ctrl) + { + delete pEntry; + return true; + } + + return false; +} + +/* + * Get current position + */ + +CRect cdxCDynamicControlsManager::ControlData::GetCurrentPosition() const +{ + if(!IsUsed()) + { + ASSERT(false); // all sub-controls have been deleted + return CRect(0,0,0,0); + } + + WINDOWPLACEMENT wpl; + VERIFY( m_pCtrl->GetCWnd().GetWindowPlacement(&wpl) ); + return CRect(wpl.rcNormalPosition); +} + +/* + * modify initial setup + * NOTE: this function does not move the controls. + * You habe to call cdxCDynamicControlsManager::ReorganizeControls past + * using this function + */ + +bool cdxCDynamicControlsManager::ControlData::Modify(const CRect & rectOriginal, const PositionSetup & rSetup) +{ + if((rectOriginal.left > rectOriginal.right) || + (rectOriginal.top > rectOriginal.bottom) || + !rSetup.IsValid()) + { + ASSERT(false); // bad function call + return false; + } + + m_rectOriginal = rectOriginal; + m_posSetup = rSetup; + return true; +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicControlsManager +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// handling events from CWnd +///////////////////////////////////////////////////////////////////////////// + +/* + * this function initializes the following members: + * m_pWnd - the window handle + * m_szCurrent - the current window's size + * m_szMin - the minimum window's size (taken from current size) + * m_szMax - the maximum window's size (set to (0,0) <=> don't change maximum) + * m_wndSizeIcon - the icon (if wanted) + * + * parameters: + * rWnd - the window to supervise + * fd - in which directions can we size the window (does only apply to user-sizing) + * bSizeIcon - do you want a sizable icon ? + * pBaseClientSize- if non-zero, this defines the real (normal) size of the + * window relative to all furher calculations will be made. + * if zero, the current window's size will be taken. + */ + +void cdxCDynamicControlsManager::DoInitWindow(CWnd & rWnd, Freedom fd, bool bSizeIcon, const CSize * pBaseClientSize) +{ + ASSERT(m_pWnd == NULL); // you MUST NOT call this function twice ! + ASSERT(::IsWindow(rWnd.m_hWnd)); // rWnd MUST already exist !! + + m_pWnd = &rWnd; + m_Freedom = fd; + + // + // get current's window size + // + + CRect rect; + m_pWnd->GetWindowRect(&rect); + CRect rectClient; + m_pWnd->GetClientRect(&rectClient); + + if(!pBaseClientSize) + { + m_szClientRelative.cx = rectClient.Width(); + m_szClientRelative.cy = rectClient.Height(); + + m_szMin.cx = rect.Width(); + m_szMin.cy = rect.Height(); + } + else + { + ASSERT((pBaseClientSize->cx > 0) && (pBaseClientSize->cy > 0)); + + m_szClientRelative = *pBaseClientSize; + m_szMin.cx = m_szClientRelative.cx + (rect.Width() - rectClient.Width()); + m_szMin.cy = m_szClientRelative.cy + (rect.Height() - rectClient.Height()); + } + + m_szMax.cx = 0; + m_szMax.cy = 0; + + // + // set up icon if wanted + // + + if(bSizeIcon) + { + VERIFY( m_pWndSizeIcon = new cdxCSizeIconCtrl ); + VERIFY( m_pWndSizeIcon->Create(m_pWnd,m_idSizeIcon) ); // creates my control; id is SIZE_CONTROL_ID + + AddSzControl(*m_pWndSizeIcon,mdRepos,mdRepos); + m_pWndSizeIcon->ShowWindow(SW_SHOW); // finally - show it + } +} + +///////////////////////////////////////////////////////////////////////////// + +/* + * fill in MINMAXINFO as requested + * Call your CWnd's OnGetMinMaxInfo first ! + * + * changed due to a but report by Michel Wassink + */ + +void cdxCDynamicControlsManager::DoOnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) +{ + if(IsReady() && !IsDisabled()) + { + lpMMI->ptMinTrackSize.x = m_szMin.cx; + lpMMI->ptMinTrackSize.y = m_szMin.cy; + + if(m_Freedom & fdHoriz) + { + if(m_szMax.cx) + lpMMI->ptMaxTrackSize.x = m_szMax.cx; + } + else + lpMMI->ptMaxTrackSize.x = m_szMin.cx; + + if(m_Freedom & fdVert) + { + if(m_szMax.cy) + lpMMI->ptMaxTrackSize.y = m_szMax.cy; + } + else + lpMMI->ptMaxTrackSize.y = m_szMin.cy; + } +} + +/* + * handle OnSize - we can't rely on cx,cy being client dimensions + * as stated in the documentation ... + */ + +void cdxCDynamicControlsManager::DoOnSize(UINT nType, int cx, int cy) +{ + if(IsReady() && (nType != SIZE_MINIMIZED) && !IsDisabled()) + ReorganizeControls(true); +} + +/* + * free all memory + * after having called this function, you can reuse the object + * although I wouldn't recommend to do so :) + */ + +void cdxCDynamicControlsManager::DoDestroyWindow() +{ + while(m_pFirst) + { + OnDeleteControlPosition(*m_pFirst); + delete m_pFirst; + } + + if(m_pWndSizeIcon) + { + if(::IsWindow(m_pWndSizeIcon->m_hWnd)) + m_pWndSizeIcon->DestroyWindow(); + delete m_pWndSizeIcon; + m_pWndSizeIcon = NULL; + } + + m_pWnd = NULL; +} + +///////////////////////////////////////////////////////////////////////////// +// control positioning +///////////////////////////////////////////////////////////////////////////// + +/* + * Reposition (without current rectangle size) + * + * rectWin - window rectangle (including border) + * rectClient - window rectangle (client area) + * Note that since release 6, rectClient.left and .top might be > zero + * (for scrolling) + * bRedraw - invalidate & update window + */ + +void cdxCDynamicControlsManager::ReorganizeControlsAdvanced(const CRect & rectWin, CRect rectClient, bool bRedraw) +{ + ASSERT(IsReady()); + + if(!GetTotalChildCnt()) + return; + + // + // we won't go smaller with the whole window than + // m_szMin + // + + if(rectWin.Width() < m_szMin.cx) + rectClient.right += (m_szMin.cx - rectWin.Width()); + if(rectWin.Height() < m_szMin.cy) + rectClient.bottom += (m_szMin.cy - rectWin.Height()); + + // + // we new replace all controls + // + + CSize szDelta; + szDelta.cx = rectClient.Width() - m_szClientRelative.cx; + szDelta.cy = rectClient.Height() - m_szClientRelative.cy; + + CPoint pntOffset = rectClient.TopLeft(); + + // newly added code by Rodger Bernstein + + AFX_SIZEPARENTPARAMS layout; + ControlData *sz; + bool bManual = true; + + if(!( layout.hDWP = ::BeginDeferWindowPos(GetTotalChildCnt()) )) + { + TRACE(_T("*** ERROR[cdxCDynamicControlsManager::ReorganizeControlsAdvanced()]: BeginDeferWindowPos() failed.\n")); + } + else + { + for(sz = m_pFirst; sz; sz = sz->GetNext()) + sz->OnSize(szDelta, &layout, &pntOffset); + + if(!::EndDeferWindowPos(layout.hDWP)) + { + TRACE(_T("*** ERROR[cdxCDynamicControlsManager::ReorganizeControlsAdvanced()]: EndDeferWindowPos() failed.\n")); + } + else + bManual = false; + } + + if(bManual) + for(sz = m_pFirst; sz; sz = sz->GetNext()) + sz->OnSize(szDelta, NULL); + + if(bRedraw && m_pWnd->IsWindowVisible()) + { + m_pWnd->RedrawWindow(NULL, NULL, RDW_UPDATENOW | RDW_NOERASE); + } +} + +///////////////////////////////////////////////////////////////////////////// +// misc +///////////////////////////////////////////////////////////////////////////// + +/* + * change minimum and maximum height of window. + * + * szMin - new minimum size (use GetMinSize() to leave it as being before) + * szMax - new maximum size ( " GetMaxSize() ") + * Set to CSize(0,0) if you don't want a maximum size. + * bResizeIfNecessary - call FixWindowSize() past calculating new sizes. + * + * returns false if szMin and szMax are illegal (e.g. szMin > szMax) + */ + +bool cdxCDynamicControlsManager::SetMinMaxSize(const CSize & szMin, const CSize & szMax, bool bResizeIfNecessary) +{ + ASSERT(IsReady()); // DoInitWindow() not called ? + + if((szMax.cx && (szMin.cx > szMax.cx)) || + (szMax.cy && (szMin.cy > szMax.cy))) + { + return false; + } + + m_szMin = szMin; + m_szMax = szMax; + + if(bResizeIfNecessary) + FixWindowSize(); + + return true; +} + +/* + * this function ensure that the window's size is between m_szMin and m_szMax. + * returns true if window size has been changed + */ + +bool cdxCDynamicControlsManager::FixWindowSize() +{ + ASSERT(IsReady()); // use DoInitWindow() first ! + + CSize szCurrent = GetWindowSize(*m_pWnd), + szDelta; + + if(m_szMax.cx && (szCurrent.cx > m_szMax.cx)) + szDelta.cx = m_szMax.cx - szCurrent.cx; // is negative + else + if(szCurrent.cx < m_szMin.cx) + szDelta.cx = m_szMin.cx - szCurrent.cx; // is positive + else + szDelta.cx = 0; + + if(m_szMax.cy && (szCurrent.cy > m_szMax.cy)) + szDelta.cy = m_szMax.cy - szCurrent.cy; // is negative + else + if(szCurrent.cy < m_szMin.cy) + szDelta.cy = m_szMin.cy - szCurrent.cy; // is positive + else + szDelta.cy = 0; + + if(!szDelta.cx && !szDelta.cy) + return false; // nothing to do + + StretchWindow(*m_pWnd,szDelta); + return true; +} + +///////////////////////////////////////////////////////////////////////////// + +/* + * hide and show icon + */ + +void cdxCDynamicControlsManager::HideSizeIcon() +{ + if(m_pWndSizeIcon && ::IsWindow(m_pWndSizeIcon->m_hWnd)) + m_pWndSizeIcon->ShowWindow(SW_HIDE); +} + +void cdxCDynamicControlsManager::ShowSizeIcon() +{ + if(m_pWndSizeIcon && ::IsWindow(m_pWndSizeIcon->m_hWnd)) + m_pWndSizeIcon->ShowWindow(SW_SHOW); +} + +///////////////////////////////////////////////////////////////////////////// +// static functions: window sizing +///////////////////////////////////////////////////////////////////////////// + +/* + * stretches the window by szDelta (i.e. if szDelta is 100, the window is enlarged by 100 pixels) + * stretching means that the center point of the window remains + * + * returns false if the window would be smaller than (1,1) + * + * NOTE: this function does NOT care of the min/max dimensions of a window + * Use MoveWindow() if you need to take care of it. + * + * STATIC + */ + +bool cdxCDynamicControlsManager::StretchWindow(CWnd & rWnd, const CSize & szDelta) +{ + ASSERT(::IsWindow(rWnd.m_hWnd)); + + WINDOWPLACEMENT wpl; + rWnd.GetWindowPlacement(&wpl); + + wpl.rcNormalPosition.left -= szDelta.cx / 2; + wpl.rcNormalPosition.right += (szDelta.cx + 1) / 2; + wpl.rcNormalPosition.top -= szDelta.cy / 2; + wpl.rcNormalPosition.bottom += (szDelta.cy + 1) / 2; +// wpl.flags = SW_SHOWNA|SW_SHOWNOACTIVATE; + + if((wpl.rcNormalPosition.left >= wpl.rcNormalPosition.right) || + (wpl.rcNormalPosition.top >= wpl.rcNormalPosition.bottom)) + return false; + + VERIFY( rWnd.SetWindowPos( NULL, + wpl.rcNormalPosition.left, + wpl.rcNormalPosition.top, + wpl.rcNormalPosition.right - wpl.rcNormalPosition.left, + wpl.rcNormalPosition.bottom - wpl.rcNormalPosition.top, + SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER) ); + + return true; +} + +/* + * stretch window by a percent value + * the algorithm calculates the new size for both dimensions by: + * + * newWid = oldWid + (oldWid * iAddPcnt) / 100 + * + * NOTE: iAddPcnt may even be nagtive, but it MUST be greater than -100. + * NOTE: this function does NOT care of the min/max dimensions of a window + * + * The function will return false if the new size would be empty. + * + * STATIC + */ + +bool cdxCDynamicControlsManager::StretchWindow(CWnd & rWnd, int iAddPcnt) +{ + ASSERT(::IsWindow(rWnd.m_hWnd)); + + CSize szDelta = GetWindowSize(rWnd); + + szDelta.cx = (szDelta.cx * iAddPcnt) / 100; + szDelta.cy = (szDelta.cy * iAddPcnt) / 100; + + return StretchWindow(rWnd,szDelta); +} + +/* + * get current window's size + * + * STATIC + */ + +CSize cdxCDynamicControlsManager::GetWindowSize(CWnd & rWnd) +{ + ASSERT(::IsWindow(rWnd.m_hWnd)); + + CRect rect; + rWnd.GetWindowRect(&rect); + return CSize(rect.Width(),rect.Height()); +} + +///////////////////////////////////////////////////////////////////////////// +// static functions: window & registry +///////////////////////////////////////////////////////////////////////////// + +/* + * stores a window's position and visiblity to the registry. + * + * return false if any error occured + * + * STATIC + */ + +bool cdxCDynamicControlsManager::StoreWindowPosition(CWnd & rWnd, LPCTSTR lpszProfile) +{ + ASSERT(::IsWindow(rWnd.m_hWnd) && lpszProfile && *lpszProfile); + // can't use an empty profile section string; see CWinApp::GetProfileInt() for further information + + WINDOWPLACEMENT wpl; + VERIFY( rWnd.GetWindowPlacement(&wpl) ); + BOOL bVisible = rWnd.IsWindowVisible(); + int iState = REGVAL_NOSTATE; + + if(rWnd.IsIconic()) + iState = REGVAL_ICONIC; + else + if(rWnd.IsZoomed()) + iState = REGVAL_MAXIMIZED; + + return AfxGetApp()->WriteProfileInt(lpszProfile, lpszRegVal_Valid, REGVAL_INVALID) && // invalidate first + AfxGetApp()->WriteProfileInt(lpszProfile, lpszRegVal_Left, wpl.rcNormalPosition.left) && + AfxGetApp()->WriteProfileInt(lpszProfile, lpszRegVal_Right, wpl.rcNormalPosition.right) && + AfxGetApp()->WriteProfileInt(lpszProfile, lpszRegVal_Top, wpl.rcNormalPosition.top) && + AfxGetApp()->WriteProfileInt(lpszProfile, lpszRegVal_Bottom, wpl.rcNormalPosition.bottom) && + AfxGetApp()->WriteProfileInt(lpszProfile, lpszRegVal_Visible, bVisible ? REGVAL_VISIBLE : REGVAL_HIDDEN) && + AfxGetApp()->WriteProfileInt(lpszProfile, lpszRegVal_State, iState) && + AfxGetApp()->WriteProfileInt(lpszProfile, lpszRegVal_Valid, REGVAL_VALID); // validate position +} + +/* + * load the registry data stored by StoreWindowPosition() + * returns true if data have been found in the registry + * + * STATIC + */ + +bool cdxCDynamicControlsManager::RestoreWindowPosition(CWnd & rWnd, LPCTSTR lpszProfile, UINT restoreFlags) +{ + ASSERT(::IsWindow(rWnd.m_hWnd) && lpszProfile && *lpszProfile); + // can't use an empty profile section string; see CWinApp::GetProfileInt() for further information + + // + // first, we check whether the position had been saved successful any time before + // + + if( AfxGetApp()->GetProfileInt(lpszProfile,lpszRegVal_Valid,REGVAL_INVALID) != REGVAL_VALID ) + return false; + + // + // get old position + // + + WINDOWPLACEMENT wpl; + VERIFY( rWnd.GetWindowPlacement(&wpl) ); + + // + // read registry + // + + int iState = AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_State, REGVAL_NOSTATE); + + // + // get window's previous normal position + // + + wpl.rcNormalPosition.left = AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Left, wpl.rcNormalPosition.left); + wpl.rcNormalPosition.right = AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Right, wpl.rcNormalPosition.right); + wpl.rcNormalPosition.top = AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Top, wpl.rcNormalPosition.top); + wpl.rcNormalPosition.bottom = AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Bottom, wpl.rcNormalPosition.bottom); + + if(wpl.rcNormalPosition.left > wpl.rcNormalPosition.right) + { + long l = wpl.rcNormalPosition.right; + wpl.rcNormalPosition.right = wpl.rcNormalPosition.left; + wpl.rcNormalPosition.left = l; + } + if(wpl.rcNormalPosition.top > wpl.rcNormalPosition.bottom) + { + long l = wpl.rcNormalPosition.bottom; + wpl.rcNormalPosition.bottom = wpl.rcNormalPosition.top; + wpl.rcNormalPosition.top = l; + } + + // + // get restore stuff + // + + UINT showCmd = SW_SHOWNA; + + if(restoreFlags & rflg_state) + { + if(iState == REGVAL_MAXIMIZED) + showCmd = SW_MAXIMIZE; + else + if(iState == REGVAL_ICONIC) + showCmd = SW_MINIMIZE; + } + + // + // use MoveWindow() which takes care of WM_GETMINMAXINFO + // + + rWnd.MoveWindow( wpl.rcNormalPosition.left,wpl.rcNormalPosition.top, + wpl.rcNormalPosition.right - wpl.rcNormalPosition.left, + wpl.rcNormalPosition.bottom - wpl.rcNormalPosition.top, + showCmd == SW_SHOWNA); + + if(showCmd != SW_SHOWNA) + { + // read updated position + + VERIFY( rWnd.GetWindowPlacement(&wpl) ); + wpl.showCmd = showCmd; + rWnd.SetWindowPlacement(&wpl); + } + + // + // get visiblity + // + + if(restoreFlags & rflg_visibility) + { + int i = AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Visible, REGVAL_NOSTATE); + if(i == REGVAL_VISIBLE) + rWnd.ShowWindow(SW_SHOW); + else + if(i == REGVAL_HIDDEN) + rWnd.ShowWindow(SW_HIDE); + } + + return true; +} + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.h new file mode 100644 index 0000000000..c8bb3e9069 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.h @@ -0,0 +1,615 @@ +// cdxCDynamicControlsManager.h: interface for the cdxCDynamicControlsManager class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_CDXCDYNAMICCONTROLSMANAGER_H__6517AE13_5D12_11D2_BE4C_000000000000__INCLUDED_) +#define AFX_CDXCDYNAMICCONTROLSMANAGER_H__6517AE13_5D12_11D2_BE4C_000000000000__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include "cdxCSizeIconCtrl.h" +#include +typedef cdxCSizeIconCtrl cdxCSizeCtrl; + +// +// cdxCDynamicControlsManager.h : header file +// ----------------------------------------------------------------------- +// Author: Hans Bühler (hans.buehler@student.hu-berlin.de) +// codex design (http://www-pool.mathematik.hu-berlin.de/~codex +// Version: 1.5 +// Release: 5 (Mar 1999 to www.codeguru.com) +// ----------------------------------------------------------------------- +// Changes for V1.1: +// - cdxCSizeCtrl is now only a typedef on cdxCSizeIconCtrl which is been +// but in two extra files (header and impl.) to make it available to +// the programmer even if you don't use cdxCDynamicControls. +// The include/impl file for cdxCSizeIconCtrl must be available. +// - GetSizeIconBitmap() is been deleted. +// - ICON_CONTROL_ID has been changed to AFX_IDW_SIZE_BOX +// Changes for V1.2: +// - cdxCDynamicControlsManager::DoOnGetMinMaxInfo() has been modified +// (thanks to a bug report by Michel Wassink ): +// Now, if you don't call SetMaxSize(), the maximum position of a window +// will not be changed. +// BUG: Under W95 and W98, resizing didn't work properly REMOVED. +// Changes for V1.3: +// - FindSzControl() and RemSzControl() have been added. +// Changes for V1.4: +// - RestoreWindowPosition() is been speed up. +// - FixWindowSize() has been debugged +// - RemSzControl() is been made more comfortable. +// You can now remove controls properly from the dynamic controls manager. +// Moreover, the embedded ControlPosition class has now some more virtual +// functions for your own use. +// For example, you can modify the way a control reacts later now. +// - Enable() / Disable() have been added. +// Using them you can temporarily disable the automatic repositioning. +// Changes to V1.5 +// - Flickering of controls during resize fixed thanks to great hint +// by Rodger Bernstein. +// ----------------------------------------------------------------------- +// Comments welcome. +// + +/* + * cdxCDynamicControlsManager + * ========================== + * Makes any CWnd derived class capable of dynamic control resizing + * and repositioning. + * Moreover, it can set a window's max/min tracking size (the size + * the user can change) and add a nice sizing icon to the windows + * lower right corner (if the window does not have one - as dialogs). + * + * To make any CWnd derived capable of automatically displaying + * its controls, you embed a member of this class in your window + * (or you derive your class from both this class and your window + * base class - that depends on how you want to use the member + * functions of this class). + * + * Then, the following functions must be called + * + * DoInitWindow() - Must be called after the window became + * valid (i.e. CWnd::m_hWnd is non-zero) + * and has its initial (minimum) size. + * DoOnSize() - by the OnSize() message handler + * DoOnGetMinMaxInfo() - by the OnGetMinMaxInfo() message handler + * DoDestroyWindow() - by DestroyWindow(). + * + * See cdxCSizingDialog.h for an example. + * + * NOTE: + * Unfortunately, we cannot derive this class from CObject, because + * those macros DECLARE_xxx are too lame to handle multipile derived + * classes if both classes have been derived from the same base-class + * CObject. + */ + +class cdxCDynamicControlsManager +{ + // + // various constants + // +public: + enum Mode // flags for AddSzControl() + { + mdNone = 0, // does nothing + mdResize = 1, // resize in that dimension + mdRepos = 2, // reposition + mdRelative = 3, // center (size by delta/2 and repos by delta/2) + md__Last = mdRelative + }; + + enum Freedom + { + fdNone = 0, // might be used but I don't imagine what you want from this ?? + fdHoriz = 0x01, // horizantally sizable only + fdVert = 0x02, // vertically sizable only + fdAll = fdHoriz|fdVert // sizable in all directions + }; + + enum RestoreFlags + { + rflg_none = 0, // only load window position + rflg_state = 0x01, // make window iconic/zoomed if been before + rflg_visibility = 0x02, // hide/show window as been before + rflg_all = rflg_state|rflg_visibility + }; + + enum + { + ICON_CONTROL_ID = AFX_IDW_SIZE_BOX + }; + + // + // a positioning parameter + // +public: + class PositionSetup + { + public: + BYTE m_dX1pcnt,m_dX2pcnt, // how positioning should work (see docs) + m_dY1pcnt,m_dY2pcnt; + public: + PositionSetup(BYTE dX1pcnt = 0, BYTE dX2pcnt = 0, BYTE dY1pcnt = 0, BYTE dY2pcnt = 0) : m_dX1pcnt(dX1pcnt), m_dX2pcnt(dX2pcnt), m_dY1pcnt(dY1pcnt), m_dY2pcnt(dY2pcnt) {} + ~PositionSetup() {} + + // validity check + bool IsValid() const { return (m_dX1pcnt <= m_dX2pcnt) && (m_dY1pcnt <= m_dY2pcnt); } + + // transform + CRect Transform(const CRect & rectOriginal, const CSize & szDelta) const; + + // quick-use + CRect operator()(const CRect & rectOriginal, const CSize & szDelta) const { return Transform(rectOriginal,szDelta); } + }; + + // + // an astract handle to a sizeable control that you can + // use to add further controls to + // see discussion of AddSzControl() + // +public: + class ControlPosition + { + protected: + ControlPosition() {} + public: + virtual ~ControlPosition() {} + + public: + virtual bool IsMember(CWnd & ctrl) const = NULL; + virtual bool IsUsed() const = NULL; + + virtual void Add(CWnd & ctrl) = NULL; + virtual bool Rem(CWnd & ctrl) = NULL; + + virtual bool Modify(const CRect & rectOriginal, const PositionSetup & rSetup) = NULL; + virtual CRect GetCurrentPosition() const = NULL; + virtual CRect GetOriginalPosition() const = NULL; + virtual PositionSetup GetPositionSetup() const = NULL; + }; + + // + // internal storage class for controls and their + // original positions and their behaviour settings + // +private: + class ControlData : public ControlPosition + { + // + // all controls with the same positioning arguments + // (used by Add()) + // Note that the window is not need to be already created + // + private: + struct ControlEntry + { + private: + ControlData & m_rMaster; // container + ControlEntry *m_pNext,*m_pPrev; // next, prev + CWnd & m_rCtrl; // the control + + public: + ControlEntry(CWnd & ctrl, ControlData & rMaster); + virtual ~ControlEntry(); + + void Position(AFX_SIZEPARENTPARAMS *lpSz, int x, int y, int wid, int hi, bool bAll); + + void Add(CWnd & ctrl, int x, int y, int wid, int hi); + + ControlEntry *GetNext() { return m_pNext; } + CWnd & GetCWnd() { return m_rCtrl; } + const ControlEntry *GetNext() const { return m_pNext; } + const CWnd & GetCWnd() const { return m_rCtrl; } + + bool operator==(const CWnd & ctrl) const { return &m_rCtrl == &ctrl; } + }; + + friend struct ControlEntry; + + private: + cdxCDynamicControlsManager & m_rMaster; // the master class + ControlData *m_pNext,*m_pPrev; // a linked list (root in m_rMaster.m_pFirst) + + ControlEntry *m_pCtrl; // control link list + PositionSetup m_posSetup; + CRect m_rectOriginal; // original position of control(s) + + public: + ControlData(cdxCDynamicControlsManager & rMaster, CWnd & ctrl, const PositionSetup & rPosSetup); + virtual ~ControlData(); + + virtual bool IsUsed() const { return m_pCtrl != NULL; } + + // + // access to CWnds + // + + virtual bool IsMember(CWnd & ctrl) const; + virtual void Add(CWnd & ctrl) { new ControlEntry(ctrl,*this); } + virtual bool Rem(CWnd & ctrl); + + // + // positioning + // + + virtual bool Modify(const CRect & rectOriginal, const PositionSetup & rSetup); + virtual CRect GetCurrentPosition() const; + virtual CRect GetOriginalPosition() const { return CRect(m_rectOriginal); } + virtual PositionSetup GetPositionSetup() const { return PositionSetup(m_posSetup); } + + // + // helpers + // + + ControlData *GetNext() { return m_pNext; } + const ControlData *GetNext() const { return m_pNext; } + + // + // events + // + + void OnSize(const CSize & szDelta, AFX_SIZEPARENTPARAMS *lpSz, const CPoint *pOffset = NULL); + }; + + // + // my members + // + + friend class ControlData; + friend struct ControlData::ControlEntry; + +private: + ControlData *m_pFirst; + CWnd *m_pWnd; // Use Init() !!!!!!!!! + CSize m_szClientRelative, // original's window size (client !!) - used in OnSize() to calculate delta size + m_szMin, // minimum size (whole window) + m_szMax; // maximum (whole window) + Freedom m_Freedom; // what is allowed + cdxCSizeCtrl *m_pWndSizeIcon; // the icon control + int m_iDisabledCnt; // counts Disable() and Enable() + UINT m_iTotalCnt; // total counter of all ControlData::ControlEntry objects + +public: + UINT m_idSizeIcon; // ID of the icon control (you can set this to change the default, ICON_CONTROL_ID) + bool m_bApplyScrollPosition; // fix scroll position for controls (set this in your constructor) + +public: + cdxCDynamicControlsManager() : m_pFirst(NULL), m_pWnd(NULL), m_Freedom(fdAll), m_pWndSizeIcon(NULL), m_idSizeIcon(ICON_CONTROL_ID), m_iDisabledCnt(0), m_iTotalCnt(0), m_bApplyScrollPosition(false) {} + virtual ~cdxCDynamicControlsManager() { DoDestroyWindow(); } + + // + // check status + // + + bool IsReady() const { return (m_pWnd != NULL) && ::IsWindow(m_pWnd->m_hWnd); } + UINT GetTotalChildCnt() const { return m_iTotalCnt; } + + // + // get some basics + // + + const CSize & GetMinSize() const { return m_szMin; } + const CSize & GetMaxSize() const { return m_szMax; } + Freedom GetFreedom() const { return m_Freedom; } + + // + // wanna change some basics ? + // + bool SetMinMaxSize(const CSize & szMin, const CSize & szMax, bool bResizeIfNecessary = true); + bool FixWindowSize(); + void SetFreedom(Freedom fd) { m_Freedom = fd; } + void HideSizeIcon(); + void ShowSizeIcon(); + + // + // add controls to handle + // + ControlPosition *AddSzControl(CWnd & ctrl, Mode modeX, Mode modeY); + ControlPosition *AddSzXControl(CWnd & ctrl, Mode modeX) { return AddSzControl(ctrl,modeX,mdNone); } + ControlPosition *AddSzYControl(CWnd & ctrl, Mode modeY) { return AddSzControl(ctrl,mdNone,modeY); } + + ControlPosition *AddSzControlEx(CWnd & ctrl, BYTE dX1pcnt, BYTE dX2pcnt, BYTE dY1pcnt, BYTE dY2pcnt) { return AddSzControlEx(ctrl,PositionSetup(dX1pcnt,dX2pcnt,dY1pcnt,dY2pcnt)); } + ControlPosition *AddSzXControlEx(CWnd & ctrl, BYTE dX1pcnt, BYTE dX2pcnt) { return AddSzControlEx(ctrl,dX1pcnt,dX2pcnt,0,0); } + ControlPosition *AddSzYControlEx(CWnd & ctrl, BYTE dY1pcnt, BYTE dY2pcnt) { return AddSzControlEx(ctrl,0,0,dY1pcnt,dY2pcnt); } + + virtual ControlPosition *AddSzControlEx(CWnd & ctrl, const PositionSetup & rSetup); + + // + // advanced (new to V1.3) + // + ControlPosition *FindSzControl(CWnd & ctrl); + const ControlPosition *FindSzControl(CWnd & ctrl) const; + bool RemSzControl(CWnd & ctrl, bool bAutoDeleteUnusedControlPos = true); + + // + // advanced (new to V1,4) + // + virtual bool Enable(bool bForce = false) { if(!bForce) { --m_iDisabledCnt; ASSERT(m_iDisabledCnt >= 0); } else m_iDisabledCnt = 0; return m_iDisabledCnt == 0; } + virtual void Disable() { ++m_iDisabledCnt; } + virtual bool IsDisabled() const { return m_iDisabledCnt > 0; } + + // + // these must be called by the appropiate message handlers of the window + // class you're deriving from + // +public: + void DoInitWindow(CWnd & rWnd, Freedom fd = fdAll, bool bSizeIcon = false, const CSize * pBaseClientSize = NULL); + void DoOnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); + void DoOnSize(UINT nType, int cx, int cy); + void DoDestroyWindow(); + + // + // some helpers + // + void ReorganizeControls(bool bRedraw = true); + void ReorganizeControlsAdvanced(const CRect & rectWin, CRect rectClient, bool bRedraw = true); + bool StretchWindow(const CSize & szDelta) { ASSERT(IsReady()); return StretchWindow(*m_pWnd,szDelta); } + bool StretchWindow(int iAddPcnt) { ASSERT(IsReady()); return StretchWindow(*m_pWnd,iAddPcnt); } + CSize GetWindowSize() { ASSERT(IsReady()); return GetWindowSize(*m_pWnd); } + bool RestoreWindowPosition(LPCTSTR lpszProfile, UINT restoreFlags = rflg_none) { ASSERT(IsReady()); return RestoreWindowPosition(*m_pWnd,lpszProfile,restoreFlags); } + bool StoreWindowPosition(LPCTSTR lpszProfile) { ASSERT(IsReady()); return StoreWindowPosition(*m_pWnd,lpszProfile); } + + // + // helpers; static + // +public: + static bool StretchWindow(CWnd & rWnd, const CSize & szDelta); + static bool StretchWindow(CWnd & rWnd, int iAddPcnt); + static CSize GetWindowSize(CWnd & rWnd); + static bool RestoreWindowPosition(CWnd & rWnd, LPCTSTR lpszProfile, UINT restoreFlags = rflg_none); + static bool StoreWindowPosition(CWnd & rWnd, LPCTSTR lpszProfile); + + // + // some virtuals + // +protected: + virtual void OnDeleteControlPosition(ControlPosition & rWillBeDeleted) {} + virtual CRect GetRealClientRect() const; + + // + // misc + // +public: + /* removed */ //static CBitmap & GetSizeIconBitmap(CSize * pSzBmp = NULL); + static CImageList & GetSizeIconImageList(CSize * pSzBmp = NULL) { if(pSzBmp) *pSzBmp = cdxCSizeIconCtrl::M_ilImage.Size(); return cdxCSizeIconCtrl::M_ilImage; } +}; + +/* + * cdxCSizeCtrl + * ============ + * Is now a typedef to cdxCSizeIconCtrl - see above. + */ + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicControlsManager::PositionSetup inlines +///////////////////////////////////////////////////////////////////////////// + +/* + * this function transforms a control's original position (rectOriginal) into + * its new rectangle by taking the the difference between the original window's + * size (szDelta). + */ + +inline CRect cdxCDynamicControlsManager::PositionSetup::Transform(const CRect & rectOriginal, const CSize & szDelta) const +{ + CRect rectNew; + + rectNew.left = rectOriginal.left + (szDelta.cx * (int)m_dX1pcnt) / 100; + rectNew.right = rectOriginal.right + (szDelta.cx * (int)m_dX2pcnt) / 100; + rectNew.top = rectOriginal.top + (szDelta.cy * (int)m_dY1pcnt) / 100; + rectNew.bottom = rectOriginal.bottom + (szDelta.cy * (int)m_dY2pcnt) / 100; + + return rectNew; +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicControlsManager::ControlData::ControlEntry inlines +///////////////////////////////////////////////////////////////////////////// + + +/* + * add a control that has the same coordinates as the + * control embedded in the ControlData object. + * The coordinates are needed to immediately place the + * control to the original control's position. + */ + +inline void cdxCDynamicControlsManager::ControlData::ControlEntry::Add(CWnd & ctrl, int x, int y, int wid, int hi) +{ + VERIFY( m_pNext = new ControlEntry(ctrl,m_rMaster) ); + m_pNext->Position(NULL,x,y,wid,hi,false); +} + +/* + * apply new position to all "ControlEntry" controls + * we don't change the z-order here ! + */ + +inline void cdxCDynamicControlsManager::ControlData::ControlEntry::Position(AFX_SIZEPARENTPARAMS *lpSz, int x, int y, int wid, int hi, bool bAll) +{ + if(::IsWindow(m_rCtrl.m_hWnd)) // those window don't need to exist :) + { + if (lpSz != NULL) + AfxRepositionWindow(lpSz, m_rCtrl.m_hWnd, CRect(CPoint(x,y),CSize(wid,hi))); + else + { + VERIFY( m_rCtrl.SetWindowPos(&CWnd::wndBottom,x,y,wid,hi, + SWP_NOCOPYBITS|SWP_NOOWNERZORDER| + SWP_NOACTIVATE|SWP_NOZORDER) ); + } + } + if(m_pNext && bAll) + m_pNext->Position(lpSz, x,y,wid,hi,true); +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicControlsManager::ControlData inlines +///////////////////////////////////////////////////////////////////////////// +/* + * called by cdxCDynamicControlsManager::ReorganizeControls() if the size of the window has been changed. + * repositions all controls applied to this ControlData + */ + +inline void cdxCDynamicControlsManager::ControlData::OnSize(const CSize & szDelta, AFX_SIZEPARENTPARAMS *lpSz, const CPoint *pOffset) +{ + if(m_pCtrl) + { + CRect rectNew = m_posSetup(m_rectOriginal,szDelta); + if(pOffset) + rectNew += *pOffset; + m_pCtrl->Position(lpSz, rectNew.left,rectNew.top,rectNew.Width(),rectNew.Height(),true); + } +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicControlsManager inlines +///////////////////////////////////////////////////////////////////////////// + +/* + * add a control - we leave that work + * to the embedded ControlData class + */ + +inline cdxCDynamicControlsManager::ControlPosition *cdxCDynamicControlsManager::AddSzControlEx(CWnd & ctrl, const PositionSetup & rSetup) +{ + ASSERT(IsReady()); // don't called DoInitWindow() before ? + ASSERT(rSetup.IsValid()); + + ControlData *si = new ControlData(*this, ctrl, rSetup); + ASSERT(si != NULL); // if you don't throw exceptions :) + return si; +} + +/* + * find a control's ControlPosition + */ + +inline const cdxCDynamicControlsManager::ControlPosition *cdxCDynamicControlsManager::FindSzControl(CWnd & ctrl) const +{ + ASSERT(::IsWindow(ctrl.m_hWnd)); // will work for exiting windows only ! + + for(const ControlData *si = m_pFirst; si; si = si->GetNext()) + if(si->IsMember(ctrl)) + return si; + + return NULL; +} + +inline cdxCDynamicControlsManager::ControlPosition *cdxCDynamicControlsManager::FindSzControl(CWnd & ctrl) +{ + ASSERT(::IsWindow(ctrl.m_hWnd)); // will work for exiting windows only ! + + for(ControlData *si = m_pFirst; si; si = si->GetNext()) + if(si->IsMember(ctrl)) + return si; + + return NULL; +} + +/* + * delete an entry for a control + * ctrl - the control + * bAutoDeleteUnusedControlPos - if true, and unused ControlPosition (no more + * CWnds are bound to it) will be deleted. + * Note that you can use OnDeleteControlPosition() + * to find out which one will be deleted if any. + * + * returns true of the control has been found and deleted + */ + +inline bool cdxCDynamicControlsManager::RemSzControl(CWnd & ctrl, bool bAutoDeleteUnusedControlPos) +{ + for(ControlData *si = m_pFirst; si; si = si->GetNext()) + if(si->Rem(ctrl)) + { + if(!si->IsUsed() && bAutoDeleteUnusedControlPos) + { + OnDeleteControlPosition(*si); + delete si; + } + return true; + } + + return false; +} + +/* + * adding controls by my nice constants + */ + +inline cdxCDynamicControlsManager::ControlPosition *cdxCDynamicControlsManager::AddSzControl(CWnd & ctrl, Mode modeX, Mode modeY) +{ + BYTE dX1pcnt = 0, + dX2pcnt = 0, + dY1pcnt = 0, + dY2pcnt = 0; + + switch(modeX) + { + default : ASSERT(false); // unknown value for modeX + case mdNone : break; + case mdRepos : dX1pcnt = dX2pcnt = 100; + break; + case mdResize : dX2pcnt = 100; + break; + case mdRelative: dX1pcnt = dX2pcnt = 100 / 2; + break; + } + + switch(modeY) + { + default : ASSERT(false); // unknown value for modeY + case mdNone : break; + case mdRepos : dY1pcnt = dY2pcnt = 100; + break; + case mdResize : dY2pcnt = 100; + break; + case mdRelative: dY1pcnt = dY2pcnt = 100 / 2; + break; + } + + return AddSzControlEx(ctrl,dX1pcnt,dX2pcnt,dY1pcnt,dY2pcnt); +} + +///////////////////////////////////////////////////////////////////////////// + +/* + * Reposition + */ + +inline void cdxCDynamicControlsManager::ReorganizeControls(bool bRedraw) +{ + ASSERT(IsReady()); + + CRect clrect,winrect; + m_pWnd->GetClientRect(clrect); + m_pWnd->GetWindowRect(&winrect); + + if(m_bApplyScrollPosition) + { + if(m_pWnd->IsKindOf(RUNTIME_CLASS(CScrollView))) + { + clrect += ((CScrollView *)m_pWnd)->GetDeviceScrollPosition(); + } + else + clrect += CPoint(m_pWnd->GetScrollPos(SB_HORZ),m_pWnd->GetScrollPos(SB_VERT)); + } + ReorganizeControlsAdvanced(winrect,clrect,bRedraw); +} + +/* + * get client rect + */ + +inline CRect cdxCDynamicControlsManager::GetRealClientRect() const +{ + ASSERT(IsReady()); + CRect r; + + return r; +} + +#endif // !defined(AFX_CDXCDYNAMICCONTROLSMANAGER_H__6517AE13_5D12_11D2_BE4C_000000000000__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.cpp new file mode 100644 index 0000000000..2a95ef955a --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.cpp @@ -0,0 +1,98 @@ +// cdxCDynamicChildDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "cdxCDynamicDialog.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicDialog dialog +///////////////////////////////////////////////////////////////////////////// + +IMPLEMENT_DYNAMIC(cdxCDynamicDialog,CDialog); + +///////////////////////////////////////////////////////////////////////////// +// message map +///////////////////////////////////////////////////////////////////////////// + +BEGIN_MESSAGE_MAP(cdxCDynamicDialog, CDialog) + //{{AFX_MSG_MAP(cdxCDynamicDialog) + ON_WM_GETMINMAXINFO() + ON_WM_DESTROY() + ON_WM_PARENTNOTIFY() + ON_WM_SIZE() + ON_WM_SIZING() + ON_WM_TIMER() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicDialog message handlers: redirect stuff to my class :)= +///////////////////////////////////////////////////////////////////////////// + +BOOL cdxCDynamicDialog::OnInitDialog() +{ + BOOL bOK = CDialog::OnInitDialog(); + DoInitWindow(*this); + + return bOK; +} + +BOOL cdxCDynamicDialog::DestroyWindow() +{ + DoOnDestroy(); + return CDialog::DestroyWindow(); +} + +void cdxCDynamicDialog::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) +{ + CDialog::OnGetMinMaxInfo(lpMMI); + DoOnGetMinMaxInfo(lpMMI); +} + +void cdxCDynamicDialog::OnDestroy() +{ + DoOnDestroy(); + CDialog::OnDestroy(); +} + +void cdxCDynamicDialog::OnParentNotify(UINT message, LPARAM lParam) +{ + CDialog::OnParentNotify(message, lParam); + DoOnParentNotify(message, lParam); +} + +void cdxCDynamicDialog::OnSize(UINT nType, int cx, int cy) +{ + CDialog::OnSize(nType, cx, cy); + DoOnSize(nType, cx, cy); +} + +void cdxCDynamicDialog::OnSizing(UINT fwSide, LPRECT pRect) +{ + CDialog::OnSizing(fwSide, pRect); + DoOnSizing(fwSide, pRect); +} + +void cdxCDynamicDialog::OnTimer(UINT idEvent) +{ + CDialog::OnTimer(idEvent); + DoOnTimer(idEvent); +} + + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicChildDlg dialog +///////////////////////////////////////////////////////////////////////////// + +IMPLEMENT_DYNAMIC(cdxCDynamicChildDlg,cdxCDynamicDialog); + +///////////////////////////////////////////////////////////////////////////// +// message map +///////////////////////////////////////////////////////////////////////////// + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.h new file mode 100644 index 0000000000..d8883136c4 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.h @@ -0,0 +1,121 @@ +#if !defined(AFX_CDXCDYNAMICDIALOG_H__E8F2A005_63C6_11D3_802B_000000000000__INCLUDED_) +#define AFX_CDXCDYNAMICDIALOG_H__E8F2A005_63C6_11D3_802B_000000000000__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 +// cdxCDynamicDialog.h : header file +// + +#include "cdxCDynamicWndEx.h" + +/* + * cdxCDynamicDialog + * ================= + * A new resizable dialog. + * This should be the base-class for your normal dialogs. + * This class supports: + * - A sizing icon + * - AutoPositioning (stores last position automatically and stuff) + * - Anti-Flickering system. + * - And of course, it provides + * the Dynamic child control system DcCS by codex design + */ + +class cdxCDynamicDialog : public CDialog, public cdxCDynamicWndEx +{ + DECLARE_DYNAMIC(cdxCDynamicDialog); + +public: + enum { flDefault = flAntiFlicker|flSizeIcon }; + +public: + cdxCDynamicDialog(UINT idd = 0, CWnd* pParent = NULL, Freedom fd = fdAll, UINT nFlags = flDefault); + cdxCDynamicDialog(LPCTSTR lpszTemplateName, CWnd* pParent = NULL, Freedom fd = fdAll, UINT nFlags = flDefault); + virtual ~cdxCDynamicDialog() { DoOnDestroy(); } + +public: + virtual BOOL DestroyWindow(); + +protected: + virtual BOOL OnInitDialog(); + afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); + afx_msg void OnDestroy(); + afx_msg void OnParentNotify(UINT message, LPARAM lParam); + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnSizing(UINT fwSide, LPRECT pRect); + afx_msg void OnTimer(UINT nIDEvent); + + DECLARE_MESSAGE_MAP(); +}; + +/* + * cdxCDynamicChildDlg + * =================== + * Use this dialog class instead of cdxCDynamicDialog if + * you create dialogs which you want to embedd as child + * controls. + * In that case, this dialog is far more straight forward. + * This class provides: + * - NO sizing icon + * - NO auto anti-flickering (since the dialog itself won't be moved by hand) + * - NO auto-positioning + * - But of course, it provides + * the Dynamic child control system DcCS by codex design + */ + +class cdxCDynamicChildDlg : public cdxCDynamicDialog +{ + DECLARE_DYNAMIC(cdxCDynamicChildDlg); + +public: + enum { flDefault = flAntiFlicker }; + +public: + cdxCDynamicChildDlg(UINT idd = 0, CWnd* pParent = NULL, Freedom fd = fdAll, UINT nFlags = flDefault); + cdxCDynamicChildDlg(LPCTSTR lpszTemplateName, CWnd* pParent = NULL, Freedom fd = fdAll, UINT nFlags = flDefault); + virtual ~cdxCDynamicChildDlg() { DoOnDestroy(); } +}; + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicDialog Inlines +///////////////////////////////////////////////////////////////////////////// + +inline cdxCDynamicDialog::cdxCDynamicDialog(UINT idd, CWnd* pParent, Freedom fd, UINT nFlags) +: CDialog(idd,pParent), + cdxCDynamicWndEx(fd,nFlags) +{ + if(idd) + ActivateAutoPos(idd); +} + +inline cdxCDynamicDialog::cdxCDynamicDialog(LPCTSTR lpszTemplateName, CWnd* pParent, Freedom fd, UINT nFlags) +: CDialog(lpszTemplateName,pParent), + cdxCDynamicWndEx(fd,nFlags) +{ + if(lpszTemplateName && *lpszTemplateName) + ActivateAutoPos(lpszTemplateName); +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicChildDlg Inlines +///////////////////////////////////////////////////////////////////////////// + +inline cdxCDynamicChildDlg::cdxCDynamicChildDlg(UINT idd, CWnd* pParent, Freedom fd, UINT nFlags) +: cdxCDynamicDialog(idd,pParent,fd,nFlags) +{ + m_bUseScrollPos = true; // if you create scollbars I will use them ;) + NoAutoPos(); // not in this case.... +} + +inline cdxCDynamicChildDlg::cdxCDynamicChildDlg(LPCTSTR lpszTemplateName, CWnd* pParent, Freedom fd, UINT nFlags) +: cdxCDynamicDialog(lpszTemplateName,pParent,fd,nFlags) +{ + m_bUseScrollPos = true; // if you create scollbars I will use them ;) + NoAutoPos(); // not in this case.... +} + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CDXCDYNAMICDIALOG_H__E8F2A005_63C6_11D3_802B_000000000000__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.cpp new file mode 100644 index 0000000000..6d98d7537c --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.cpp @@ -0,0 +1,94 @@ +// cdxCDynamicFormView.cpp : implementation file +// + +#include "stdafx.h" +#include "cdxCDynamicFormView.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicFormView +///////////////////////////////////////////////////////////////////////////// + +IMPLEMENT_DYNAMIC(cdxCDynamicFormView, CFormView) + +///////////////////////////////////////////////////////////////////////////// +// creation +///////////////////////////////////////////////////////////////////////////// + +BEGIN_MESSAGE_MAP(cdxCDynamicFormView, CFormView) + //{{AFX_MSG_MAP(cdxCDynamicFormView) + ON_WM_SIZE() + ON_WM_SIZING() + ON_WM_TIMER() + ON_WM_GETMINMAXINFO() + ON_WM_PARENTNOTIFY() + ON_WM_DESTROY() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicFormView message handlers +///////////////////////////////////////////////////////////////////////////// + +/* + * OnInitialUpdate() + * ----------------- + * These functions set up the form view. + * New to this version is that the correct size will now be read + * automatically. + */ + +void cdxCDynamicFormView::OnInitialUpdate() +{ + CFormView::OnInitialUpdate(); + DoInitWindow(*this,GetTotalSize()); +} + +///////////////////////////////////////////////////////////////////////////// + +BOOL cdxCDynamicFormView::DestroyWindow() +{ + DoOnDestroy(); + return CFormView::DestroyWindow(); +} + +void cdxCDynamicFormView::OnSize(UINT nType, int cx, int cy) +{ + CFormView::OnSize(nType, cx, cy); + DoOnSize(nType, cx, cy); +} + +void cdxCDynamicFormView::OnSizing(UINT fwSide, LPRECT pRect) +{ + CFormView::OnSizing(fwSide, pRect); + DoOnSizing(fwSide, pRect); +} + +void cdxCDynamicFormView::OnTimer(UINT nIDEvent) +{ + CFormView::OnTimer(nIDEvent); + DoOnTimer(nIDEvent); +} + +void cdxCDynamicFormView::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) +{ + CFormView::OnGetMinMaxInfo(lpMMI); + DoOnGetMinMaxInfo(lpMMI); +} + +void cdxCDynamicFormView::OnParentNotify(UINT message, LPARAM lParam) +{ + CFormView::OnParentNotify(message, lParam); + DoOnParentNotify(message, lParam); +} + +void cdxCDynamicFormView::OnDestroy() +{ + DoOnDestroy(); + CFormView::OnDestroy(); +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.h new file mode 100644 index 0000000000..c6f6625fb4 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.h @@ -0,0 +1,51 @@ +#if !defined(AFX_CDXCDYNAMICFORMVIEW_H__82427295_6456_11D3_802D_000000000000__INCLUDED_) +#define AFX_CDXCDYNAMICFORMVIEW_H__82427295_6456_11D3_802D_000000000000__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 +// cdxCDynamicFormView.h : header file +// + +#include "cdxCDynamicWnd.h" + +/* + * cdxCDynamicFormView + * =================== + * My dynamic form view. + */ + +#ifndef __AFXEXT_H__ +#include +#endif + +class cdxCDynamicFormView : public CFormView, public cdxCDynamicWnd +{ + DECLARE_DYNCREATE(cdxCDynamicFormView); + + enum { flDefault = flAntiFlicker }; + +public: + cdxCDynamicFormView(UINT idd = 0, Freedom fd = fdAll, UINT nFlags = flDefault) : CFormView(idd), cdxCDynamicWnd(fd,nFlags) { m_bUseScrollPos = true; } + cdxCDynamicFormView(LPCTSTR lpszTemplateName, Freedom fd = fdAll, UINT nFlags = flDefault) : CFormView(lpszTemplateName), cdxCDynamicWnd(fd,nFlags) { m_bUseScrollPos = true; } + virtual ~cdxCDynamicFormView() { DoOnDestroy(); } + +public: + virtual void OnInitialUpdate(); + virtual BOOL DestroyWindow(); + +protected: + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnSizing(UINT fwSide, LPRECT pRect); + afx_msg void OnTimer(UINT nIDEvent); + afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); + afx_msg void OnParentNotify(UINT message, LPARAM lParam); + afx_msg void OnDestroy(); + + DECLARE_MESSAGE_MAP(); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CDXCDYNAMICFORMVIEW_H__82427295_6456_11D3_802D_000000000000__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.cpp new file mode 100644 index 0000000000..8935d00794 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.cpp @@ -0,0 +1,278 @@ +// cdxCDynamicPropSheet.cpp : implementation file +// + +#include "stdafx.h" +#include "cdxCDynamicPropSheet.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +#pragma warning(disable: 4706) + + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicPropSheet +///////////////////////////////////////////////////////////////////////////// + +IMPLEMENT_DYNCREATE(cdxCDynamicPropSheet, CPropertySheet) + +///////////////////////////////////////////////////////////////////////////// +// maps +///////////////////////////////////////////////////////////////////////////// + +BEGIN_MESSAGE_MAP(cdxCDynamicPropSheet, CPropertySheet) + //{{AFX_MSG_MAP(cdxCDynamicPropSheet) + ON_WM_CLOSE() + ON_WM_DESTROY() + ON_WM_CREATE() + ON_WM_SIZE() + ON_WM_SIZING() + ON_WM_TIMER() + ON_WM_GETMINMAXINFO() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +/* + * we map the controls by our new dynamic map feature :) + */ + +BEGIN_DYNAMIC_MAP(cdxCDynamicPropSheet,cdxCDynamicWnd) + DYNAMIC_MAP_ENTRY( ID_WIZNEXT, mdRepos,mdRepos ) + DYNAMIC_MAP_ENTRY( ID_WIZFINISH, mdRepos,mdRepos ) + DYNAMIC_MAP_ENTRY( ID_WIZBACK, mdRepos,mdRepos ) + DYNAMIC_MAP_ENTRY( IDOK, mdRepos,mdRepos ) + DYNAMIC_MAP_ENTRY( IDCANCEL, mdRepos,mdRepos ) + DYNAMIC_MAP_ENTRY( ID_WIZNEXT, mdRepos,mdRepos ) + DYNAMIC_MAP_ENTRY( ID_APPLY_NOW, mdRepos,mdRepos ) + DYNAMIC_MAP_ENTRY( IDHELP, mdRepos,mdRepos ) + DYNAMIC_MAP_ENTRY( AFX_IDC_TAB_CONTROL, mdResize,mdResize ) + DYNAMIC_MAP_ENTRY( ID_WIZFINISH+1, mdResize,mdRepos ) +END_DYNAMIC_MAP() + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicPropSheet message handlers +///////////////////////////////////////////////////////////////////////////// + +/* + * initialize window + */ + +BOOL cdxCDynamicPropSheet::OnInitDialog() +{ + // initialize window & dynamic manager + + BOOL b = CPropertySheet::OnInitDialog(); + DoInitWindow(*this); + + ModifyStyle(0,WS_CLIPSIBLINGS); + + ASSERT(GetPageCount() > 0); // NO pages ?? + cdxCDynamicPropPage *pActive = (cdxCDynamicPropPage *)GetActivePage(); + + ASSERT(pActive && pActive->IsKindOf(RUNTIME_CLASS(cdxCDynamicPropPage))); + AddSzControl(*pActive,mdResize,mdResize); + VERIFY( GetControlPosition(*pActive,m_PagePos) ); + m_bHasPos = true; + + return b; +} + +void cdxCDynamicPropSheet::AddPage( cdxCDynamicPropPage & rPage ) +{ + ASSERT(rPage.m_pSheet == NULL); + rPage.m_pSheet = this; + CPropertySheet::AddPage(&rPage); +} + +void cdxCDynamicPropSheet::RemovePage( cdxCDynamicPropPage & rPage ) +{ + ASSERT(rPage.m_pSheet == this); + rPage.m_pSheet = NULL; +} + +void cdxCDynamicPropSheet::OnInitPage(cdxCDynamicPropPage & rPage) +{ + ASSERT(::IsWindow(rPage)); + + if(m_bHasPos) + AddSzControl(rPage,m_PagePos); +} + +///////////////////////////////////////////////////////////////////////////// + +/* + * map WM_CLOSE to IDCANCEL if it is a modal sheet + */ + +void cdxCDynamicPropSheet::OnClose() +{ + if(!PressButton(PSBTN_CANCEL)) + CPropertySheet::OnClose(); +} + +/* + * give us a resizable border + */ + +int cdxCDynamicPropSheet::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if(CPropertySheet::OnCreate(lpCreateStruct) == -1) + return -1; + + ModifyStyle(0,WS_THICKFRAME|WS_SYSMENU); + ModifyStyleEx(0,WS_CLIPCHILDREN); + return 0; +} + +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// + +BOOL cdxCDynamicPropSheet::DestroyWindow() +{ + DoOnDestroy(); + return CPropertySheet::DestroyWindow(); +} + +void cdxCDynamicPropSheet::OnDestroy() +{ + DoOnDestroy(); + CPropertySheet::OnDestroy(); +} + +void cdxCDynamicPropSheet::OnSize(UINT nType, int cx, int cy) +{ + CPropertySheet::OnSize(nType, cx, cy); + DoOnSize(nType, cx, cy); +} + +void cdxCDynamicPropSheet::OnSizing(UINT fwSide, LPRECT pRect) +{ + CPropertySheet::OnSizing(fwSide, pRect); + DoOnSizing(fwSide, pRect); +} + +void cdxCDynamicPropSheet::OnTimer(UINT nIDEvent) +{ + CPropertySheet::OnTimer(nIDEvent); + DoOnTimer(nIDEvent); +} + +void cdxCDynamicPropSheet::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) +{ + CPropertySheet::OnGetMinMaxInfo(lpMMI); + DoOnGetMinMaxInfo(lpMMI); +} + + + + + + + + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicPropSheet message handlers +///////////////////////////////////////////////////////////////////////////// + +IMPLEMENT_DYNCREATE(cdxCDynamicPropPage, CPropertyPage) + +///////////////////////////////////////////////////////////////////////////// +// creation +///////////////////////////////////////////////////////////////////////////// + +void cdxCDynamicPropPage::DoDataExchange(CDataExchange* pDX) +{ + CPropertyPage::DoDataExchange(pDX); + //{{AFX_DATA_MAP(cdxCDynamicPropPage) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(cdxCDynamicPropPage, CPropertyPage) + //{{AFX_MSG_MAP(cdxCDynamicPropPage) + ON_WM_SIZE() + ON_WM_TIMER() + ON_WM_DESTROY() + ON_WM_SIZING() + ON_WM_GETMINMAXINFO() + ON_WM_PARENTNOTIFY() + ON_WM_ACTIVATE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// active/inactive stuff +///////////////////////////////////////////////////////////////////////////// + +BOOL cdxCDynamicPropPage::OnInitDialog() +{ + ASSERT(m_pSheet != NULL); + + BOOL b = CPropertyPage::OnInitDialog(); + DoInitWindow(*this); + + return b; +} + +BOOL cdxCDynamicPropPage::OnSetActive() +{ + BOOL bGetsActive = CPropertyPage::OnSetActive(); + if(bGetsActive && !m_bFirstHit) + { + m_pSheet->OnInitPage(*this); + m_bFirstHit = true; + } + if(m_pSheet) + m_pSheet->OnSetActive(*this,bGetsActive); + return bGetsActive; +} + +BOOL cdxCDynamicPropPage::OnKillActive() +{ + BOOL bGetsKilled = CPropertyPage::OnKillActive(); + if(m_pSheet) + m_pSheet->OnKillActive(*this,bGetsKilled); + return bGetsKilled; +} + +void cdxCDynamicPropPage::OnSize(UINT nType, int cx, int cy) +{ + CPropertyPage::OnSize(nType, cx, cy); + DoOnSize(nType, cx, cy); +} + +void cdxCDynamicPropPage::OnTimer(UINT nIDEvent) +{ + CPropertyPage::OnTimer(nIDEvent); + DoOnTimer(nIDEvent); +} + +void cdxCDynamicPropPage::OnDestroy() +{ + DoOnDestroy(); + CPropertyPage::OnDestroy(); +} + +void cdxCDynamicPropPage::OnSizing(UINT fwSide, LPRECT pRect) +{ + CPropertyPage::OnSizing(fwSide, pRect); + DoOnSizing(fwSide, pRect); +} + +void cdxCDynamicPropPage::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) +{ + CPropertyPage::OnGetMinMaxInfo(lpMMI); + DoOnGetMinMaxInfo(lpMMI); +} + +void cdxCDynamicPropPage::OnParentNotify(UINT message, LPARAM lParam) +{ + CPropertyPage::OnParentNotify(message, lParam); + DoOnParentNotify(message, lParam); +} + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.h new file mode 100644 index 0000000000..73ea35080d --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.h @@ -0,0 +1,209 @@ +#if !defined(AFX_CDXCDYNAMICPROPSHEET_H__82427297_6456_11D3_802D_000000000000__INCLUDED_) +#define AFX_CDXCDYNAMICPROPSHEET_H__82427297_6456_11D3_802D_000000000000__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 +// cdxCDynamicPropSheet.h : header file +// + +#include "cdxCDynamicWndEx.h" +#pragma warning(disable: 4100) + +class cdxCDynamicPropPage; + +/* + * cdxCDynamicPropSheet + * ==================== + * Dynamic property sheet. + */ + +class cdxCDynamicPropSheet : public CPropertySheet, public cdxCDynamicWndEx +{ + DECLARE_DYNCREATE(cdxCDynamicPropSheet); + + enum { flDefault = flAntiFlicker|flSizeIcon|flSWPCopyBits }; + + friend class cdxCDynamicPropPage; + +private: + Position m_PagePos; + bool m_bHasPos; + +public: + cdxCDynamicPropSheet(Freedom fd = fdAll, UINT nFlags = flDefault); + cdxCDynamicPropSheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault); + cdxCDynamicPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault); + cdxCDynamicPropSheet(UINT sheetAutoPosID, UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault); + cdxCDynamicPropSheet(UINT sheetAutoPosID, LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault); + cdxCDynamicPropSheet(LPCTSTR lpszSheetAutoPosID, UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault); + cdxCDynamicPropSheet(LPCTSTR lpszSheetAutoPosID, LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault); + virtual ~cdxCDynamicPropSheet() { DoOnDestroy(); } + + // ops +public: + virtual void AddPage( cdxCDynamicPropPage & rPage ); + virtual void RemovePage( cdxCDynamicPropPage & rPage ); + void AddPage( cdxCDynamicPropPage *pPage ) { ASSERT(pPage != NULL); AddPage(*pPage); } + void RemovePage( cdxCDynamicPropPage *pPage ) { ASSERT(pPage != NULL); RemovePage(*pPage); } + void RemovePage( int nPage ); + + BOOL IsWizard() const { return (m_psh.dwFlags & PSH_WIZARD) != 0; } + + // events +protected: + virtual void OnInitPage(cdxCDynamicPropPage & rPage); + virtual void OnSetActive(cdxCDynamicPropPage & rPage, BOOL bStatus) { if(IsWindow() && IsWizard()) Layout(); } + virtual void OnKillActive(cdxCDynamicPropPage & rPage, BOOL bStatus) {} + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(cdxCDynamicPropSheet) + public: + virtual BOOL DestroyWindow(); + //}}AFX_VIRTUAL + +// Implementation +public: + + // Generated message map functions +protected: + //{{AFX_MSG(cdxCDynamicPropSheet) + virtual BOOL OnInitDialog(); + afx_msg void OnClose(); + afx_msg void OnDestroy(); + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnSizing(UINT fwSide, LPRECT pRect); + afx_msg void OnTimer(UINT nIDEvent); + afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); + //}}AFX_MSG + DECLARE_MESSAGE_MAP(); + DECLARE_DYNAMIC_MAP(); +}; + +/* + * cdxCDynamicPropPage + * =================== + * The page for our sheet. + */ + +class cdxCDynamicPropPage : public CPropertyPage, public cdxCDynamicWnd +{ + DECLARE_DYNCREATE(cdxCDynamicPropPage) + + friend class cdxCDynamicPropSheet; + + enum { flDefault = flAntiFlicker }; + +private: + cdxCDynamicPropSheet *m_pSheet; + bool m_bFirstHit; + +public: + cdxCDynamicPropPage() : cdxCDynamicWnd(fdAll,flDefault), m_pSheet(NULL), m_bFirstHit(false) {} + cdxCDynamicPropPage(UINT nID, UINT nIDCaption = 0) : CPropertyPage(nID,nIDCaption), cdxCDynamicWnd(fdAll,flDefault), m_pSheet(NULL), m_bFirstHit(false) {} + cdxCDynamicPropPage(LPCTSTR lpszID, UINT nIDCaption = 0) : CPropertyPage(lpszID,nIDCaption), cdxCDynamicWnd(fdAll,flDefault), m_pSheet(NULL), m_bFirstHit(false) {} + virtual ~cdxCDynamicPropPage() { DoOnDestroy(); } + + cdxCDynamicPropSheet *GetSheet() const { return m_pSheet; } + +// Dialog Data + //{{AFX_DATA(cdxCDynamicPropPage) + // NOTE - ClassWizard will add data members here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_DATA + + +// Overrides + // ClassWizard generate virtual function overrides + //{{AFX_VIRTUAL(cdxCDynamicPropPage) + public: + virtual BOOL OnSetActive(); + virtual BOOL OnKillActive(); + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + // Generated message map functions + //{{AFX_MSG(cdxCDynamicPropPage) + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnTimer(UINT nIDEvent); + virtual BOOL OnInitDialog(); + afx_msg void OnDestroy(); + afx_msg void OnSizing(UINT fwSide, LPRECT pRect); + afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); + afx_msg void OnParentNotify(UINT message, LPARAM lParam); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + +}; + +////////////////////////////////////////////////////////////////////// +// inlines +////////////////////////////////////////////////////////////////////// + +inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(Freedom fd, UINT nFlags) +: cdxCDynamicWndEx(fd,nFlags), + m_bHasPos(false) +{ +} + +inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags) +: CPropertySheet(nIDCaption,pParentWnd,iSelectPage), + cdxCDynamicWndEx(fd,nFlags), + m_bHasPos(false) +{ +} + +inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags) +: CPropertySheet(pszCaption,pParentWnd,iSelectPage), + cdxCDynamicWndEx(fd,nFlags), + m_bHasPos(false) +{ +} + +inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(UINT sheetAutoPosID, UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags) +: CPropertySheet(nIDCaption,pParentWnd,iSelectPage), + cdxCDynamicWndEx(fd,nFlags), + m_bHasPos(false) +{ + if(sheetAutoPosID) + ActivateAutoPos(sheetAutoPosID); +} + +inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(UINT sheetAutoPosID, LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags) +: CPropertySheet(pszCaption,pParentWnd,iSelectPage), + cdxCDynamicWndEx(fd,nFlags), + m_bHasPos(false) +{ + if(sheetAutoPosID) + ActivateAutoPos(sheetAutoPosID); +} + +inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(LPCTSTR lpszSheetAutoPosID, UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags) +: CPropertySheet(nIDCaption,pParentWnd,iSelectPage), + cdxCDynamicWndEx(fd,nFlags), + m_bHasPos(false) +{ + if(lpszSheetAutoPosID && *lpszSheetAutoPosID) + ActivateAutoPos(lpszSheetAutoPosID); +} + +inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(LPCTSTR lpszSheetAutoPosID, LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags) +: CPropertySheet(pszCaption,pParentWnd,iSelectPage), + cdxCDynamicWndEx(fd,nFlags), + m_bHasPos(false) +{ + if(lpszSheetAutoPosID && *lpszSheetAutoPosID) + ActivateAutoPos(lpszSheetAutoPosID); +} + +#pragma warning(default: 4100) + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CDXCDYNAMICPROPSHEET_H__82427297_6456_11D3_802D_000000000000__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.cpp new file mode 100644 index 0000000000..d35ebf54ed --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.cpp @@ -0,0 +1,747 @@ +// cdxCDynamicWnd.cpp: implementation of the cdxCDynamicWnd class. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "cdxCDynamicWnd.h" +#include "cdxCSizeIconCtrl.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#define new DEBUG_NEW +#endif + +#pragma warning(disable: 4100) +#pragma warning(disable: 4706) + + +IMPLEMENT_DYNAMIC(cdxCDynamicLayoutInfo,CObject); + +////////////////////////////////////////////////////////////////////// +// cdxCDynamicWnd::Position +////////////////////////////////////////////////////////////////////// + +////////////////////////////////////////////////////////////////////// +// Positioning engine +////////////////////////////////////////////////////////////////////// + +/* + * Standard Controller's Position() routine + * This has the same functionality as known from the former + * cdxCDynamicControlsManager class. + * + * One exception is the new "szMin" property which allows + * the class to "hide" the control if it becomes too small + * (it will be moved outside the client area). + */ + +void cdxCDynamicWnd::Position::Apply(HWND hwnd, CRect & rectNewPos, const cdxCDynamicLayoutInfo & li) const +{ + if(li.m_bUseScrollPos) + { + rectNewPos.left = left - li.m_pntScrollPos.x; + rectNewPos.right = right - li.m_pntScrollPos.x; + rectNewPos.top = top - li.m_pntScrollPos.y; + rectNewPos.bottom = bottom - li.m_pntScrollPos.y; + + if(li.m_szDelta.cx >= 0) + { + rectNewPos.left += (m_Bytes[X1] * li.m_szDelta.cx) / 100; + rectNewPos.right += (m_Bytes[X2] * li.m_szDelta.cx) / 100; + } + if(li.m_szDelta.cy >= 0) + { + rectNewPos.top += (m_Bytes[Y1] * li.m_szDelta.cy) / 100; + rectNewPos.bottom += (m_Bytes[Y2] * li.m_szDelta.cy) / 100; + } + } + else + { + rectNewPos.left = left + (m_Bytes[X1] * li.m_szDelta.cx) / 100; + rectNewPos.right = right + (m_Bytes[X2] * li.m_szDelta.cx) / 100; + rectNewPos.top = top + (m_Bytes[Y1] * li.m_szDelta.cy) / 100; + rectNewPos.bottom = bottom + (m_Bytes[Y2] * li.m_szDelta.cy) / 100; + } + + if(rectNewPos.left + m_szMin.cx >= rectNewPos.right) + { + rectNewPos.right = -10; + rectNewPos.left = rectNewPos.right - m_szMin.cx; + } + if(rectNewPos.top + m_szMin.cy >= rectNewPos.bottom) + { + rectNewPos.bottom = -10; + rectNewPos.top = rectNewPos.bottom - m_szMin.cy; + } +} + +////////////////////////////////////////////////////////////////////// +// cdxCDynamicWnd +////////////////////////////////////////////////////////////////////// + +const CSize cdxCDynamicWnd::M_szNull(0,0); +const cdxCDynamicWnd::SBYTES cdxCDynamicWnd::TopLeft = { 0,0,0,0 }, + cdxCDynamicWnd::TopRight = { 100,0,100,0 }, + cdxCDynamicWnd::BotLeft = { 0,100,0,100 }, + cdxCDynamicWnd::BotRight = { 100,100,100,100 }; + + +////////////////////////////////////////////////////////////////////// +// construction +////////////////////////////////////////////////////////////////////// + +/* + * construction + */ + +cdxCDynamicWnd::cdxCDynamicWnd(Freedom fd, UINT nFlags) +: m_pWnd(NULL), + m_iDisabled(0), + m_Freedom(fd), + m_szInitial(M_szNull), + m_szMin(0,0), + m_szMax(0,0), + m_bUseScrollPos(false), + m_pSizeIcon(NULL), + m_idSizeIcon(AFX_IDW_SIZE_BOX), + m_nMyTimerID(0), + m_nFlags(nFlags) +{ +} + + +////////////////////////////////////////////////////////////////////// +// control work +////////////////////////////////////////////////////////////////////// + +/* + * AddSzControl() + * -------------- + * Add a control that will react on changes to the parent window's size. + * hwnd - the child control. + * pos - describes what to do at all. + * bReposNow - true to immediately make the control change its position + * if necessary, false if not + * In the latter case you may like to call Layout() afterwards. + * + * returns false if an invalid window has been passed to this funciton. + */ + +bool cdxCDynamicWnd::AddSzControl(HWND hwnd, const Position & pos, bool bReposNow) +{ + if(!IsWindow()) + { + ASSERT(IsWindow()); + return false; // NO assert if hwnd is invalid + } + + if(!::IsWindow(hwnd)) + { + TRACE(_T("*** NOTE[cdxCDynamicWnd::AddSzControl(HWND,const Position &,bool)]: Handle 0x%lx is not a valid window.\n"),(DWORD)hwnd); + return false; + } + + m_Map.SetAt(hwnd,pos); + + if(bReposNow) + UpdateControlPosition(hwnd); + + return true; +} + +/* + * AllControls() + * ------------- + * Apply positioning to all controls of the window. + * bytes - positioning data + * bOverwrite - overwrite any existing positioning data. + * bReposNow - true to immediately make the control change its position + * if necessary, false if not + * In the latter case you may like to call Layout() afterwards. + */ + +void cdxCDynamicWnd::AllControls(const SBYTES & bytes, bool bOverwrite, bool bReposNow) +{ + if(!IsWindow()) + { + ASSERT(false); + return; + } + + Position pos; + UINT nCnt = 0; + + for(HWND hwnd = ::GetWindow(m_pWnd->m_hWnd,GW_CHILD); hwnd; hwnd = ::GetNextWindow(hwnd,GW_HWNDNEXT)) + { + if(bOverwrite || !m_Map.Lookup(hwnd,pos)) + if(AddSzControl(hwnd,bytes,false)) + ++nCnt; + } + + if(nCnt && bReposNow) + Layout(); +} + +/* + * RemSzControl() + * -------------- + * Removes a control from the internal list. + * The control will remain at its initial position if bMoveToInitialPos is false + * Returns false if an error occured. + */ + +bool cdxCDynamicWnd::RemSzControl(HWND hwnd, bool bMoveToInitialPos) +{ + if(!::IsWindow(hwnd) || !IsWindow()) + return false; + + if(bMoveToInitialPos) + { + Position pos; + + if(!m_Map.Lookup(hwnd,pos)) + return false; + + VERIFY( ::SetWindowPos(hwnd,HWND_TOP, + pos.left,pos.top,pos.Width(),pos.Height(), + SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER) ); + } + + return m_Map.RemoveKey(hwnd) != FALSE; +} + +/* + * UpdateControlPosition() + * ======================= + * Move control to its desired position. + * returns false if HWND is not valid. + */ + +bool cdxCDynamicWnd::UpdateControlPosition(HWND hwnd) +{ + if(!IsWindow()) + { + ASSERT(IsWindow()); + return false; // NO assert if hwnd is invalid + } + + if(!::IsWindow(hwnd)) + { + TRACE(_T("*** NOTE[cdxCDynamicWnd::UpdateControlPosition()]: Handle 0x%lx is not a valid window.\n"),(DWORD)hwnd); + return false; + } + + cdxCDynamicLayoutInfo *pli = DoCreateLayoutInfo(); + ASSERT(pli != NULL); + + if(!pli || !pli->IsInitial()) + { + try + { + CRect rectNew; + WINDOWPLACEMENT wpl; + wpl.length = sizeof(WINDOWPLACEMENT); + VERIFY(::GetWindowPlacement(hwnd,&wpl) ); + + rectNew = wpl.rcNormalPosition; + + if(DoMoveCtrl(hwnd,::GetDlgCtrlID(hwnd),rectNew,*pli) && + (rectNew != wpl.rcNormalPosition) ) + { + VERIFY( ::SetWindowPos(hwnd,HWND_TOP, + rectNew.left,rectNew.top,rectNew.Width(),rectNew.Height(), + SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER) ); + } + } + catch(...) + { + delete pli; + throw; + } + } + + delete pli; + + return true; +} + + +////////////////////////////////////////////////////////////////////// +// main layout engine +////////////////////////////////////////////////////////////////////// + +/* + * Layout() + * -------- + * Iterates through all child windows and calls DoMoveCtrl() for them. + * This function is NOT virtual. + * To implement your own layout algorithm, please + * a) overwrite DoCreateLayoutInfo() to return an object of a class + * derived from cdxCDynamicLayoutInfo. + * You can put any user-data into your object; it will be passed + * on to the DoMoveCtrl() function. + * b) overwrite DoMoveCtrl() and implement the layout logic. + * An example can be found in the example project, anytime. + */ + +void cdxCDynamicWnd::Layout() +{ + if(!IsWindow()) + { + ASSERT(IsWindow()); + return; + } + + // resize stuff + + cdxCDynamicLayoutInfo *pli = DoCreateLayoutInfo(); + + if(!pli) + { + ASSERT(false); // YOU MUST PROVIDE A LAYOUT INFO BLOCK ! + return; + } + + try + { + HDWP hdwp = ::BeginDeferWindowPos(pli->m_nCtrlCnt); + HWND hwnd; + bool bRepeat; + CRect rectNew; + UINT id; + WINDOWPLACEMENT wpl; + DWORD swpFlags = SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|(!(m_nFlags & flSWPCopyBits) ? SWP_NOCOPYBITS : 0); + + if(!( hwnd = ::GetWindow(m_pWnd->m_hWnd,GW_CHILD) )) + { + TRACE(_T("*** NOTE[cdxCDynamicWnd::Layout()]: The window at 0x%lx does not have child windows.\n"),(DWORD)m_pWnd->m_hWnd); + return; + } + + do + { + bRepeat = false; + + for(; hwnd; hwnd = ::GetNextWindow(hwnd,GW_HWNDNEXT)) + { + wpl.length = sizeof(WINDOWPLACEMENT); + + if(!::GetWindowPlacement(hwnd,&wpl)) + { + ASSERT(false); // GetWindowPlacement() failed + continue; + } + + rectNew = wpl.rcNormalPosition; + ASSERT(rectNew.left >= 0); + id = ::GetDlgCtrlID(hwnd); + + if(!DoMoveCtrl(hwnd,id,rectNew,*pli) || + (rectNew == wpl.rcNormalPosition) ) + { + // window doesn't need to be moved + // (position is not been changed) + continue; + } + + if(hdwp) + { + if(!( hdwp = ::DeferWindowPos(hdwp,hwnd,HWND_TOP, + rectNew.left,rectNew.top,rectNew.Width(),rectNew.Height(), + swpFlags) )) + { + TRACE(_T("*** ERROR[cdxCDynamicWnd::ReorganizeControls()]: DeferWindowPos() failed ??\n")); + bRepeat = true; + break; // error; we'll repeat the loop by using SetWindòwPos() + // this won't look good, but work :) + } + } + else + { + VERIFY( ::SetWindowPos(hwnd,HWND_TOP, + rectNew.left,rectNew.top,rectNew.Width(),rectNew.Height(), + swpFlags) ); + } + } + } + while(bRepeat); + + if(hdwp) + { + VERIFY( ::EndDeferWindowPos(hdwp) ); + } + } + catch(...) + { + delete pli; + throw; + } + + delete pli; +} + +////////////////////////////////////////////////////////////////////// +// message work +////////////////////////////////////////////////////////////////////// + +/* + * DoMoveCtrl() + * ------------ + * This virtual function is used to calculate a child window's new position + * based on the some data (from the cdxCDynamicLayoutInfo object). + * This standard routine is made to implement the algorithm as known from + * the cdxCDynamicControlsManager. + * You can implement your own code if you are not satisfied with the + * following function. + * If you need global data, overwrite DoCreateLayoutInfo() which will + * be called by Layout() and which you can use to collect these data + * once for the entire layout process. + * + * PARAMETERS: + * + * hwnd - handle of the child control + * id - its id + * rectNewPos - write the new position here in. + * initially contains the current position + * li - Some information on the parent window. + * You can provide extra information here + * by overwriting DoCreateLayoutInfo(). + * + * RETURN CODES: + * + * return false if you don't want to move the control + * return true if you updated the control's position and stored it into "rectNewPos" + * If you don't change it, the control will not be moved. + * + * #### don't move the control by yourself. Layout() will do for you to ensure + * that as little flickering as possible will occur. + */ + +bool cdxCDynamicWnd::DoMoveCtrl(HWND hwnd, UINT id, CRect & rectNewPos, const cdxCDynamicLayoutInfo & li) +{ + Position pos; + + if(!GetControlPosition(hwnd,pos)) + return false; + + pos.Apply(hwnd,rectNewPos,li); + return true; +} + +/* + * DoDestroyCtrl() + * --------------- + * Called when a child window is about being destroyed. + * We use it to remove our "Position" data from our database. + */ + +void cdxCDynamicWnd::DoDestroyCtrl(HWND hwnd) +{ + m_Map.RemoveKey(hwnd); +} + +////////////////////////////////////////////////////////////////////// +// initialization & clean-uo +////////////////////////////////////////////////////////////////////// + +/* + * DoInitWindow() + * -------------- + * This function sets up the window pointer. + * It is recommended that "rWnd" points to an existing CWnd. + * However, it doesn't need to exist as long as you + * 1) provide a non-zero "szInitial" object. + * 2) don't want a size icon. + * + * PARAMETERS: + * + * rWnd - reference to your window ("*this") + * the window must exist (::IsWindow(rWnd.m_hWnd) must be true) + * fd - Freedom (in which direction(s) your window shall be sizable BY THE USER): + * Possible values: fdAll, fdHorz, fdVert and fdNone. + * This is only applied to user-actions; resizing + layout may work + * even if the freedom parameter is fdNone (in that case user cannot resize + * your window, but you can). + * flags - several flags: + * flSizeIcon - creates a size icon + * flAntiFlicker - activates anti-flickering stuff + * [szInitial - initial client size] + */ + +void cdxCDynamicWnd::DoInitWindow(CWnd & rWnd) +{ + ASSERT(::IsWindow(rWnd.m_hWnd)); // ensure the window exists ... + + m_pWnd = &rWnd; + DoInitWindow(rWnd,GetCurrentClientSize()); +} + +void cdxCDynamicWnd::DoInitWindow(CWnd & rWnd, const CSize & szInitial) +{ + ASSERT(::IsWindow(rWnd.m_hWnd) && szInitial.cx && szInitial.cy); // ensure the window exists ... + + m_pWnd = &rWnd; + m_szInitial = szInitial; + m_szMin = szInitial; + + /* + * this window will flicker somewhat deadly if you do not have the + * WS_CLIPCHILDREN style set for you window. + * You may like to use the following line anywhere + * to apply it: + + CWnd::ModifyStyle(0,WS_CLIPCHILDREN); + + */ + +#ifdef _DEBUG + if(!(rWnd.GetStyle() & WS_CLIPCHILDREN) && !(m_nFlags & flSWPCopyBits)) + { + TRACE(_T("***\n") + _T("*** cdxCDynamicWnd class note: If your window flickers too much, add the WS_CLIPCHILDREN style to it\n") + _T("*** or try to set the flSWPCopyBits flags !!!\n") + _T("***\n")); + } +#endif + + // + // now, if a DYNAMIC MAP is been defined, + // we start working with it + // + + const __dynEntry *pEntry,*pLast = NULL; + UINT nInitCnt = GetCtrlCount(); + + if(pLast = __getDynMap(pLast)) + { + HWND hwnd; + SBYTES bytes; + + for(pEntry = pLast; pEntry->type != __end; ++pEntry) + { + if((pEntry->id != DYNAMIC_MAP_DEFAULT_ID) + && !( hwnd = ::GetDlgItem(m_pWnd->m_hWnd,pEntry->id) )) + { + TRACE(_T("*** NOTE[cdxCDynamicWnd::DoInitWindow()]: Dynamic map initialization: There's no control with the id 0x%lx !\n"),pEntry->id); + continue; + } + + switch(pEntry->type) + { + case __bytes: + + bytes[X1] = pEntry->b1; + bytes[Y1] = pEntry->b2; + bytes[X2] = pEntry->b3; + bytes[Y2] = pEntry->b4; + break; + + case __modes: + + _translate((Mode)pEntry->b1,bytes[X1],bytes[X2]); + _translate((Mode)pEntry->b2,bytes[Y1],bytes[Y2]); + break; + + default: + + ASSERT(false); // never come here !!!!! + break; + } + + if(pEntry->id == DYNAMIC_MAP_DEFAULT_ID) + AllControls(bytes,false,false); + else + AddSzControl(hwnd,bytes,M_szNull,false); + } + } + + // + // handle creation flags + // + + if(m_nFlags & flSizeIcon) + { + m_pSizeIcon = new cdxCSizeIconCtrl; + VERIFY( m_pSizeIcon->Create(m_pWnd) ); + + AddSzControl(m_pSizeIcon->m_hWnd,BotRight,M_szNull,false); + m_pSizeIcon->ShowWindow(SW_SHOW); + } + + m_bIsAntiFlickering = false; + m_nMyTimerID = DEFAULT_TIMER_ID; + m_dwClassStyle = ::GetClassLong(*m_pWnd,GCL_STYLE) & (CS_VREDRAW|CS_HREDRAW); + + OnInitialized(); + + if(nInitCnt < GetCtrlCount()) + Layout(); +} + + +/* + * DoDestroyWindow() + * ----------------- + * Clean up. + */ + +void cdxCDynamicWnd::DoOnDestroy() +{ + if(IsWindow()) + OnDestroying(); + + m_iDisabled = 1; + m_pWnd = NULL; + m_Map.RemoveAll(); + + if(m_pSizeIcon) + { + m_pSizeIcon->DestroyWindow(); + delete m_pSizeIcon; + + m_pSizeIcon = NULL; + } +} + +////////////////////////////////////////////////////////////////////// +// message work +////////////////////////////////////////////////////////////////////// + +/* + * DoOnSize() + * ---------- + * Calls Layout() if necessary. + */ + +void cdxCDynamicWnd::DoOnSize(UINT nType, int cx, int cy) +{ + if(!IsDisabled() && + IsWindow() && + (nType != SIZE_MINIMIZED)) + { + Layout(); + } +} + +/* + * DoOnSizing() + * ------------ + * This is my turbo-new-super-duper anti-flickering function + * StartAntiFlickering() is called by the following handler. + */ + +void cdxCDynamicWnd::DoOnSizing(UINT fwSide, LPRECT pRect) +{ + if(m_nMyTimerID && !IsDisabled() && IsWindow() && (m_nFlags & flAntiFlicker)) + StartAntiFlickering( (fwSide == WMSZ_BOTTOM) || + (fwSide == WMSZ_BOTTOMRIGHT) || + (fwSide == WMSZ_RIGHT)); +} + +/* + * StartAntiFlickering() + * --------------------- + * This routine modifies the CS_VREDRAW and CS_HREDRAW CLASS style + * flags. + * If you don't like this, set "m_nMyTimerID" to 0. + * bIsBotRight - true if the window is sized in right, bottom or bot/right direction. + */ + +void cdxCDynamicWnd::StartAntiFlickering(bool bIsBotRight) +{ + if(IsWindow() && m_nMyTimerID) + { + DWORD dw = m_dwClassStyle; + if(bIsBotRight) + dw &= ~(CS_VREDRAW|CS_HREDRAW); + else + dw |= CS_VREDRAW|CS_HREDRAW; + + m_pWnd->KillTimer(m_nMyTimerID); + m_pWnd->SetTimer(m_nMyTimerID,120,NULL); + + if(!m_bIsAntiFlickering) + { + ::SetClassLong(*m_pWnd,GCL_STYLE,dw); + m_bIsAntiFlickering = true; + } + } +} + +/* + * DoOnTimer() + * ----------- + * Processes the timer associated to my DoOnSizing() routine. + * Changes back the class style. + */ + +void cdxCDynamicWnd::DoOnTimer(UINT nIDEvent) +{ + if(IsWindow() && (nIDEvent == m_nMyTimerID)) + { + m_pWnd->KillTimer(m_nMyTimerID); + if(m_bIsAntiFlickering) + { + ::SetClassLong(*m_pWnd,GCL_STYLE,m_dwClassStyle); + m_bIsAntiFlickering = false; + } + } +} + +////////////////////////////////////////////////////////////////////// + +/* + * DoOnGetMinMaxInfo() + * ------------------- + * fill in MINMAXINFO as requested + * Call your CWnd's OnGetMinMaxInfo first ! + * [changed due to a bug reported by Michel Wassink ] + */ + +void cdxCDynamicWnd::DoOnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) +{ + if(IsWindow() && !IsDisabled() && IsUp()) + { + CSize szDelta = GetBorderSize(); + + lpMMI->ptMinTrackSize.x = m_szMin.cx + szDelta.cx; + lpMMI->ptMinTrackSize.y = m_szMin.cy + szDelta.cy; + + if(m_Freedom & fdHoriz) + { + if(m_szMax.cx > 0) + lpMMI->ptMaxTrackSize.x = m_szMax.cx + szDelta.cx; + } + else + lpMMI->ptMaxTrackSize.x = lpMMI->ptMinTrackSize.x; + + if(m_Freedom & fdVert) + { + if(m_szMax.cy > 0) + lpMMI->ptMaxTrackSize.y = m_szMax.cy + szDelta.cy; + } + else + lpMMI->ptMaxTrackSize.y = lpMMI->ptMinTrackSize.y; + } +} + +////////////////////////////////////////////////////////////////////// + +/* + * DoOnParentNotify() + * ------------------ + * When a child window is been destroyed, we remove the appropiate + * HWND entries. + */ + +void cdxCDynamicWnd::DoOnParentNotify(UINT message, LPARAM lParam) +{ + if(!lParam || (message != WM_DESTROY)) + return; + + DoDestroyCtrl((HWND)lParam); +} + + + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.h new file mode 100644 index 0000000000..6f18a38500 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.h @@ -0,0 +1,694 @@ +// cdxCDynamicWnd.h: interface for the cdxCDynamicWnd class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_CDXCDYNAMICWND_H__1FEFDD69_5C1C_11D3_800D_000000000000__INCLUDED_) +#define AFX_CDXCDYNAMICWND_H__1FEFDD69_5C1C_11D3_800D_000000000000__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include +#include + +class cdxCSizeIconCtrl; +class cdxCDynamicWnd; + +#ifndef DECLARE_CDX_HIDDENFUNC +#define DECLARE_CDX_HIDDENFUNC(name) name +#endif +#ifndef DECLARE_CDX_HIDDENENUM +#define DECLARE_CDX_HIDDENENUM(name) enum name +#endif +#ifndef DECLARE_CDX_HIDDENSTRUCT +#define DECLARE_CDX_HIDDENSTRUCT(name) struct name +#endif + +#pragma warning(disable: 4100) +#pragma warning(disable: 4706) + +/* + * --------------------------- + * cdxCDynamicWnd beta 1 fix 9 + * --------------------------- + * A) To make groupboxes work with WS_CLIPCHILDREN windows, set + * the WS_EX_TRANSPARENT flag for this child window. + * THIS IS NOT A PROBLEM WITH THIS CLASS BUT WITH MFC AT ALL + * (you can check it by test-viewing the group box in the + * resource editor). + * B) The property sheet now has the WS_CLIPCHILDREN flag and it + * uses flSWPCopyBits. + * C) The same applies to cdxCDynamicBar. + * --------------------------- + * cdxCDynamicWnd beta 1 fix 8 + * --------------------------- + * A) Flags flSWPCopyBits added (which will be cleared by default) + * This leads into far less flickering but ensures proper updates + * for all child controls. + * Some controls do need you to clear this flag. + * It ensures that I don't use SWP_NOCOPYBITS. + * (Michel Wassink) + * + * IMPORTANT: + * People should use the WS_CLIPCHILDREN flag for DIALOGS to + * avoid flickering !!!!! + * + * B) Added ModifyFlags() and GetFlags(). + * (To help people modifying my flags) + * --------------------------- + * cdxCDynamicWnd beta 1 fix 7 + * --------------------------- + * A) Bug in two overloads taking SBYTE parameters removed. + * (Uwe Keim) + * --------------------------- + * cdxCDynamicWnd beta 1 fix 6 + * --------------------------- + * A) Added some #pragma warning(disable) to avoid ugly warnings + * when compiling using warning level 4. + * (Rick Hullinger) + * --------------------------- + * cdxCDynamicWnd beta 1 fix 5 + * --------------------------- + * A) AddSzControl(...) overloads for control IDs added + * (Uwe Keim) + * B) Design issue: AddSzControl() with bRepos == true didn't used + * DoMoveCtrl() as it would supposed to be. + * (Hans Bühler, concerning an issue of Roberto del Noce. + * C) Layout-Algorithm little changed: + * If you now want to provide extra information by deriving + * a class from cdxCDynamicLayoutInfo, you no longer overwrite Layout() + * but DoCreateLayoutInfo(). + * (Hans Bühler) + * --------------------------- + * cdxCDynamicWnd beta 1 fix 4 + * --------------------------- + * A) BEGIN_DYNAMIC_MAP() now takes TWO parameters: + * The class itself and its base-class. + * This way even maps defined for bade-classes will work properly. + * (Rick Hullinger) + * If this feature offends your code, define _CDX_SIMPLE_DYNAMIC_MAPS in your + * project's settings to switch back to the old behaviour. + * However, it's strongly recommended to modify the BEGIN_DYNAMIC_MAP() + * declarations since the final release will surely have this feature. + * --------------------------- + * cdxCDynamicWnd beta 1 fix 3 + * --------------------------- + * A) The size icon is now displayed using the right colors. + * --------------------------- + * cdxCDynamicWnd beta 1 fix 2 + * --------------------------- + * A) changed cdxCDynamicWnd::BYTE to cdxCDynamicWnd::SBYTE + * changed cdxCDynamicWnd::BYTES to cdxCDynamicWnd::SBYTES + * to avoid conflicts with Window's BYTE data type. + * (Joshua Jensen) + * B) Dialogs will be centered and sized to 110% by default. + * (Hans Bühler) + * C) Bug when avoiding flAntiFlicker + * --------------------------- + * cdxCDynamicWnd beta 1 fix 1 + * --------------------------- + * A) ::Get/SetWindowPlacement() needs length in structure + * (Joshua Jensen) + */ + + +/* + * cdxCDynamicLayoutInfo + * ===================== + * Layout information class. + * This class is derived from CObject and made dynamic using + * DECLARE_DYNAMIC. + * You can derive your own class from it to provide more information + * to your own DoMoveCtrl() function (if you have one). + */ + +class cdxCDynamicLayoutInfo : public CObject +{ + DECLARE_DYNAMIC(cdxCDynamicLayoutInfo); + +public: + CSize m_szCurrent, // current client size + m_szInitial, // initial client size + m_szDelta; // current - initial + UINT m_nCtrlCnt; // number of controls (>=0) + CPoint m_pntScrollPos; // current scrolling position + bool m_bUseScrollPos; // use scroll pos if m_szDelta < 0 + +public: + cdxCDynamicLayoutInfo() : m_bUseScrollPos(false) + { + } + + cdxCDynamicLayoutInfo(cdxCDynamicWnd *pWnd) : m_bUseScrollPos(false) + { + operator=(pWnd); + } + + virtual ~cdxCDynamicLayoutInfo() + { + } + + bool operator=(cdxCDynamicWnd *pWnd); + + bool IsInitial() const { return !m_szDelta.cx && !m_szDelta.cy && (!m_bUseScrollPos || (!m_pntScrollPos.x && !m_pntScrollPos.y)); } +}; + +/* + * cdxCDynamicWnd + * ============== + * The dynamic window manager. + */ + +class cdxCDynamicWnd +{ +public: + // add sz control mode types + + enum Mode // flags for AddSzControl() + { + mdNone = 0, // does nothing + mdResize = 1, // resize in that dimension + mdRepos = 2, // reposition + mdRelative = 3, // center (size by delta/2 and repos by delta/2) + }; + + // freedom + + enum Freedom + { + fdNone = 0, // might be used but I don't imagine what you want from this ?? + fdHoriz = 0x01, // horizantally sizable only + fdVert = 0x02, // vertically sizable only + fdAll = fdHoriz|fdVert,// sizable in all directions + + fdHorz = fdHoriz, // synonyms + fdX = fdHoriz, + fdY = fdVert + }; + + // some flags + + enum Flags + { + flSizeIcon = 0x01, // create size icon + flAntiFlicker = 0x02, // some utility func + flSWPCopyBits = 0x04, // make SetWindowPos() don't use SWP_NOCOPYBITS. This may lead + // into improper results for SOME child controls but speeds up redrawing (less flickering) + + _fl_reserved_ = 0x0000ffff, // reserved + _fl_freeuse_ = 0xffff0000 // free 4 u + }; + + // some constants + + enum + { + DEFAULT_TIMER_ID = 0x7164 + }; + + // byte percentage + + enum { X1=0, Y1=1, X2=2, Y2=3 }; + + typedef signed char SBYTE; + typedef SBYTE SBYTES[4]; + + // some internal data; might be of any interest for you + + class Position : public CRect + { + public: + + public: + SBYTES m_Bytes; + CSize m_szMin; + + public: + Position() : CRect(0,0,0,0) {} + Position(const CRect & rect, const SBYTES & bytes, const CSize & szMin = M_szNull) : CRect(rect), m_szMin(szMin) { operator=(bytes); } + ~Position() {} + + void operator=(const CRect & rectInitial) { *this = rectInitial; } + void operator=(const SBYTES & bytes) { for(int i=0; i<4; ++i) m_Bytes[i] = bytes[i]; } + void operator=(const CSize & szMin) { m_szMin = szMin; } + + void Apply(HWND hwnd, CRect & rectNewPos, const cdxCDynamicLayoutInfo & li) const; + }; + +private: + CWnd *m_pWnd; // the parent window + cdxCSizeIconCtrl *m_pSizeIcon; // size icon (if wanted) + bool m_bIsAntiFlickering; + +protected: + int m_iDisabled; // disabled counter + DWORD m_dwClassStyle; // stored for AntiFlickering feature + CMap + m_Map; // controllers + +public: + Freedom m_Freedom; // in which direction may we modify the window's size ? + UINT m_nFlags; + CSize m_szInitial; // initial client size + CSize m_szMin, // min/max CLIENT size (set to zero to disable) + m_szMax; + UINT m_idSizeIcon; // id of size icon (default to AFX_IDW_SIZE_BOX) + UINT m_nMyTimerID; // id of the timer used by me + bool m_bUseScrollPos; // use scroll position when moving controls + +public: + cdxCDynamicWnd(Freedom fd, UINT nFlags); + virtual ~cdxCDynamicWnd() { DoOnDestroy(); } + + // + // status + // + + bool IsValid() const { return m_pWnd != NULL; } + bool IsWindow() const { return IsValid() && ::IsWindow(m_pWnd->m_hWnd); } + bool IsUp() const { return IsWindow() && !m_pWnd->IsIconic(); } + bool IsDisabled() const { return m_iDisabled > 0; } + CWnd *Window() const { return m_pWnd; } + + virtual UINT GetCtrlCount() const { return m_Map.GetCount(); } + + // + // basics + // + + bool Enable() { return --m_iDisabled <= 0; } + void Disable() { ++m_iDisabled; } + UINT ModifyFlags(UINT nAdd, UINT nRem = 0) { UINT n = m_nFlags; m_nFlags &= ~nRem; m_nFlags |= nAdd; return n; } + UINT GetFlags() const { return m_nFlags; } + + // + // client size stuff + // + + virtual CSize GetCurrentClientSize() const; + CSize GetBorderSize() const; + + // + // AddSzControl for HWNDs + // + + bool AddSzXControl(HWND hwnd, SBYTE x1, SBYTE x2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(hwnd,x1,0,x2,0,szMin,bReposNow); } + bool AddSzXControl(HWND hwnd, Mode md, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(hwnd,md,mdNone,szMin,bReposNow); } + bool AddSzYControl(HWND hwnd, SBYTE y1, SBYTE y2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(hwnd,0,y1,0,y2,szMin,bReposNow); } + bool AddSzYControl(HWND hwnd, Mode md, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(hwnd,mdNone,md,szMin,bReposNow); } + + bool AddSzControl(HWND hwnd, Mode mdX, Mode mdY, const CSize & szMin = M_szNull, bool bReposNow = true); + bool AddSzControl(HWND hwnd, SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, const CSize & szMin = M_szNull, bool bReposNow = true); + + bool AddSzControl(HWND hwnd, HWND hLikeThis, bool bReposNow = true); + bool AddSzControl(HWND hwnd, const SBYTES & bytes, const CSize & szMin = M_szNull, bool bReposNow = true); + + virtual bool AddSzControl(HWND hwnd, const Position & pos, bool bReposNow = true); // virtual entry point + + // + // AddSzControl for IDss + // + + bool AddSzXControl(UINT id, SBYTE x1, SBYTE x2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzXControl(GetSafeChildHWND(id),x1,x2,szMin,bReposNow); } + bool AddSzXControl(UINT id, Mode md, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzXControl(GetSafeChildHWND(id),md,szMin,bReposNow); } + bool AddSzYControl(UINT id, SBYTE y1, SBYTE y2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzYControl(GetSafeChildHWND(id),y1,y2,szMin,bReposNow); } + bool AddSzYControl(UINT id, Mode md, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzYControl(GetSafeChildHWND(id),md,szMin,bReposNow); } + + bool AddSzControl(UINT id, Mode mdX, Mode mdY, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),mdX,mdY,szMin,bReposNow); } + bool AddSzControl(UINT id, SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),x1,y1,x2,y2,szMin,bReposNow); } + + bool AddSzControl(UINT id, HWND hLikeThis, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),hLikeThis,bReposNow); } + bool AddSzControl(UINT id, const SBYTES & bytes, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),bytes,szMin,bReposNow); } + + bool AddSzControl(UINT id, const Position & pos, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),pos,bReposNow); } + + // + // all controls + // + + void AllControls(Mode mdX, Mode mdY, bool bOverwrite = false, bool bReposNow = true); + void AllControls(SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, bool bOverwrite = false, bool bReposNow = true); + void AllControls(const SBYTES & bytes, bool bOverwrite = false, bool bReposNow = true); + + // etc + + bool GetControlPosition(HWND hwnd, Position & pos) { return m_Map.Lookup(hwnd,pos) != FALSE; } + bool RemSzControl(HWND hwnd, bool bMoveToInitialPos = false); + bool UpdateControlPosition(HWND hwnd); + + // + // operational + // + + virtual void Layout(); + + // + // you have to delegate work to these + // + +protected: + void DoInitWindow(CWnd & rWnd, const CSize & szInitial); + void DoInitWindow(CWnd & rWnd); // short-cut + void DoOnDestroy(); + + void DoOnParentNotify(UINT message, LPARAM lParam); + void DoOnTimer(UINT nIDEvent); + void DoOnSize(UINT nType, int cx, int cy); + void DoOnSizing(UINT fwSide, LPRECT pRect); + void DoOnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); + + // + // some advanced virtuals + // + +protected: + virtual bool DoMoveCtrl(HWND hwnd, UINT id, CRect & rectNewPos, const cdxCDynamicLayoutInfo & li); + virtual void DoDestroyCtrl(HWND hwnd); + + virtual void OnInitialized() {} + virtual void OnDestroying() {} + + virtual cdxCDynamicLayoutInfo *DoCreateLayoutInfo() { return new cdxCDynamicLayoutInfo(this); } + + // + // misc utility functions + // + +public: + virtual void StartAntiFlickering(bool bIsBotRight); + HWND GetSafeChildHWND(UINT nID); + + // + // some operators + // +public: + operator CWnd * () const { return m_pWnd; } + + // + // private members (hidden from classview) + // +private: + // DON'T USE + DECLARE_CDX_HIDDENFUNC( cdxCDynamicWnd(const cdxCDynamicWnd & w) ) { ASSERT(false); } + void DECLARE_CDX_HIDDENFUNC( operator=(const cdxCDynamicWnd & w) ) { ASSERT(false); } + // helpers + void DECLARE_CDX_HIDDENFUNC( _translate(Mode md, SBYTE & b1, SBYTE & b2) ); + + // + // DYNAMIC_MAPping + // +public: + DECLARE_CDX_HIDDENENUM( __dynEntryType ) + { + __end, + __bytes, + __modes + }; + DECLARE_CDX_HIDDENSTRUCT( __dynEntry ) + { + __dynEntryType type; + UINT id; + SBYTE b1,b2,b3,b4; + }; +protected: + virtual const __dynEntry * DECLARE_CDX_HIDDENFUNC( __getDynMap(const __dynEntry *pLast) ) const { return NULL; } + +public: + static const CSize M_szNull; // for the "Config" class + static const SBYTES TopLeft, + TopRight, + BotLeft, + BotRight; +}; + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicLayoutInfo DYNAMIC MAP macros +///////////////////////////////////////////////////////////////////////////// + +/* + * Macros that can be used to implement an automatic setup + * for any dynamic window. + * If you use these, you don't need to use AddSzControl(): + */ + + +// declare map +#ifndef DECLARE_DYNAMIC_MAP +#define DECLARE_DYNAMIC_MAP() \ +protected: \ + virtual const __dynEntry *__getDynMap(const __dynEntry *pLast) const; \ +private: \ + static const __dynEntry __M_dynEntry[]; +#endif + +// begin the map and set freedom/size icon flags +#ifdef _CDX_SIMPLE_DYNAMIC_MAPS +#ifndef BEGIN_DYNAMIC_MAP +#define BEGIN_DYNAMIC_MAP(CLASS) \ + const cdxCDynamicWnd::__dynEntry *CLASS::__getDynMap(const __dynEntry *pLast) const { return __M_dynEntry; } \ + const cdxCDynamicWnd::__dynEntry CLASS::__M_dynEntry[] = { +#endif +#else + +// begin a dynamic map that even takes care of maps defined for base-class versions +#ifndef BEGIN_DYNAMIC_MAP +#define BEGIN_DYNAMIC_MAP(CLASS,BASECLASS) \ + const cdxCDynamicWnd::__dynEntry *CLASS::__getDynMap(const __dynEntry *pLast) const\ + { \ + if(pLast == __M_dynEntry) \ + return NULL; \ + return (pLast = BASECLASS::__getDynMap(pLast)) ? pLast : __M_dynEntry; \ + } \ + const cdxCDynamicWnd::__dynEntry CLASS::__M_dynEntry[] = { +#endif +#endif + +// end up map +#ifndef END_DYNAMIC_MAP +#define END_DYNAMIC_MAP() { cdxCDynamicWnd::__end } }; +#endif + +// declare operations +#ifndef DYNAMIC_MAP_ENTRY_EX +#define DYNAMIC_MAP_ENTRY_EX(ID,X1,Y1,X2,Y2) { cdxCDynamicWnd::__bytes, ID, X1,Y1,X2,Y2 }, +#define DYNAMIC_MAP_XENTRY_EX(ID,X1,X2) DYNAMIC_MAP_ENTRY_EX(ID,X1,0,X2,0) +#define DYNAMIC_MAP_YENTRY_EX(ID,Y1,Y2) DYNAMIC_MAP_ENTRY_EX(ID,0,Y1,0,Y2) +#define DYNAMIC_MAP_ENTRY(ID,MODEX,MODEY) { cdxCDynamicWnd::__modes, ID, cdxCDynamicWnd::##MODEX,cdxCDynamicWnd::##MODEY }, +#define DYNAMIC_MAP_XENTRY(ID,MODEX) DYNAMIC_MAP_XENTRY(ID,MODEX,mdNone) +#define DYNAMIC_MAP_YENTRY(ID,MODEY) DYNAMIC_MAP_YENTRY(ID,mdNone,MODEY) +#endif + +// use this ID for the default position at the head of your map +#ifndef DYNAMIC_MAP_DEFAULT_ID +#define DYNAMIC_MAP_DEFAULT_ID 0 +#endif + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicLayoutInfo inlines +///////////////////////////////////////////////////////////////////////////// + +/* + * auto-fill in struct + */ + +inline bool cdxCDynamicLayoutInfo::operator=(cdxCDynamicWnd *pWnd) +{ + if(!pWnd || !pWnd->IsUp()) + return false; + + m_szCurrent = pWnd->GetCurrentClientSize(); + m_szInitial = pWnd->m_szInitial; + m_szDelta = m_szCurrent - m_szInitial; + m_nCtrlCnt = pWnd->GetCtrlCount(); + + if(m_bUseScrollPos == pWnd->m_bUseScrollPos) + { + m_pntScrollPos.x = pWnd->Window()->GetScrollPos(SB_HORZ); + m_pntScrollPos.y = pWnd->Window()->GetScrollPos(SB_VERT); + } + + return true; +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicWnd inlines +///////////////////////////////////////////////////////////////////////////// + +/* + * Add a control + */ + +inline bool cdxCDynamicWnd::AddSzControl(HWND hwnd, const SBYTES & bytes, const CSize & szMin, bool bReposNow) +{ + if(!::IsWindow(hwnd)) + { + // Note that this might happen if you call + TRACE(_T("*** NOTE[cdxCDynamicWnd::AddSzControl(HWND,const SBYTES &,const CSize &,bool)]: Handle 0x%lx is not a valid window.\n"),(DWORD)hwnd); + return false; + } + + WINDOWPLACEMENT wpl; + wpl.length = sizeof(WINDOWPLACEMENT); + VERIFY( ::GetWindowPlacement(hwnd,&wpl) ); + + return AddSzControl(hwnd,Position(wpl.rcNormalPosition,bytes,szMin),bReposNow); +} + +/* + * Add control that behaves like another + */ + +inline bool cdxCDynamicWnd::AddSzControl(HWND hwnd, HWND hLikeThis, bool bReposNow) +{ + if(!::IsWindow(hwnd)) + { + TRACE(_T("*** NOTE[cdxCDynamicWnd::AddSzControl(HWND,HWND,bool)]: Handle 0x%lx is not a valid window.\n"),(DWORD)hwnd); + return false; + } + + Position pos; + + if(!m_Map.Lookup(hLikeThis,pos)) + { + TRACE(_T("*** NOTE[cdxCDynamicWnd::AddSzControl(HWND,HWND,bool)]: For the 'hLikeThis' handle 0x%lx there hasn't been made an entry for yet.\n"),(DWORD)hLikeThis); + return false; + } + + return AddSzControl(hwnd,pos); +} + +/* + * old + */ + +inline bool cdxCDynamicWnd::AddSzControl(HWND hwnd, Mode mdX, Mode mdY, const CSize & szMin, bool bReposNow) +{ + SBYTES b; + _translate(mdX,b[X1],b[X2]); + _translate(mdY,b[Y1],b[Y2]); + return AddSzControl(hwnd,b,szMin,bReposNow); +} + +/* + * old + */ + +inline bool cdxCDynamicWnd::AddSzControl(HWND hwnd, SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, const CSize & szMin, bool bReposNow) +{ + SBYTES b; + b[X1] = x1, + b[X2] = x2, + b[Y1] = y1, + b[Y2] = y2; + return AddSzControl(hwnd,b,szMin,bReposNow); +} + +///////////////////////////////////////////////////////////////////////////// + +/* + * short-cut + */ + +inline void cdxCDynamicWnd::AllControls(Mode mdX, Mode mdY, bool bOverwrite, bool bReposNow) +{ + SBYTES b; + _translate(mdX,b[X1],b[X2]); + _translate(mdY,b[Y1],b[Y2]); + AllControls(b,bOverwrite,bReposNow); +} + + +/* + * short-cut + */ + +inline void cdxCDynamicWnd::AllControls(SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, bool bOverwrite, bool bReposNow) +{ + SBYTES b; + b[X1] = x1, + b[X2] = x2, + b[Y1] = y1, + b[Y2] = y2; + AllControls(b,bOverwrite,bReposNow); +} + + +///////////////////////////////////////////////////////////////////////////// + +/* + * get size of current client area + */ + +inline CSize cdxCDynamicWnd::GetCurrentClientSize() const +{ + if(!IsWindow()) + { + ASSERT(false); + return M_szNull; + } + + CRect rect; + m_pWnd->GetClientRect(rect); + + return rect.Size(); +} + +/* + * get difference between window and client size + */ + +inline CSize cdxCDynamicWnd::GetBorderSize() const +{ + if(!IsUp()) + { + ASSERT(false); + return M_szNull; + } + + CRect r1,r2; + m_pWnd->GetWindowRect(r1); + m_pWnd->GetClientRect(r2); + + return r1.Size() - r2.Size(); +} + +///////////////////////////////////////////////////////////////////////////// + +/* + * translates a "mode" into percentage + */ + +inline void cdxCDynamicWnd::_translate(Mode md, SBYTE & b1, SBYTE & b2) +{ + switch(md) + { + default : ASSERT(false); + case mdNone : b1 = 0; b2 = 0; break; + case mdResize : b1 = 0; b2 = 100; break; + case mdRepos : b1 = 100; b2 = 100; break; + case mdRelative : b1 = 50; b2 = 50; break; + } +} + +/* + * gets HWND of a child given by ID + */ + +inline HWND cdxCDynamicWnd::GetSafeChildHWND(UINT nID) +{ + if(!IsWindow()) + { + ASSERT(false); + return 0; + } + + HWND h = ::GetDlgItem(m_pWnd->m_hWnd,nID); + ASSERT(h!=0); + return h; +} + +#pragma warning(default: 4100) +#pragma warning(default: 4706) + +#endif // !defined(AFX_CDXCDYNAMICWND_H__1FEFDD69_5C1C_11D3_800D_000000000000__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.cpp new file mode 100644 index 0000000000..1ba65a8d11 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.cpp @@ -0,0 +1,327 @@ +// cdxCDynamicWndEx.cpp: implementation of the cdxCDynamicWndEx class. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "cdxCDynamicWndEx.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#define new DEBUG_NEW +#endif + +///////////////////////////////////////////////////////////////////////////// +// Some static variables (taken from cdxCDynamicControlsManager) +///////////////////////////////////////////////////////////////////////////// + +#define REGVAL_NOSTATE -1 +#define REGVAL_VISIBLE 1 +#define REGVAL_HIDDEN 0 +#define REGVAL_MAXIMIZED 1 +#define REGVAL_ICONIC 0 +#define REGVAL_INVALID 0 +#define REGVAL_VALID 1 + +/* + * registry value names + * (for StoreWindowPosition()/RestoreWindowPosition()) + */ + +static LPCTSTR lpszRegVal_Left = _T("Left"), + lpszRegVal_Right = _T("Right"), + lpszRegVal_Top = _T("Top"), + lpszRegVal_Bottom = _T("Bottom"), + lpszRegVal_Visible = _T("Visibility"), + lpszRegVal_State = _T("State"), + lpszRegVal_Valid = _T("(valid)"); + +LPCTSTR cdxCDynamicWndEx::M_lpszAutoPosProfileSection = _T("WindowPositions"); + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicWndEx +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicWndEx stretches windows +///////////////////////////////////////////////////////////////////////////// + +static inline CString _makeFullProfile(LPCTSTR lpszBase, const CString & str) +{ + CString s = lpszBase; + + if(s.GetLength() && (s[s.GetLength()-1] != _T('\\'))) + s += _T('\\'); + + s += str; + return s; +} + +void cdxCDynamicWndEx::OnInitialized() +{ + ASSERT(IsWindow()); + + if(!m_strAutoPos.IsEmpty()) + { +#if _MSC_VER < 1300 // vc6 + if(!RestoreWindowPosition(_makeFullProfile(M_lpszAutoPosProfileSection,m_strAutoPos),rflg_all)) +#else // vc7 + if(!RestoreWindowPosition(_makeFullProfile(M_lpszAutoPosProfileSection,m_strAutoPos),"",rflg_all)) +#endif + { + Window()->CenterWindow(); + StretchWindow(10); + } + } +} + +void cdxCDynamicWndEx::OnDestroying() +{ + if(!m_strAutoPos.IsEmpty() && IsWindow()) + StoreWindowPosition(_makeFullProfile(M_lpszAutoPosProfileSection,m_strAutoPos)); +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicWndEx stretches windows +///////////////////////////////////////////////////////////////////////////// + +/* + * stretches the window by szDelta (i.e. if szDelta is 100, the window is enlarged by 100 pixels) + * stretching means that the center point of the window remains + * + * returns false if the window would be smaller than (1,1) + * + * NOTE: this function does NOT care of the min/max dimensions of a window + * Use MoveWindow() if you need to take care of it. + * + * STATIC + */ + +bool cdxCDynamicWndEx::StretchWindow(const CSize & szDelta) +{ + if(!IsWindow()) + { + ASSERT(false); + return false; + } + + CWnd *pWnd = Window(); + + WINDOWPLACEMENT wpl; + pWnd->GetWindowPlacement(&wpl); + + wpl.rcNormalPosition.left -= szDelta.cx / 2; + wpl.rcNormalPosition.right += (szDelta.cx + 1) / 2; + wpl.rcNormalPosition.top -= szDelta.cy / 2; + wpl.rcNormalPosition.bottom += (szDelta.cy + 1) / 2; +// wpl.flags = SW_SHOWNA|SW_SHOWNOACTIVATE; + + if((wpl.rcNormalPosition.left >= wpl.rcNormalPosition.right) || + (wpl.rcNormalPosition.top >= wpl.rcNormalPosition.bottom)) + return false; + + VERIFY( pWnd->SetWindowPos(NULL, + wpl.rcNormalPosition.left, + wpl.rcNormalPosition.top, + wpl.rcNormalPosition.right - wpl.rcNormalPosition.left, + wpl.rcNormalPosition.bottom - wpl.rcNormalPosition.top, + SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER) ); + + return true; +} + +/* + * stretch window by a percent value + * the algorithm calculates the new size for both dimensions by: + * + * newWid = oldWid + (oldWid * iAddPcnt) / 100 + * + * NOTE: iAddPcnt may even be nagtive, but it MUST be greater than -100. + * NOTE: this function does NOT care of the min/max dimensions of a window + * + * The function will return false if the new size would be empty. + */ + +bool cdxCDynamicWndEx::StretchWindow(int iAddPcnt) +{ + if(!IsWindow()) + { + ASSERT(false); + return false; + } + + CSize szDelta = GetCurrentClientSize() + GetBorderSize(); + + szDelta.cx = (szDelta.cx * iAddPcnt) / 100; + szDelta.cy = (szDelta.cy * iAddPcnt) / 100; + + return StretchWindow(szDelta); +} + + +///////////////////////////////////////////////////////////////////////////// +// cdxCDynamicWndEx registry positioning +///////////////////////////////////////////////////////////////////////////// + +/* + * stores a window's position and visiblity to the registry. + * return false if any error occured + */ + +bool cdxCDynamicWndEx::StoreWindowPosition(LPCTSTR lpszProfile, + const CString &entryPrefix) +{ + if(!IsWindow() || !lpszProfile || !*lpszProfile) + { + ASSERT(false); + return false; + } + + CWnd *pWnd = Window(); + + WINDOWPLACEMENT wpl; + VERIFY( pWnd->GetWindowPlacement(&wpl) ); + + BOOL bVisible = pWnd->IsWindowVisible(); + int iState = REGVAL_NOSTATE; + + if(pWnd->IsIconic()) + iState = REGVAL_ICONIC; + else + if(pWnd->IsZoomed()) + iState = REGVAL_MAXIMIZED; + + CWinApp *app = AfxGetApp(); + + if(!app->m_pszRegistryKey || !*app->m_pszRegistryKey) + { + TRACE(_T("*** NOTE[cdxCDynamicWndEx::StoreWindowPosition()]: To properly store and restore a window's position, please call CWinApp::SetRegistryKey() in you app's InitInstance() !\n")); + return false; + } + + return app->WriteProfileInt(lpszProfile, entryPrefix+lpszRegVal_Valid, REGVAL_INVALID) && // invalidate first + app->WriteProfileInt(lpszProfile, entryPrefix+lpszRegVal_Left, wpl.rcNormalPosition.left) && + app->WriteProfileInt(lpszProfile, entryPrefix+lpszRegVal_Right, wpl.rcNormalPosition.right) && + app->WriteProfileInt(lpszProfile, entryPrefix+lpszRegVal_Top, wpl.rcNormalPosition.top) && + app->WriteProfileInt(lpszProfile, entryPrefix+lpszRegVal_Bottom, wpl.rcNormalPosition.bottom) && + app->WriteProfileInt(lpszProfile, entryPrefix+lpszRegVal_Visible, bVisible ? REGVAL_VISIBLE : REGVAL_HIDDEN) && + app->WriteProfileInt(lpszProfile, entryPrefix+lpszRegVal_State, iState) && + app->WriteProfileInt(lpszProfile, entryPrefix+lpszRegVal_Valid, REGVAL_VALID); // validate position +} + +/* + * load the registry data stored by StoreWindowPosition() + * returns true if data have been found in the registry + */ + +bool cdxCDynamicWndEx::RestoreWindowPosition(LPCTSTR lpszProfile, + const CString &entryPrefix, + UINT restoreFlags) +{ + if(!IsWindow() || !lpszProfile || !*lpszProfile) + { + ASSERT(false); + return false; + } + + CWnd *pWnd = Window(); + CWinApp *app = AfxGetApp(); + + if(!app->m_pszRegistryKey || !*app->m_pszRegistryKey) + { + TRACE(_T("*** NOTE[cdxCDynamicWndEx::RestoreWindowPosition()]: To properly store and restore a window's position, please call CWinApp::SetRegistryKey() in you app's InitInstance() !\n")); + return false; + } + + // + // first, we check whether the position had been saved successful any time before + // + + if( app->GetProfileInt(lpszProfile,entryPrefix+lpszRegVal_Valid,REGVAL_INVALID) != REGVAL_VALID ) + return false; + + // + // get old position + // + + WINDOWPLACEMENT wpl; + VERIFY( pWnd->GetWindowPlacement(&wpl) ); + + // + // read registry + // + + int iState = app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_State, REGVAL_NOSTATE); + + // + // get window's previous normal position + // + + wpl.rcNormalPosition.left = app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Left, wpl.rcNormalPosition.left); + wpl.rcNormalPosition.right = app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Right, wpl.rcNormalPosition.right); + wpl.rcNormalPosition.top = app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Top, wpl.rcNormalPosition.top); + wpl.rcNormalPosition.bottom = app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Bottom, wpl.rcNormalPosition.bottom); + + if(wpl.rcNormalPosition.left > wpl.rcNormalPosition.right) + { + long l = wpl.rcNormalPosition.right; + wpl.rcNormalPosition.right = wpl.rcNormalPosition.left; + wpl.rcNormalPosition.left = l; + } + if(wpl.rcNormalPosition.top > wpl.rcNormalPosition.bottom) + { + long l = wpl.rcNormalPosition.bottom; + wpl.rcNormalPosition.bottom = wpl.rcNormalPosition.top; + wpl.rcNormalPosition.top = l; + } + + // + // get restore stuff + // + + UINT showCmd = SW_SHOWNA; + + if(restoreFlags & rflg_state) + { + if(iState == REGVAL_MAXIMIZED) + showCmd = SW_MAXIMIZE; + else + if(iState == REGVAL_ICONIC) + showCmd = SW_MINIMIZE; + } + + // + // use MoveWindow() which takes care of WM_GETMINMAXINFO + // + + pWnd->MoveWindow( wpl.rcNormalPosition.left,wpl.rcNormalPosition.top, + wpl.rcNormalPosition.right - wpl.rcNormalPosition.left, + wpl.rcNormalPosition.bottom - wpl.rcNormalPosition.top, + showCmd == SW_SHOWNA); + + if(showCmd != SW_SHOWNA) + { + // read updated position + + VERIFY( pWnd->GetWindowPlacement(&wpl) ); + wpl.showCmd = showCmd; + pWnd->SetWindowPlacement(&wpl); + } + + // + // get visiblity + // + + if(restoreFlags & rflg_visibility) + { + int i = app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Visible, REGVAL_NOSTATE); + if(i == REGVAL_VISIBLE) + pWnd->ShowWindow(SW_SHOW); + else + if(i == REGVAL_HIDDEN) + pWnd->ShowWindow(SW_HIDE); + } + + return true; +} + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.h new file mode 100644 index 0000000000..eb55baeebf --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.h @@ -0,0 +1,72 @@ +// cdxCDynamicWndEx.h: interface for the cdxCDynamicWndEx class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_CDXCDYNAMICWNDEX_H__96C8C1D4_6524_11D3_8030_000000000000__INCLUDED_) +#define AFX_CDXCDYNAMICWNDEX_H__96C8C1D4_6524_11D3_8030_000000000000__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include "cdxCDynamicWnd.h" + +/* + * cdxCDynamicWndEx + * ================ + * A class extended to offer some useful additions. + */ + +class cdxCDynamicWndEx : public cdxCDynamicWnd +{ +public: + enum RestoreFlags + { + rflg_none = 0, // only load window position + rflg_state = 0x01, // make window iconic/zoomed if been before + rflg_visibility = 0x02, // hide/show window as been before + rflg_all = rflg_state|rflg_visibility + }; + + enum ExFlags + { + flAutoPos = 0x0100 + }; + +private: + CString m_strAutoPos; + +public: + cdxCDynamicWndEx(Freedom fd, UINT nFlags) : cdxCDynamicWnd(fd,nFlags) {} + virtual ~cdxCDynamicWndEx() {} + + // + // utilities + // + + bool StretchWindow(const CSize & szDelta); + bool StretchWindow(int iAddPcnt); + bool RestoreWindowPosition(LPCTSTR lpszProfile, const CString &entryPrefix = "", UINT restoreFlags = rflg_all); + bool StoreWindowPosition(LPCTSTR lpszProfile, const CString &entryPrefix = ""); + + // + // feature one: auto-positioning :) + // + + void ActivateAutoPos(UINT nID) { m_strAutoPos.Format(_T("ID=0x%08lx"),nID); } + void ActivateAutoPos(const CString & strID) { m_strAutoPos = strID; } + void NoAutoPos() { m_strAutoPos.Empty(); } + + // + // we need these + // + +protected: + virtual void OnInitialized(); + virtual void OnDestroying(); + +public: + static LPCTSTR M_lpszAutoPosProfileSection; +}; + +#endif // !defined(AFX_CDXCDYNAMICWNDEX_H__96C8C1D4_6524_11D3_8030_000000000000__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.cpp new file mode 100644 index 0000000000..ec15f2c524 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.cpp @@ -0,0 +1,148 @@ +// cdxCSizeIconCtrl.cpp : implementation file +// + +#include "stdafx.h" +#include "cdxCSizeIconCtrl.h" + +#include + +#ifndef OBM_SIZE +#define OBM_SIZE 32766 +#pragma message("*** NOTE[cdxCSizeIconCtrl.cpp]: Please define OEMRESOURCE in your project settings !") +// taken from WinresRc.h +// if not used for any reason +#endif + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +#pragma warning(disable: 4100) + +///////////////////////////////////////////////////////////////////////////// +// cdxCSizeIconCtrl::AutoOEMImageList +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// construction +///////////////////////////////////////////////////////////////////////////// + +/* + * one-step construction for my image list + * (allows to use the AutoOEMImageList as static member) + */ + +cdxCSizeIconCtrl::AutoOEMImageList::AutoOEMImageList(UINT nBitmapID, COLORREF crMask) +{ + CBitmap cbmp; + BITMAP bmp; + VERIFY( cbmp.LoadOEMBitmap(nBitmapID) ); + VERIFY( cbmp.GetBitmap(&bmp) ); + + m_szImage.cx = bmp.bmWidth; + m_szImage.cy = bmp.bmHeight; + + InitCommonControls(); + + VERIFY( Create(bmp.bmWidth,bmp.bmHeight,ILC_COLOR16|ILC_MASK,0,1) ); + int i = Add(&cbmp,crMask); + ASSERT(i == 0); +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCSizeIconCtrl +///////////////////////////////////////////////////////////////////////////// + +IMPLEMENT_DYNAMIC(cdxCSizeIconCtrl,CScrollBar); + +///////////////////////////////////////////////////////////////////////////// + +cdxCSizeIconCtrl::AutoOEMImageList cdxCSizeIconCtrl::M_ilImage(OBM_SIZE,::GetSysColor(COLOR_BTNFACE)); +HCURSOR cdxCSizeIconCtrl::M_hcSize = ::LoadCursor(NULL,IDC_SIZENWSE); + +///////////////////////////////////////////////////////////////////////////// +// construction +///////////////////////////////////////////////////////////////////////////// + +BEGIN_MESSAGE_MAP(cdxCSizeIconCtrl, CScrollBar) + //{{AFX_MSG_MAP(cdxCSizeIconCtrl) + ON_WM_PAINT() + ON_WM_SETCURSOR() + ON_WM_LBUTTONDBLCLK() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// cdxCSizeIconCtrl inlines +///////////////////////////////////////////////////////////////////////////// + +/* + * create short-cut + */ + +BOOL cdxCSizeIconCtrl::Create(CWnd *pParent, UINT id) +{ + ASSERT(pParent != NULL); + CRect rect;pParent->GetClientRect(&rect); + if(!CScrollBar::Create( SBS_SIZEBOX|SBS_SIZEBOXBOTTOMRIGHTALIGN| + WS_CHILD, + rect, + pParent,id)) + return FALSE; + + VERIFY( ModifyStyleEx(0,WS_EX_TRANSPARENT) ); + return TRUE; +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCSizeIconCtrl message handlers +///////////////////////////////////////////////////////////////////////////// + +/* + * draw icon + */ + +void cdxCSizeIconCtrl::OnPaint() +{ + CPaintDC dc(this); // device context for painting + + if(GetParent() && (!GetParent()->IsZoomed() || !m_bReflectParentState)) + { + CRect rect;GetClientRect(&rect); + CSize sz = M_ilImage.Size(); + + VERIFY( M_ilImage.Draw( &dc, + 0, + CPoint(rect.right - sz.cx,rect.bottom - sz.cy), + ILD_NORMAL|ILD_TRANSPARENT) ); + } +} + +///////////////////////////////////////////////////////////////////////////// +// cdxCSizeIconCtrl Cursor +///////////////////////////////////////////////////////////////////////////// + +/* + * set the cursor. + */ + +BOOL cdxCSizeIconCtrl::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) +{ + if(GetParent() && (!GetParent()->IsZoomed() || !m_bReflectParentState)) + ::SetCursor((nHitTest == HTCLIENT) ? M_hcSize : NULL); + return TRUE; +} + +/* + * catch Doubleclick - if you don't do that, + * the window will be maximized if you double-blick + * the control. + * Don't know why, but it's annoying. + */ + +void cdxCSizeIconCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) +{ +// CScrollBar::OnLButtonDblClk(nFlags, point); +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.h new file mode 100644 index 0000000000..3672918bbf --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.h @@ -0,0 +1,95 @@ +#if !defined(AFX_CDXCSIZEICONCTRL_H__9B4AD1C3_8AA5_11D2_BE9C_000000000000__INCLUDED_) +#define AFX_CDXCSIZEICONCTRL_H__9B4AD1C3_8AA5_11D2_BE9C_000000000000__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 +// cdxCSizeIconCtrl.h : header file +// + +// +// cdxCSizeIconCtrl.h : header file +// ----------------------------------------------------------------------- +// Author: Hans Bühler (hb@codex-design.de) +// codex design (http://www.codex-design.de) +// Version: 1.3 +// ----------------------------------------------------------------------- +// Changes for 1.1: +// - cdxCSizeIconCtrl catches left-mb-doubleclick what caused the window +// to get maximized for any reason. +// Changes for 1.2: +// - Ability to check parent's state: If it is zoomed, the control won't +// draw a sizing icon. +// Changes for 1.3: +// - Icon now has proper colors. +// ----------------------------------------------------------------------- +// Comments welcome. +// + +/* + * cdxCSizeIconCtrl + * ================ + * A simple class that is a size-icon. + * + * (w)Nov.1998 mailto:hans.buehler@student.hu-berlin.de, + * codex design + */ + +class cdxCSizeIconCtrl : public CScrollBar +{ + DECLARE_DYNAMIC(cdxCSizeIconCtrl); + +public: + class AutoOEMImageList : public CImageList + { + private: + CSize m_szImage; + + public: + AutoOEMImageList(UINT nBitmapID, COLORREF crMask); + virtual ~AutoOEMImageList() {} + + const CSize & Size() const { return m_szImage; } + }; + +private: + bool m_bCapture; +public: + bool m_bReflectParentState; + +public: + cdxCSizeIconCtrl(bool bReflectParentState = true) : m_bCapture(false), m_bReflectParentState(bReflectParentState) {} + virtual ~cdxCSizeIconCtrl() {} + + virtual BOOL Create(CWnd *pParent, UINT id = AFX_IDW_SIZE_BOX); + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(cdxCSizeIconCtrl) + //}}AFX_VIRTUAL + + // Generated message map functions +protected: + //{{AFX_MSG(cdxCSizeIconCtrl) + afx_msg void OnPaint(); + afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); + afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP(); + + // + // static members + // +public: + static AutoOEMImageList M_ilImage; + static HCURSOR M_hcSize; +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CDXCSIZEICONCTRL_H__9B4AD1C3_8AA5_11D2_BE9C_000000000000__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-big.gif b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-big.gif new file mode 100644 index 0000000000..76d580e04c Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-big.gif differ diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-small.gif b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-small.gif new file mode 100644 index 0000000000..7dd937f90f Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-small.gif differ diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC.html b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC.html new file mode 100644 index 0000000000..6b5798ff72 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC.html @@ -0,0 +1,303 @@ + + + + + + + + + + + + + +

+ +

cdxCDynamicWnd and +derived classes
+
by Hans Bühler : codex +design

+ +

documentation

+ +

[ preface | about | techniques +| a dynamic dialog | finally +]

+ +

1 | Preface, Definition

+ +
+

Definiton:
+ A dynamic window is a window that automatically + repositions its child controls when its size changes.
+ The opposite behaviour is called static.

+

The classes described here will help you implementing dynamic dialogs, + formviews, property sheets and control bars.

+

It replaces my former class tree "cdxCSizingDialog, ...".

+
+ +

2 | About this document

+ +
+

Since I found out that not many of you seem to like + reading documentation, I shortened this documentation.
+ If you have any suggestions, problems or questions that are + not covered by this text, feel free to write an email + to me.

+

As a result, I won't discuss all my member functions but + will give you a quick introduction in making windows dynamic.
+ The basic example will be a dialog.
+ The technique is nearly the same for property sheets, + formviews and control bars.

+

Here it is:

+
+

small window
+ (picture#1)

+
+
+ +
+

We want to make it dynamic i.e. it should + look like this if you change its size:

+
+

big window
+ (picture #2)

+
+
+ +

3 | Techniques

+ +
+

The cdxCDynamicWnd class is a base class of all the ready-to-use classes as + cdxCDynamicDialog.
+ To implement the resizing code, you need to tell the cdxCDynamicWnd object, + which of your child controls should react on a resizing of your windows and + how.

+ +

To do so, there are now two techniques:

+ +
    +
  • Using AddSzControl():
    +
    As you may know from my former cdxCSizing... classes, you use one of + the AddSzControl() overloads to make the dynamic window known to a child + window of it.
    + In the upper example window, you would add the following lines to your + OnInitDialog() code:
  • +
+
+
+
+

AddSzControl(IDC_BOX_1,mdResize,mdResize);
+ AddSzControl(IDC_LIST,mdResize,mdResize);
+ AddSzControl(IDC_EDIT,mdResize,mdRepos);
+ AddSzControl(IDC_NEW,mdRepos,mdRepos);
+ AddSzControl(IDOK,mdRelative,mdRepos);
+ AddSzControl(IDCANCEL,mdRelative,mdRepos);

+
+
+
    +
  • The first argument is the ID of the child control to make known to the + dynamic window (note that we do not assign IDC_CHECKBOX since this + control does not need to react on changes to the window's size).
  • +
  • The second argument defines how the control should be treated if the + window's width changes,
    + The third defines how to deal with height-changes:
    + You can choose among the following constants:
    + - mdNone (do nothing)
    + - mdRepos (move to left)
    + - mdResize (resize)
    + - mdRelative (keep relative position; e.g. keep centered if control was + centered before)
  • +
+

Among others, the following overloads of AddSzControl() are defined (the wnd + parameter might be either an ID or a HWND object while a CWnd casts properly + to a HWND):

+
+
+

AddSzControl(wnd, Mode mdX, Mode mdY);
+ AddSzXControl(wnd, Mode md);
+ AddSzYControl(hwnd, Mode md);

+
+
+

If you are not satisfied with my predefined modes, you can make your own:
+ The following overload takes two bytes for each direction: They defined how + much percent of the change in width should be added to the left side of the + the child control (x1) and to the right side (x2) (equally for + height changes):

+
+
+

AddSzControl(wnd, SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2);
+ AddSzXControl(wnd, SBYTE x1, SBYTE x2);
+ AddSzYControl(wnd, SBYTE y1, SBYTE y2); +

+

My predefined modes have the following values:
+ - mdNone is (x1=0,x2=0)
+ - mdRepos is (100,100)
+ - mdResize is (0,100)
+ - mdRelative is (50,50)

+
+
+

Depending on the base class you use the following functions are suitable + places to call AddSzControl():

+
    +
  • Dialog: OnInitDialog()
  • +
  • FormView: OnInitialUpdate()
  • +
  • PropPage: OnInitDialog()
  • +
+
+
    +
  • Using my new dynamic maps:
    +
    Some people noted that it is annoying to use the AddSzControl() method + since they don't need OnInitDialog() for example - only for the + AddSzControl() code.
    + Therefore I added the dynamic maps feature.
    + To use it, add the line DECLARE_DYNAMIC_MAP() to your class definition, + and add something like:
  • +
+
+
+

BEGIN_DYNAMIC_MAP(CTestDlg,cdxCDynamicDialog)
+     DYNAMIC_MAP_ENTRY(IDC_BOX_1, mdResize, mdResize)
+     DYNAMIC_MAP_ENTRY(IDC_LIST1, mdResize, mdResize)
+     DYNAMIC_MAP_ENTRY(IDC_EDIT, mdResize, mdRepos)
+     DYNAMIC_MAP_ENTRY(IDC_NEW, mdRepos, mdRepos)
+     DYNAMIC_MAP_ENTRY(IDOK, mdRelative, mdRepos)
+     DYNAMIC_MAP_ENTRY(IDCANCEL, mdRelative, mdRepos)
+ END_DYNAMIC_MAP()

+
+

If you compare these lines to the above AddSzControl() statements, you'll + note that they act similarily.
+ The following macros are defined:

+
+

DYNAMIC_MAP_ENTRY(ID,MODEX,MODEY)
+ DYNAMIC_MAP_XENTRY(ID,MODEX)
+ DYNAMIC_MAP_YENTRY(ID,MODEY)

+

DYNAMIC_MAP_ENTRY_EX(ID,X1,Y1,X2,Y2)
+ DYNAMIC_MAP_XENTRY_EX(ID,X1,X2)
+ DYNAMIC_MAP_YENTRY_EX(ID,Y1,Y2)

+
+
+
+ +

4 | Example: How to create a dynamic dialog

+ +
+
    +
  1. A dialog:
    + I suggest that you used your dialog resource editor + to design a dialog as shown in picture #1.
    + The names of the controls should indicate their + control IDs.
    + Important note #1: + Every control that should dynamically move need a + unique ID (=> it is not possible to move static + texts with IDC_STATIC). +
    +
    Moreoever, I assume that you have created a + dialog class called "CTestDlg" for this + dialog.
    +
    +
  2. +
  3. Resizable border and WS_CLIPCHILDREN for your dialog:
    +
    Please open your dialog's properties (in the + resource editor), go to the tab "Styles" + and change the "Border" into "resizing" + (otherwise use won't be able to resize your dialog + although it might be dynamic by code).
    + Then, switch to the first tab and activate "clip children".
    +
    + NOTE: If "clip children" is on and you use group + boxes, these boxes need the WS_EX_TRANSPARENT style (can be found + at the "extended styles" tab of the group box).
    + This is not a problem with these classes but with the MFC at all !
    +
    +
  4. +
  5. Changing the base-class of your dialog:
    + Open your dialog classes header file, add an
    + #include "cdxCDynamicDialog.h"
    + to its head and replace all "CDialog" by + "cdxCDynamicDialog" in both your header and + implementation file.
    +
    +
  6. +
  7. Define how childs should be moved:
    +
    Since this release, you can choose among the two techniques + described above to implement this behaviour (they can + be mixed if you need that).
    +
    + See above to learn how to do so.
    +
    +
  8. +
  9. Compile and run.
    +
    +
    +
  10. +
  11. Open your constructor and try to add  + + ModifyFlags(flSWPCopyBits,0)  to your code.
    + This is an anti-flickering option which does not work with all + childconstrols, unfortunately - thus you may need to disable it one + time.
    +
  12. +
+

Once your code runs, you can modify the behaviour of your class in many + ways.

+

The options you may want to make use of are:

+
    +
  • Disabling the size icon.
  • +
  • Setting a window's minimum and maximum size.
  • +
  • Advanced anti-flickering.
  • +
  • Advanced AddSzControl() code.
  • +
  • Virtual functions that you may like to overload for a more + sofisticated dynamic reaction.
  • +
  • Default resizing values and many more...
  • +
+

+ Check the flags, available to you, check functions and if you don't make it + work, drop a note to me.

+
+ +

5 | Finally

+
+

The classes described in this document have been written by

+
+

Hans Bühler, codex design (w)1997 - 2000
+ hans.buehler@topmail.de

+
+

You are free to use and modify the code and the classes but I would like + you to note the author (that's me :) in your product's documentation at any + place, if possible.
+ You use this code at your own risk.
+ Any damange caused by the use or misuse of this code is the sole + responsibility of the user.

+

[ back to top of this document ]

+
+ + + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.cpp new file mode 100644 index 0000000000..1a21d7eb54 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.cpp @@ -0,0 +1,70 @@ +#include "StdAfx.h" +#include "ListCtrlFormatter.h" +#include + + +ListCtrlFormatter::ListCtrlFormatter( CListCtrl &list ) : + m_List( list ), + m_nColNo( 0 ) +{ +} + + +ListCtrlFormatter::~ListCtrlFormatter() +{ +} + + +void +ListCtrlFormatter::AddColumn( CString strHeading, + int nWidth, + int nFormat, + int nSubItemNo ) +{ + LVCOLUMN column; + column.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH; + column.cx = nWidth; + column.fmt = nFormat; + column.pszText = strHeading.GetBuffer( strHeading.GetLength() ); + column.iSubItem = nSubItemNo == -1 ? m_nColNo : nSubItemNo; + column.iImage = 0; + column.iOrder = 0; + VERIFY( m_List.InsertColumn( m_nColNo++, &column ) >= 0 ); + strHeading.ReleaseBuffer(); +/* + VERIFY( m_List.InsertColumn( m_nColNo++, + strHeading, + nFormat, + nWidth, + nSubItemNo ) >= 0 ); +*/ + } + + +void +ListCtrlFormatter::AddColumn( const std::string &strHeading, + int nWidth, + int nFormat, + int nSubItemNo ) +{ + AddColumn( CString( strHeading.c_str() ), nWidth, nFormat, nSubItemNo ); +} + + +void +ListCtrlFormatter::AddColumn( UINT nIdStringHeading, + int nWidth, + int nFormat, + int nSubItemNo ) +{ + CString strHeading; + VERIFY( strHeading.LoadString( nIdStringHeading ) ); + AddColumn( strHeading, nWidth, nFormat, nSubItemNo ); +} + + +int +ListCtrlFormatter::GetNextColumnIndex() const +{ + return m_nColNo; +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.h new file mode 100644 index 0000000000..badb7aab92 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.h @@ -0,0 +1,71 @@ +#ifndef LISTCTRLFORMATTER_H +#define LISTCTRLFORMATTER_H + +#include + +/*! \brief Helper to setup ListCtrl columns format. + */ +class ListCtrlFormatter +{ +public: + /*! + * Constructor. + * \param list List control to setup. + */ + ListCtrlFormatter( CListCtrl &list ); + + /*! + * Destructeur. + */ + virtual ~ListCtrlFormatter(); + + /*! Adds a column to the list control. + * \param strHeading Column title. + * \param nWidth Column width in pixel. (-1 if not defined). + * \param nFormat Text alignment (LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_CENTER). + * \param nSubItemNo Index of the sub-item associates to the column. + */ + void AddColumn( const std::string &strHeading, + int nWidth =-1, + int nFormat = LVCFMT_LEFT, + int nSubItemNo =-1 ); + + /*! Adds a column to the list control. + * \param strHeading Column title. + * \param nWidth Column width in pixel. (-1 if not defined). + * \param nFormat Text alignment (LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_CENTER). + * \param nSubItemNo Index of the sub-item associates to the column. + */ + void AddColumn( CString strHeading, + int nWidth =-1, + int nFormat = LVCFMT_LEFT, + int nSubItemNo =-1 ); + + /*! Adds a column to the list control. + * \param nIdStringHeading Resource ID of the column title string (IDS_xxx). + * \param nWidth Column width in pixel. (-1 if not defined). + * \param nFormat Text alignment (LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_CENTER). + * \param nSubItemNo Index of the sub-item associates to the column. + */ + void AddColumn( UINT nIdStringHeading, + int nWidth =-1, + int nFormat = LVCFMT_LEFT, + int nSubItemNo =-1 ); + + /*! Gets the sub item index of the next column. + * \return Sub item index of the next column, starting with 0. + */ + int GetNextColumnIndex() const; + +private: + /*! Associated list control. + */ + CListCtrl &m_List; + + /*! Next column number. + */ + int m_nColNo; +}; + + +#endif //WILLISTCTRLFORMATTER_H diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.cpp new file mode 100644 index 0000000000..ea25f9435c --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.cpp @@ -0,0 +1,115 @@ +#include "StdAfx.h" +#include "ListCtrlSetter.h" + + +ListCtrlSetter::ListCtrlSetter( CListCtrl &list ) : + m_List( list ), + m_nLineNo( -1 ) +{ +} + + +ListCtrlSetter::~ListCtrlSetter() +{ +} + + +void +ListCtrlSetter::modifyLine( int nLineNo ) +{ + editLine( nLineNo, nLineNo >= m_List.GetItemCount() ); +} + + +void +ListCtrlSetter::addLine() +{ + editLine( m_List.GetItemCount(), true ); +} + + +void +ListCtrlSetter::insertLine( int nLineNo ) +{ + editLine( nLineNo, true ); +} + + +void +ListCtrlSetter::editLine( int nLineNo, + bool bInsertLine ) +{ + m_nLineNo = nLineNo; + m_bInsertLine = bInsertLine; + m_nNextSubItem = 0; +} + + +void +ListCtrlSetter::addSubItem( const CString &strText ) +{ + doAddSubItem( LVIF_TEXT, strText, 0 ); +} + + +void +ListCtrlSetter::addSubItem( const CString &strText, + void *lParam ) +{ + doAddSubItem( LVIF_TEXT | LVIF_PARAM, strText, 0, lParam ); +} + + +void +ListCtrlSetter::addSubItem( const CString &strText, + int nImage ) +{ + doAddSubItem( LVIF_TEXT | LVIF_IMAGE, strText, nImage ); +} + + +void +ListCtrlSetter::addSubItem( const CString &strText, + void *lParam, + int nImage ) +{ + doAddSubItem( LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM, strText, 0, lParam ); +} + + +void +ListCtrlSetter::doAddSubItem( UINT nMask, + CString strText, + int nImage, + void *lParam ) +{ + int textLength = strText.GetLength(); + + LVITEM item; + item.mask = nMask; + item.pszText = strText.GetBuffer( textLength ); + item.cchTextMax = textLength; + item.iImage = nImage; + item.lParam = (LPARAM)lParam; + item.iItem = m_nLineNo; + item.iSubItem = m_nNextSubItem++; + if ( m_nNextSubItem == 1 && + m_bInsertLine ) // First item & new line + { + m_nLineNo = m_List.InsertItem( &item ); + VERIFY( m_nLineNo >= 0 ); + } + else + { + VERIFY( m_List.SetItem( &item ) ); + } + + strText.ReleaseBuffer(); +} + + +int +ListCtrlSetter::getLineNo() const +{ + return m_nLineNo; +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.h new file mode 100644 index 0000000000..1965a797ec --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.h @@ -0,0 +1,90 @@ +#ifndef LISTCTRLSETTER_H +#define LISTCTRLSETTER_H + +#include + + +/*! \brief Helper to set up the content of a list control. + */ +class ListCtrlSetter +{ +public: + /*! + * Constructor. + * \param list List control to fill. + */ + ListCtrlSetter( CListCtrl &list ); + + /*! + * Destructor. + */ + virtual ~ListCtrlSetter(); + + + /*! Modifies the specified line. + * \param nLineNo number of the line to modify. + */ + void modifyLine( int nLineNo ); + + /*! Adds a new line at the end of the list. + */ + void addLine(); + + /*! Insert a new line in the list. + * \param nLineNo Line number before the new line is insert. + */ + void insertLine( int nLineNo ); + + + void addSubItem( const CString &strText ); + + void addSubItem( const CString &strText, void *lParam ); + + void addSubItem( const CString &strText, int nImage ); + + void addSubItem( const CString &strText, void *lParam, int nImage ); + + /*! Gets the number of the line being modified. + * \return Number of the line being modified. + */ + int getLineNo() const; + +private: + /*! Edit a line. + * \param nLineNo Number of the line to edit. + * \param bInsertLine \c true if the line is inserted, \c false if it is modified. + */ + void editLine( int nLineNo, + bool bInsertLine ); + + /*! Add a sub-item. + * \param nMask Mask LV_IF... to set. + * \param strText Sub-item Text. + * \param nImage Image number. + * \param lParam Item data pointer. + */ + void doAddSubItem( UINT nMask, + CString strText, + int nImage, + void *lParam =NULL ); + +private: + /*! List control which content is being set up. + */ + CListCtrl &m_List; + + /*! Current line number (line being edited). + */ + int m_nLineNo; + + /*! Line should be inserted ? + */ + bool m_bInsertLine; + + /*! Next sub-item number. + */ + int m_nNextSubItem; +}; + + +#endif //LISTCTRLSETTER_H diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcSynchronizationObject.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcSynchronizationObject.h new file mode 100644 index 0000000000..34a6aa4cc5 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcSynchronizationObject.h @@ -0,0 +1,39 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file LightweightSynchronizationObject.h for class LightweightSynchronizationObject +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2002/02/27 +// ////////////////////////////////////////////////////////////////////////// +#ifndef LIGHTWEIGHTSYNCHRONIZATIONOBJECT_H +#define LIGHTWEIGHTSYNCHRONIZATIONOBJECT_H + +#include + + +/*! \class LightweightSynchronizationObject + * \brief This class represents a lock object for synchronized object. + */ +class MfcSynchronizationObject + : public CPPUNIT_NS::SynchronizedObject::SynchronizationObject +{ + CCriticalSection m_syncObject; + +public: + void lock() + { + m_syncObject.Lock(); + } + + void unlock() + { + m_syncObject.Unlock(); + } +}; + + + +// Inlines methods for LightweightSynchronizationObject: +// ----------------------------------------------------- + + + +#endif // LIGHTWEIGHTSYNCHRONIZATIONOBJECT_H diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcTestRunner.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcTestRunner.cpp new file mode 100644 index 0000000000..0d383a16ff --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcTestRunner.cpp @@ -0,0 +1,79 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file MfcTestRunner.cpp for class MfcTestRunner +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/04/26 +// ////////////////////////////////////////////////////////////////////////// + +#include "StdAfx.h" +#include +#include +#include "TestRunnerModel.h" +#include "TestRunnerDlg.h" + + + +CPPUNIT_NS_BEGIN + + +MfcTestRunner::MfcTestRunner() + : m_suite( new CPPUNIT_NS::TestSuite() ) +{ +} + + +MfcTestRunner::~MfcTestRunner() +{ + delete m_suite; + + for ( Tests::iterator it = m_tests.begin(); it != m_tests.end(); ++it ) + delete *it; +} + + +void +MfcTestRunner::run() +{ + bool comInit = SUCCEEDED( CoInitialize( NULL) ); + + TestRunnerModel model( getRootTest() ); + TestRunnerDlg dlg( &model ); + dlg.DoModal (); + + if ( comInit) + CoUninitialize(); +} + + +void +MfcTestRunner::addTest( CPPUNIT_NS::Test *test ) +{ + m_tests.push_back( test ); +} + + +void +MfcTestRunner::addTests( const CppUnitVector &tests ) +{ + for ( Tests::const_iterator it=tests.begin(); + it != tests.end(); + ++it ) + { + addTest( *it ); + } +} + + +CPPUNIT_NS::Test * +MfcTestRunner::getRootTest() +{ + if ( m_tests.size() != 1 ) + { + for ( Tests::iterator it = m_tests.begin(); it != m_tests.end(); ++it ) + m_suite->addTest( *it ); + m_tests.clear(); + return m_suite; + } + return m_tests[0]; +} + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.cpp new file mode 100644 index 0000000000..9d437a7091 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.cpp @@ -0,0 +1,63 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file MostRecentTests.cpp for class MostRecentTests +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/06/27 +// ////////////////////////////////////////////////////////////////////////// + +#include "StdAfx.h" +#include "MostRecentTests.h" +#include + + +MostRecentTests::MostRecentTests() +{ +} + + +MostRecentTests::~MostRecentTests() +{ +} + + +void +MostRecentTests::setLastTestRun( CPPUNIT_NS::Test *test ) +{ + for ( TestRuns::iterator it = m_runs.begin(); it != m_runs.end(); ++it ) + { + if ( it->second == test ) + { + m_runs.erase( it ); + break; + } + } + + if ( test != NULL ) + m_runs.push_front( TestRun( test->getName(), test ) ); +} + + +CPPUNIT_NS::Test * +MostRecentTests::lastTestRun() const +{ + return m_runs.front().second; +} + + +int +MostRecentTests::getRunCount() const +{ + return m_runs.size(); +} + + +CPPUNIT_NS::Test * +MostRecentTests::getTestAt( int indexTest ) const +{ + return m_runs.at( indexTest ).second; +} + +std::string +MostRecentTests::getTestNameAt( int indexTest ) const +{ + return m_runs.at( indexTest ).first; +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.h new file mode 100644 index 0000000000..339c3b7ebe --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.h @@ -0,0 +1,50 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file MostRecentTests.h for class MostRecentTests +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/06/27 +// ////////////////////////////////////////////////////////////////////////// +#ifndef MOSTRECENTTESTS_H +#define MOSTRECENTTESTS_H + +#include +#include +#include + + +/*! \class MostRecentTests + * \brief This class represents a list of the tests most recently run. + */ +class MostRecentTests +{ +public: + /*! Constructs a MostRecentTests object. + */ + MostRecentTests(); + + /*! Destructor. + */ + virtual ~MostRecentTests(); + + void setLastTestRun( CPPUNIT_NS::Test *test ); + CPPUNIT_NS::Test *lastTestRun() const; + + int getRunCount() const; + CPPUNIT_NS::Test *getTestAt( int indexTest ) const; + std::string getTestNameAt( int indexTest ) const; + + +private: + /// Prevents the use of the copy constructor. + MostRecentTests( const MostRecentTests © ); + + /// Prevents the use of the copy operator. + void operator =( const MostRecentTests © ); + +private: + typedef std::pair TestRun; + typedef std::deque TestRuns; + TestRuns m_runs; +}; + + +#endif // MOSTRECENTTESTS_H diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.cpp new file mode 100644 index 0000000000..0cf565e8dc --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.cpp @@ -0,0 +1,93 @@ +// MsDevCallerListCtrl.cpp : implementation file +// + +#include "stdafx.h" +#include + +#include "MsDevCallerListCtrl.h" +#include +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// MsDevCallerListCtrl + + + +MsDevCallerListCtrl::MsDevCallerListCtrl() + : m_lineNumberSubItem( 3 ) + , m_fileNameSubItem( 4 ) +{ + m_comInitialized = SUCCEEDED( CoInitialize(NULL) ); +} + +MsDevCallerListCtrl::~MsDevCallerListCtrl() +{ + if ( m_comInitialized ) + CoUninitialize(); +} + + +void +MsDevCallerListCtrl::setLineNumberSubItem( int subItemIndex ) +{ + m_lineNumberSubItem = subItemIndex; +} + + +void +MsDevCallerListCtrl::setFileNameSubItem( int fileNameItemIndex ) +{ + m_fileNameSubItem = fileNameItemIndex; +} + + +BEGIN_MESSAGE_MAP(MsDevCallerListCtrl, CListCtrl) + //{{AFX_MSG_MAP(MsDevCallerListCtrl) + ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// MsDevCallerListCtrl message handlers + +void MsDevCallerListCtrl::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) +{ + HRESULT hr = S_OK; + int hotItem = 0; + + CComPtr< ITestRunnerDSPlugin> pIDSPlugin; + + hr = CoCreateInstance( CLSID_DSAddIn, NULL, CLSCTX_LOCAL_SERVER, IID_ITestRunnerDSPlugin, + reinterpret_cast< void**>(&pIDSPlugin)); + + if ( SUCCEEDED( hr)) + { + CPoint pt; + UINT flags = 0; + CString lineNumber, fileName; + + GetCursorPos( &pt); + ScreenToClient( &pt); + + // some dirty hack to get some selection + // should get the border-width + 1, but WINDOWINFO + // is not supported in Win95 + pt.x = 5; + + hotItem = HitTest( pt, &flags); + + lineNumber = GetItemText( hotItem, m_lineNumberSubItem); + fileName = GetItemText( hotItem, m_fileNameSubItem); + + pIDSPlugin->goToLineInSourceCode( CComBSTR( fileName), _ttoi( lineNumber)); + + } + + *pResult = 0; +} \ No newline at end of file diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.h new file mode 100644 index 0000000000..cf63edd0bb --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.h @@ -0,0 +1,56 @@ +#if !defined(AFX_MSDEVCALLERLISTCTRL_H__4B5EE0C1_D251_45CF_BBD1_D5003C80B238__INCLUDED_) +#define AFX_MSDEVCALLERLISTCTRL_H__4B5EE0C1_D251_45CF_BBD1_D5003C80B238__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// MsDevCallerListCtrl.h : header file +// + +///////////////////////////////////////////////////////////////////////////// +// MsDevCallerListCtrl window + +class MsDevCallerListCtrl : public CListCtrl +{ +// Construction +public: + MsDevCallerListCtrl(); + + void setLineNumberSubItem( int subItemIndex ); + void setFileNameSubItem( int fileNameItemIndex ); + +// Attributes +public: + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(MsDevCallerListCtrl) + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~MsDevCallerListCtrl(); + + // Generated message map functions +protected: + //{{AFX_MSG(MsDevCallerListCtrl) + afx_msg void OnDblclk(NMHDR* pNMHDR, LRESULT* pResult); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() + +private: + int m_lineNumberSubItem; + int m_fileNameSubItem; + bool m_comInitialized; +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_MSDEVCALLERLISTCTRL_H__4B5EE0C1_D251_45CF_BBD1_D5003C80B238__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.cpp new file mode 100644 index 0000000000..9cb0f99797 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.cpp @@ -0,0 +1,185 @@ +#include "stdafx.h" +#include "ProgressBar.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +ProgressBar::ProgressBar() + : m_error( false ) + , m_total( 0 ) + , m_progress( 0 ) + , m_progressX( 0 ) +{ +} + + +ProgressBar::~ProgressBar() +{ +} + + +BEGIN_MESSAGE_MAP(ProgressBar, CWnd) + //{{AFX_MSG_MAP(ProgressBar) + ON_WM_PAINT() + ON_WM_SIZE() + ON_WM_ERASEBKGND() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + + +void +ProgressBar::OnPaint() +{ + CPaintDC dc(this); // device context for painting + paint( dc ); +} + + +// Paint the progress bar in response to a paint message +void +ProgressBar::paint( CDC &dc ) +{ + paintBackground( dc ); + paintStatus( dc ); +} + + +// Paint the background of the progress bar region +void +ProgressBar::paintBackground( CDC &dc ) +{ + CBrush brshBackground; + CPen penGray( PS_SOLID, 1, RGB (128, 128, 128) ); + CPen penWhite( PS_SOLID, 1, RGB (255, 255, 255) ); + + VERIFY( brshBackground.CreateSolidBrush( ::GetSysColor (COLOR_BTNFACE) ) ); + + dc.FillRect( m_bounds, &brshBackground ); + + CPen *pOldPen = dc.SelectObject( &penGray ); + int xRight = m_bounds.left + m_bounds.Width() -1; + int yBottom = m_bounds.top + m_bounds.Height() -1; + { + dc.MoveTo( m_bounds.left, m_bounds.top ); + dc.LineTo( xRight, m_bounds.top ); + + dc.MoveTo( m_bounds.left, m_bounds.top ); + dc.LineTo( m_bounds.left, yBottom ); + } + + dc.SelectObject( &penWhite ); + { + dc.MoveTo( xRight, m_bounds.top ); + dc.LineTo( xRight, yBottom ); + + dc.MoveTo( m_bounds.left, yBottom ); + dc.LineTo( xRight, yBottom ); + } + + dc.SelectObject( pOldPen ); +} + + +// Paint the actual status of the progress bar +void +ProgressBar::paintStatus( CDC &dc ) +{ + if ( m_progress <= 0 ) + return; + + CBrush brshStatus; + CRect rect( m_bounds.left, m_bounds.top, + m_bounds.left + m_progressX, m_bounds.bottom ); + + COLORREF statusColor = getStatusColor(); + + VERIFY( brshStatus.CreateSolidBrush( statusColor ) ); + + rect.DeflateRect( 1, 1 ); + dc.FillRect( rect, &brshStatus ); +} + + +// Paint the current step +void +ProgressBar::paintStep( int startX, + int endX ) +{ + CRect redrawBounds( m_bounds.left + startX-1, m_bounds.top, + m_bounds.left + endX, m_bounds.bottom ); + RedrawWindow( redrawBounds ); +} + + +// Setup the progress bar for execution over a total number of steps +void +ProgressBar::start( int total ) +{ + m_total = total; + reset (); +} + + +// Take one step, indicating whether it was a successful step +void +ProgressBar::step( bool successful ) +{ + m_progress++; + + int x = m_progressX; + + m_progressX = scale (m_progress); + + if ( !m_error && !successful ) + { + m_error = true; + x = 1; + } + + paintStep( x, m_progressX ); +} + + +// Map from steps to display units +int +ProgressBar::scale( int value ) +{ + if ( m_total > 0 ) + return max( 1, value * (m_bounds.Width() - 1) / m_total ); + + return value; +} + + +// Reset the progress bar +void +ProgressBar::reset() +{ + m_progressX = 1; + m_progress = 0; + m_error = false; + + RedrawWindow( m_bounds ); + UpdateWindow( ); +} + + +void +ProgressBar::OnSize(UINT nType, int cx, int cy) +{ + CWnd::OnSize(nType, cx, cy); + + GetClientRect( &m_bounds ); + m_progressX = scale (m_progress); + Invalidate(); +} + + +BOOL +ProgressBar::OnEraseBkgnd( CDC *pDC ) +{ + return FALSE; +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.h new file mode 100644 index 0000000000..0fb89e0af8 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.h @@ -0,0 +1,71 @@ +#if !defined(AFX_PROGRESSBAR_H__F2CB2DBB_467B_4978_829B_CAD101EA4B8A__INCLUDED_) +#define AFX_PROGRESSBAR_H__F2CB2DBB_467B_4978_829B_CAD101EA4B8A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + + +class ProgressBar : public CWnd +{ +public: + ProgressBar(); + virtual ~ProgressBar(); + + void step( bool successful ); + + int scale( int value ); + + void reset(); + + void start( int total ); + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(ProgressBar) + //}}AFX_VIRTUAL + +protected: + //{{AFX_MSG(ProgressBar) + afx_msg void OnPaint(); + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg BOOL OnEraseBkgnd(CDC* pDC); + //}}AFX_MSG + DECLARE_MESSAGE_MAP(); + + +protected: + void paint( CDC &dc ); + + void paintBackground( CDC &dc ); + + void paintStatus( CDC &dc ); + + COLORREF getStatusColor(); + + void paintStep( int startX, + int endX ); + +private: + CRect m_bounds; + bool m_error; + int m_total; + int m_progress; + int m_progressX; +}; + + + +// Get the current color +inline COLORREF +ProgressBar::getStatusColor () +{ + return m_error ? RGB (255, 0, 0) : + RGB (0, 255, 0); +} + + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_PROGRESSBAR_H__F2CB2DBB_467B_4978_829B_CAD101EA4B8A__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/Resource.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/Resource.h new file mode 100644 index 0000000000..4b3ef4cad5 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/Resource.h @@ -0,0 +1,47 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by TestRunner.rc +// +#define IDS_ERROR_SELECT_TEST 1 +#define IDS_ERRORLIST_TYPE 2 +#define IDS_ERRORLIST_NAME 3 +#define IDS_ERRORLIST_FAILED_CONDITION 4 +#define IDS_ERRORLIST_LINE_NUMBER 5 +#define IDS_ERRORLIST_FILE_NAME 6 +#define IDS_STRING7 100 +#define IDR_ACCELERATOR_TEST_RUNNER 131 +#define IDC_LIST 1000 +#define ID_RUN 1001 +#define ID_STOP 1002 +#define IDC_PROGRESS 1003 +#define IDC_INDICATOR 1004 +#define IDC_COMBO_TEST 1005 +#define IDC_STATIC_RUNS 1007 +#define IDC_STATIC_ERRORS 1008 +#define IDC_STATIC_FAILURES 1009 +#define IDC_EDIT_TIME 1010 +#define IDC_BUTTON1 1011 +#define IDC_BROWSE_TEST 1011 +#define IDC_TREE_TEST 1012 +#define IDC_DETAILS 1012 +#define IDC_CHECK_AUTORUN 1013 +#define IDC_RUNNING_TEST_CASE_LABEL 1016 +#define IDC_STATIC_TEST_NAME 1017 +#define IDC_STATIC_PROGRESS 1018 +#define IDC_STATIC_LABEL_RUNS 1019 +#define IDC_STATIC_LABEL_ERRORS 1020 +#define IDC_STATIC_LABEL_FAILURES 1021 +#define IDC_STATIC_PROGRESS_BAR 1022 +#define IDC_STATIC_DETAILS 1023 +#define ID_QUIT_APPLICATION 32771 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 134 +#define _APS_NEXT_COMMAND_VALUE 32772 +#define _APS_NEXT_CONTROL_VALUE 1024 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.cpp new file mode 100644 index 0000000000..88699dae8c --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.cpp @@ -0,0 +1,34 @@ +#include "stdafx.h" + +#include "ResourceLoaders.h" + +extern HINSTANCE g_testRunnerResource; + +CString loadCString(UINT stringId) +{ + CString string; + + HRSRC stringRes = ::FindResource( g_testRunnerResource, + MAKEINTRESOURCE( (stringId>>4) + 1), + RT_STRING ); + if ( stringRes ) + { + int stringLen = ::SizeofResource( g_testRunnerResource, + stringRes) / sizeof(TCHAR); + if (stringLen > 0) + { + LPTSTR stringBuffer = string.GetBuffer( stringLen+2 ); + int realStringLen = ::LoadString( g_testRunnerResource, + stringId, + stringBuffer, + (stringLen+1)*2 ); + string.ReleaseBuffer( realStringLen ); + + ASSERT(realStringLen > 0); + } + } + + ASSERT( !string.IsEmpty() ); + return string; +} + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.h new file mode 100644 index 0000000000..b273e4029e --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.h @@ -0,0 +1,7 @@ +#if !defined(AFX_RESOURCELOADERS_H) +#define AFX_RESOURCELOADERS_H + +/// loads a CString from the test runner DLL module +CString loadCString(UINT stringId); + +#endif // !defined(AFX_RESOURCELOADERS_H) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.cpp new file mode 100644 index 0000000000..e41bdff1be --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.cpp @@ -0,0 +1,6 @@ +// stdafx.cpp : source file that includes just the standard includes +// TestRunner.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.h new file mode 100644 index 0000000000..eda080582b --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.h @@ -0,0 +1,43 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__D15A539F_17E8_11D2_A49B_00805FC1C042__INCLUDED_) +#define AFX_STDAFX_H__D15A539F_17E8_11D2_A49B_00805FC1C042__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#pragma warning( disable : 4786 ) // warning of hell: debug symbol too long... + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include // MFC core and standard components +#include // MFC extensions + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC OLE classes +#include // MFC OLE dialog classes +#include // MFC OLE automation classes +#endif // _AFX_NO_OLE_SUPPORT + + +#ifndef _AFX_NO_DB_SUPPORT +#include // MFC ODBC database classes +#endif // _AFX_NO_DB_SUPPORT + +#ifndef _AFX_NO_DAO_SUPPORT +#include // MFC DAO database classes +#endif // _AFX_NO_DAO_SUPPORT + +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__D15A539F_17E8_11D2_A49B_00805FC1C042__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/SynchronizedTestResult.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/SynchronizedTestResult.h new file mode 100644 index 0000000000..322c3bad4f --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/SynchronizedTestResult.h @@ -0,0 +1,106 @@ +#ifndef SYNCHRONIZEDTESTRESULTDECORATOR_H +#define SYNCHRONIZEDTESTRESULTDECORATOR_H + +#include +#include "TestResultDecorator.h" + +class SynchronizedTestResult : public TestResultDecorator +{ +public: + SynchronizedTestResult (TestResult *result); + ~SynchronizedTestResult (); + + + bool shouldStop (); + void addError (Test *test, CppUnitException *e); + void addFailure (Test *test, CppUnitException *e); + void startTest (Test *test); + void endTest (Test *test); + int runTests (); + int testErrors (); + int testFailures (); + bool wasSuccessful (); + void stop (); + + vector& errors (); + vector& failures (); + +private: + CCriticalSection m_criticalSection; + +}; + + +// Constructor +inline SynchronizedTestResult::SynchronizedTestResult (TestResult *result) +: TestResultDecorator (result) {} + +// Destructor +inline SynchronizedTestResult::~SynchronizedTestResult () +{} + +// Returns whether the test should stop +inline bool SynchronizedTestResult::shouldStop () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->shouldStop (); } + + +// Adds an error to the list of errors. The passed in exception +// caused the error +inline void SynchronizedTestResult::addError (Test *test, CppUnitException *e) +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->addError (test, e); } + + +// Adds a failure to the list of failures. The passed in exception +// caused the failure. +inline void SynchronizedTestResult::addFailure (Test *test, CppUnitException *e) +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->addFailure (test, e); } + + +// Informs the result that a test will be started. +inline void SynchronizedTestResult::startTest (Test *test) +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->startTest (test); } + + +// Informs the result that a test was completed. +inline void SynchronizedTestResult::endTest (Test *test) +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->endTest (test); } + + +// Gets the number of run tests. +inline int SynchronizedTestResult::runTests () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->runTests (); } + + +// Gets the number of detected errors. +inline int SynchronizedTestResult::testErrors () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->testErrors (); } + + +// Gets the number of detected failures. +inline int SynchronizedTestResult::testFailures () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->testFailures (); } + + +// Returns whether the entire test was successful or not. +inline bool SynchronizedTestResult::wasSuccessful () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->wasSuccessful (); } + + +// Marks that the test run should stop. +inline void SynchronizedTestResult::stop () +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->stop (); } + + +// Returns a vector of the errors. +inline vector& SynchronizedTestResult::errors () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->errors (); } + + +// Returns a vector of the failures. +inline vector& SynchronizedTestResult::failures () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->failures (); } + + +#endif + + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestResultDecorator.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestResultDecorator.h new file mode 100644 index 0000000000..af2362c29c --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestResultDecorator.h @@ -0,0 +1,102 @@ +#ifndef CPP_UNIT_TESTRESULTDECORATOR_H +#define CPP_UNIT_TESTRESULTDECORATOR_H + +#include "TestResult.h" + +class TestResultDecorator +{ +public: + TestResultDecorator (TestResult *result); + virtual ~TestResultDecorator (); + + + virtual bool shouldStop (); + virtual void addError (Test *test, CppUnitException *e); + virtual void addFailure (Test *test, CppUnitException *e); + virtual void startTest (Test *test); + virtual void endTest (Test *test); + virtual int runTests (); + virtual int testErrors (); + virtual int testFailures (); + virtual bool wasSuccessful (); + virtual void stop (); + + vector& errors (); + vector& failures (); + +protected: + TestResult *m_result; +}; + + +inline TestResultDecorator::TestResultDecorator (TestResult *result) +: m_result (result) {} + +inline TestResultDecorator::~TestResultDecorator () +{} + +// Returns whether the test should stop +inline bool TestResultDecorator::shouldStop () +{ return m_result->shouldStop (); } + + +// Adds an error to the list of errors. The passed in exception +// caused the error +inline void TestResultDecorator::addError (Test *test, CppUnitException *e) +{ m_result->addError (test, e); } + + +// Adds a failure to the list of failures. The passed in exception +// caused the failure. +inline void TestResultDecorator::addFailure (Test *test, CppUnitException *e) +{ m_result->addFailure (test, e); } + + +// Informs the result that a test will be started. +inline void TestResultDecorator::startTest (Test *test) +{ m_result->startTest (test); } + + +// Informs the result that a test was completed. +inline void TestResultDecorator::endTest (Test *test) +{ m_result->endTest (test); } + + +// Gets the number of run tests. +inline int TestResultDecorator::runTests () +{ return m_result->runTests (); } + + +// Gets the number of detected errors. +inline int TestResultDecorator::testErrors () +{ return m_result->testErrors (); } + + +// Gets the number of detected failures. +inline int TestResultDecorator::testFailures () +{ return m_result->testFailures (); } + + +// Returns whether the entire test was successful or not. +inline bool TestResultDecorator::wasSuccessful () +{ return m_result->wasSuccessful (); } + + +// Marks that the test run should stop. +inline void TestResultDecorator::stop () +{ m_result->stop (); } + + +// Returns a vector of the errors. +inline vector& TestResultDecorator::errors () +{ return m_result->errors (); } + + +// Returns a vector of the failures. +inline vector& TestResultDecorator::failures () +{ return m_result->failures (); } + + +#endif + + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.def b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.def new file mode 100644 index 0000000000..d2eaca0d95 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.def @@ -0,0 +1,7 @@ +; TestRunner.def : Declares the module parameters for the DLL. + +;LIBRARY "TestRunner" +DESCRIPTION 'TestRunner Windows Dynamic Link Library' + +EXPORTS + ; Explicit exports can go here diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.dsp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.dsp new file mode 100644 index 0000000000..271d43b29d --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.dsp @@ -0,0 +1,458 @@ +# Microsoft Developer Studio Project File - Name="TestRunner" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=TestRunner - Win32 Debug Unicode +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "TestRunner.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "TestRunner.mak" CFG="TestRunner - Win32 Debug Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "TestRunner - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "TestRunner - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "TestRunner - Win32 Release Unicode" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "TestRunner - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "TestRunner - Win32 Release" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_AFXEXT" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "OEMRESOURCE" /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 ..\..\..\lib\cppunit.lib winmm.lib /nologo /subsystem:windows /dll /machine:I386 /def:".\TestRunner.def" +# SUBTRACT LINK32 /pdb:none +# Begin Special Build Tool +TargetDir=.\Release +TargetPath=.\Release\TestRunner.dll +TargetName=TestRunner +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).dll copy $(TargetDir)\$(TargetName).lib ..\..\..\lib\$(TargetName).lib +# End Special Build Tool + +!ELSEIF "$(CFG)" == "TestRunner - Win32 Debug" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_AFXEXT" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "OEMRESOURCE" /FR /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\..\..\lib\cppunitd.lib winmm.lib /nologo /subsystem:windows /dll /debug /machine:I386 /def:".\TestRunner.def" /out:"Debug\testrunnerd.dll" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none +# Begin Special Build Tool +TargetDir=.\Debug +TargetPath=.\Debug\testrunnerd.dll +TargetName=testrunnerd +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).dll copy $(TargetDir)\$(TargetName).lib ..\..\..\lib\$(TargetName).lib +# End Special Build Tool + +!ELSEIF "$(CFG)" == "TestRunner - Win32 Release Unicode" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "TestRunner___Win32_Release_Unicode" +# PROP BASE Intermediate_Dir "TestRunner___Win32_Release_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseUnicode" +# PROP Intermediate_Dir "ReleaseUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_AFXEXT" /D "WIN32" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_UNICODE" /D "_AFXEXT" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "OEMRESOURCE" /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ..\..\..\lib\cppunit.lib winmm.lib /nologo /subsystem:windows /dll /machine:I386 /def:".\TestRunner.def" /out:"..\..\..\lib\testrunner.dll" /implib:"..\..\..\lib\testrunner.lib" +# SUBTRACT BASE LINK32 /pdb:none +# ADD LINK32 ..\..\..\lib\cppunit.lib winmm.lib /nologo /subsystem:windows /dll /machine:I386 /def:".\TestRunner.def" /out:"ReleaseUnicode\testrunneru.dll" +# SUBTRACT LINK32 /pdb:none +# Begin Special Build Tool +TargetDir=.\ReleaseUnicode +TargetPath=.\ReleaseUnicode\testrunneru.dll +TargetName=testrunneru +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).dll copy $(TargetDir)\$(TargetName).lib ..\..\..\lib\$(TargetName).lib +# End Special Build Tool + +!ELSEIF "$(CFG)" == "TestRunner - Win32 Debug Unicode" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "TestRunner___Win32_Debug_Unicode" +# PROP BASE Intermediate_Dir "TestRunner___Win32_Debug_Unicode" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugUnicode" +# PROP Intermediate_Dir "DebugUnicode" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_AFXEXT" /D "WIN32" /FR /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_UNICODE" /D "_AFXEXT" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "OEMRESOURCE" /FR /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ..\..\..\lib\cppunitd.lib winmm.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"..\..\..\lib\testrunnerd.dll" /implib:"..\..\..\lib\testrunnerd.lib" /pdbtype:sept +# SUBTRACT BASE LINK32 /profile /pdb:none /map +# ADD LINK32 ..\..\..\lib\cppunitd.lib winmm.lib /nologo /subsystem:windows /dll /debug /machine:I386 /def:".\TestRunner.def" /out:"DebugUnicode\testrunnerud.dll" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none +# Begin Special Build Tool +TargetDir=.\DebugUnicode +TargetPath=.\DebugUnicode\testrunnerud.dll +TargetName=testrunnerud +SOURCE="$(InputPath)" +PostBuild_Desc=Copying target to lib/ +PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).dll copy $(TargetDir)\$(TargetName).lib ..\..\..\lib\$(TargetName).lib +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "TestRunner - Win32 Release" +# Name "TestRunner - Win32 Debug" +# Name "TestRunner - Win32 Release Unicode" +# Name "TestRunner - Win32 Debug Unicode" +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\res\errortype.bmp +# End Source File +# Begin Source File + +SOURCE=.\res\test_type.bmp +# End Source File +# Begin Source File + +SOURCE=.\res\TestRunner.rc2 +# End Source File +# Begin Source File + +SOURCE=.\res\tfwkui_r.bmp +# End Source File +# End Group +# Begin Group "UserInterface" + +# PROP Default_Filter "" +# Begin Group "DynamicWindow" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicBar.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicBar.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicControlsManager.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicControlsManager.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicDialog.cpp +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicDialog.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicFormView.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicFormView.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicPropSheet.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicPropSheet.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicWnd.cpp +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicWnd.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicWndEx.cpp +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCDynamicWndEx.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCSizeIconCtrl.cpp +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\cdxCSizeIconCtrl.h +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\SizeCBar.cpp +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\DynamicWindow\SizeCBar.h +# End Source File +# End Group +# Begin Source File + +SOURCE=.\ListCtrlFormatter.cpp +# End Source File +# Begin Source File + +SOURCE=.\ListCtrlFormatter.h +# End Source File +# Begin Source File + +SOURCE=.\ListCtrlSetter.cpp +# End Source File +# Begin Source File + +SOURCE=.\ListCtrlSetter.h +# End Source File +# Begin Source File + +SOURCE=.\MsDevCallerListCtrl.cpp +# End Source File +# Begin Source File + +SOURCE=.\MsDevCallerListCtrl.h +# End Source File +# Begin Source File + +SOURCE=.\ProgressBar.cpp +# End Source File +# Begin Source File + +SOURCE=.\ProgressBar.h +# End Source File +# Begin Source File + +SOURCE=.\Resource.h +# End Source File +# Begin Source File + +SOURCE=.\ResourceLoaders.cpp +# End Source File +# Begin Source File + +SOURCE=.\ResourceLoaders.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# Begin Source File + +SOURCE=.\TestRunner.def + +!IF "$(CFG)" == "TestRunner - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "TestRunner - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "TestRunner - Win32 Release Unicode" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "TestRunner - Win32 Debug Unicode" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\TestRunner.rc +# End Source File +# Begin Source File + +SOURCE=.\TestRunnerApp.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestRunnerApp.h +# End Source File +# Begin Source File + +SOURCE=.\TestRunnerDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestRunnerDlg.h +# End Source File +# Begin Source File + +SOURCE=.\TreeHierarchyDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\TreeHierarchyDlg.h +# End Source File +# End Group +# Begin Group "Components" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\ActiveTest.cpp +# End Source File +# Begin Source File + +SOURCE=.\ActiveTest.h +# End Source File +# Begin Source File + +SOURCE=.\MfcSynchronizationObject.h +# End Source File +# Begin Source File + +SOURCE=.\MfcTestRunner.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\cppunit\ui\mfc\MfcTestRunner.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\cppunit\ui\mfc\TestRunner.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\msvc6\testrunner\TestRunner.h +# End Source File +# Begin Source File + +SOURCE=.\TestRunnerModel.cpp +# End Source File +# Begin Source File + +SOURCE=.\TestRunnerModel.h +# End Source File +# End Group +# Begin Group "NewFiles" + +# PROP Default_Filter "*.cpp;*.h" +# Begin Source File + +SOURCE=.\MostRecentTests.cpp +# End Source File +# Begin Source File + +SOURCE=.\MostRecentTests.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\msvc6\DSPlugin\TestRunnerDSPluginVC6_i.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# End Group +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# End Target +# End Project diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.rc b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.rc new file mode 100644 index 0000000000..c0d41e1c7c --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.rc @@ -0,0 +1,229 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif\r\n" + "#include ""res\\TestRunner.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "\0" + VALUE "FileDescription", "TestRunner DLL\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "TestRunner\0" + VALUE "LegalCopyright", "Copyright (C) 1998\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "TestRunner.DLL\0" + VALUE "ProductName", "TestRunner Dynamic Link Library\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY DIALOG DISCARDABLE 0, 0, 259, 250 +STYLE DS_MODALFRAME | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU +CAPTION "Test hierarchy" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "Select",IDOK,202,7,50,14 + CONTROL "Tree1",IDC_TREE_TEST,"SysTreeView32",TVS_HASBUTTONS | + TVS_HASLINES | TVS_LINESATROOT | TVS_FULLROWSELECT | + WS_BORDER | WS_TABSTOP,7,7,189,236 + PUSHBUTTON "&Close",IDCANCEL,202,34,50,14 +END + +CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TESTRUNNER DIALOG DISCARDABLE 0, 0, 330, 226 +STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CLIPCHILDREN | + WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "TestRunner" +FONT 8, "MS Sans Serif" +BEGIN + LTEXT "&Test:",IDC_STATIC_TEST_NAME,7,7,17,8 + COMBOBOX IDC_COMBO_TEST,28,7,235,157,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "&Browse",IDC_BROWSE_TEST,273,7,50,14 + DEFPUSHBUTTON "&Run",ID_RUN,273,23,50,14 + LTEXT "Progress:",IDC_STATIC_PROGRESS,7,23,33,9 + LTEXT "none",IDC_RUNNING_TEST_CASE_LABEL,43,23,220,9 + LTEXT "Progress Bar",IDC_STATIC_PROGRESS_BAR,7,34,256,15,NOT + WS_VISIBLE + LTEXT "Runs:",IDC_STATIC_LABEL_RUNS,7,55,29,10 + LTEXT "0",IDC_STATIC_RUNS,48,55,30,8 + LTEXT "Errors:",IDC_STATIC_LABEL_ERRORS,89,55,29,10 + LTEXT "0",IDC_STATIC_ERRORS,127,55,19,8 + LTEXT "Failures:",IDC_STATIC_LABEL_FAILURES,174,55,29,10 + LTEXT "0",IDC_STATIC_FAILURES,212,55,19,8 + LTEXT "&Errors and Failures:",IDC_STATIC,7,70,67,9 + CONTROL "List1",IDC_LIST,"SysListView32",LVS_REPORT | + LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | + WS_TABSTOP,7,81,257,60 + LTEXT "&Details:",IDC_STATIC_DETAILS,7,145,24,8 + EDITTEXT IDC_DETAILS,7,154,316,48,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY + CONTROL "&Autorun at startup",IDC_CHECK_AUTORUN,"Button", + BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,273,52,49,19 + PUSHBUTTON "&Stop",ID_STOP,273,82,50,14 + PUSHBUTTON "&Close",IDOK,273,98,50,14 + EDITTEXT IDC_EDIT_TIME,7,206,316,13,ES_AUTOHSCROLL | ES_READONLY +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +CPP_UNIT_TEST_RUNNER_IDB_TEST_TYPE BITMAP DISCARDABLE "res\\test_type.bmp" +CPP_UNIT_TEST_RUNNER_IDB_ERROR_TYPE BITMAP DISCARDABLE "res\\errortype.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_ACCELERATOR_TEST_RUNNER ACCELERATORS DISCARDABLE +BEGIN + "Q", ID_QUIT_APPLICATION, VIRTKEY, NOINVERT + VK_SPACE, ID_RUN, VIRTKEY, NOINVERT +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// French (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ERROR_SELECT_TEST "You must select a test!" + IDS_ERRORLIST_TYPE "Type" + IDS_ERRORLIST_NAME "Name" + IDS_ERRORLIST_FAILED_CONDITION "Failed Condition" + IDS_ERRORLIST_LINE_NUMBER "Line Number" + IDS_ERRORLIST_FILE_NAME "File Name" +END + +#endif // French (France) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif +#include "res\TestRunner.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.cpp new file mode 100644 index 0000000000..60d0fe906f --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.cpp @@ -0,0 +1,56 @@ +// TestRunner.cpp : Defines the initialization routines for the DLL. +// + +#include "stdafx.h" +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +static AFX_EXTENSION_MODULE TestRunnerDLL = { NULL, NULL }; + +HINSTANCE g_testRunnerResource; + +extern "C" int APIENTRY +DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) +{ + // Remove this if you use lpReserved + UNREFERENCED_PARAMETER(lpReserved); + + if (dwReason == DLL_PROCESS_ATTACH) + { + TRACE0("TESTRUNNER.DLL Initializing!\n"); + + // Extension DLL one-time initialization + if (!AfxInitExtensionModule(TestRunnerDLL, hInstance)) + return 0; + + // Can't find any other way to have LoadAccelerators working... + g_testRunnerResource = TestRunnerDLL.hResource; + + // Insert this DLL into the resource chain + // NOTE: If this Extension DLL is being implicitly linked to by + // an MFC Regular DLL (such as an ActiveX Control) + // instead of an MFC application, then you will want to + // remove this line from DllMain and put it in a separate + // function exported from this Extension DLL. The Regular DLL + // that uses this Extension DLL should then explicitly call that + // function to initialize this Extension DLL. Otherwise, + // the CDynLinkLibrary object will not be attached to the + // Regular DLL's resource chain, and serious problems will + // result. + + new CDynLinkLibrary(TestRunnerDLL); + } + else if (dwReason == DLL_PROCESS_DETACH) + { + TRACE0("TESTRUNNER.DLL Terminating!\n"); + // Terminate the library before destructors are called + AfxTermExtensionModule(TestRunnerDLL); + } + return 1; // ok +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.h new file mode 100644 index 0000000000..fa5c78ed76 --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.h @@ -0,0 +1,19 @@ +// TestRunner.h : main header file for the TESTRUNNER application +// + +#if !defined(AFX_TESTRUNNER_H) +#define AFX_TESTRUNNER_H + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +// Handle to the instance to retreive module resource. +extern HINSTANCE g_testRunnerResource; + + +#endif // !defined(AFX_TESTRUNNER_H) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.cpp new file mode 100644 index 0000000000..b509f5346c --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.cpp @@ -0,0 +1,674 @@ +// TestRunnerDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "mmsystem.h" +#include "TestRunnerApp.h" +#include "TestRunnerDlg.h" +#include "Resource.h" +#include "ActiveTest.h" +#include "ProgressBar.h" +#include "TreeHierarchyDlg.h" +#include "ListCtrlFormatter.h" +#include "ListCtrlSetter.h" +#include "MfcSynchronizationObject.h" +#include "ResourceLoaders.h" +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +/* Notes: + - code duplication between OnOK() and OnQuitApplication() + - the threading need to be rewrite, so that GUI update occures in the original + thread, not in the thread that is running the tests. This slow down the time + needed to run the test much... + */ + + +///////////////////////////////////////////////////////////////////////////// +// TestRunnerDlg dialog + +const CString TestRunnerDlg::ms_cppunitKey( "CppUnit" ); + + +TestRunnerDlg::TestRunnerDlg( TestRunnerModel *model, + int nDialogResourceId, + CWnd* pParent ) + : cdxCDynamicDialog( nDialogResourceId, pParent ) +{ + ASSERT(0); // this constructor should not be used because of possible resource problems + // => use the constructor with the string parameter + init(model); +} + +TestRunnerDlg::TestRunnerDlg( TestRunnerModel *model, + const TCHAR* szDialogResourceId, + CWnd* pParent ) + : cdxCDynamicDialog( szDialogResourceId == NULL ? + _T("CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TESTRUNNER") + : szDialogResourceId, + pParent) +{ + init(model); +} + +void +TestRunnerDlg::init(TestRunnerModel *model) +{ + m_model = model; + + //{{AFX_DATA_INIT(TestRunnerDlg) + m_bAutorunAtStartup = FALSE; + //}}AFX_DATA_INIT + + m_testsProgress = 0; + m_selectedTest = 0; + m_bAutorunAtStartup = true; + m_bIsRunning = false; + + ModifyFlags( flSWPCopyBits, 0 ); // anti-flickering option for resizing +} + +void +TestRunnerDlg::DoDataExchange(CDataExchange* pDX) +{ + cdxCDynamicDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(TestRunnerDlg) + DDX_Control(pDX, IDC_DETAILS, m_details); + DDX_Control(pDX, IDC_LIST, m_listCtrl); + DDX_Control(pDX, IDOK, m_buttonClose); + DDX_Control(pDX, ID_STOP, m_buttonStop); + DDX_Control(pDX, ID_RUN, m_buttonRun); + DDX_Control(pDX, IDC_BROWSE_TEST, m_buttonBrowse); + DDX_Check(pDX, IDC_CHECK_AUTORUN, m_bAutorunAtStartup); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(TestRunnerDlg, cdxCDynamicDialog) + //{{AFX_MSG_MAP(TestRunnerDlg) + ON_BN_CLICKED(ID_RUN, OnRun) + ON_BN_CLICKED(ID_STOP, OnStop) + ON_BN_CLICKED(IDC_BROWSE_TEST, OnBrowseTest) + ON_COMMAND(ID_QUIT_APPLICATION, OnQuitApplication) + ON_WM_CLOSE() + ON_WM_SIZE() + ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST, OnSelectedFailureChange) + ON_CBN_SELCHANGE(IDC_COMBO_TEST, OnSelectTestInHistoryCombo) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// TestRunnerDlg message handlers + +BOOL +TestRunnerDlg::OnInitDialog() +{ + cdxCDynamicDialog::OnInitDialog(); + +#ifdef CPPUNIT_SUBCLASSING_TESTRUNNERDLG_BUILD + m_hAccelerator = ::LoadAccelerators( AfxGetResourceHandle(), +#else + m_hAccelerator = ::LoadAccelerators( g_testRunnerResource, +#endif + MAKEINTRESOURCE( IDR_ACCELERATOR_TEST_RUNNER ) ); +// It always fails!!! I don't understand why. Complain about not finding the resource name! + ASSERT( m_hAccelerator !=NULL ); + + CComboBox *comboBox = (CComboBox *)GetDlgItem (IDC_COMBO_TEST); + + ASSERT (comboBox); + + VERIFY( m_errorListBitmap.Create( _T("CPP_UNIT_TEST_RUNNER_IDB_ERROR_TYPE"), + 16, 1, + RGB( 255,0,255 ) ) ); + + m_testsProgress = new ProgressBar(); + m_testsProgress->Create( NULL, NULL, WS_CHILD, CRect(), this, 0 ); + m_testsProgress->ShowWindow( SW_SHOW ); + m_testsProgress->MoveWindow( getItemClientRect( IDC_STATIC_PROGRESS_BAR ) ); + + initializeLayout(); + loadSettings(); + initializeFixedSizeFont(); + m_details.SetFont( &m_fixedSizeFont ); // Does not work. Need to investigate... + + m_listCtrl.SetImageList( &m_errorListBitmap, LVSIL_SMALL ); + m_listCtrl.SetExtendedStyle( m_listCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT ); + + int total_col_1_4 = m_settings.col_1 + m_settings.col_2 + + m_settings.col_3 + m_settings.col_4; + + CRect listBounds; + m_listCtrl.GetClientRect(&listBounds); + int col_5_width = listBounds.Width() - total_col_1_4; // 5th column = rest of listview space + ListCtrlFormatter formatter( m_listCtrl ); + formatter.AddColumn( loadCString(IDS_ERRORLIST_TYPE), m_settings.col_1, LVCFMT_LEFT, 0 ); + formatter.AddColumn( loadCString(IDS_ERRORLIST_NAME), m_settings.col_2, LVCFMT_LEFT, 1 ); + formatter.AddColumn( loadCString(IDS_ERRORLIST_FAILED_CONDITION), m_settings.col_3, LVCFMT_LEFT, 2 ); + m_listCtrl.setLineNumberSubItem( formatter.GetNextColumnIndex() ); + formatter.AddColumn( loadCString(IDS_ERRORLIST_LINE_NUMBER), m_settings.col_4, LVCFMT_LEFT, 3 ); + m_listCtrl.setFileNameSubItem( formatter.GetNextColumnIndex() ); + formatter.AddColumn( loadCString(IDS_ERRORLIST_FILE_NAME), col_5_width, LVCFMT_LEFT, 4 ); + + reset (); + updateHistoryCombo(); + UpdateData( FALSE ); + + updateListColumnSize(); + + m_buttonRun.SetFocus(); + + if ( m_bAutorunAtStartup ) + OnRun(); + + return FALSE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + + +TestRunnerDlg::~TestRunnerDlg() +{ + freeState(); + delete m_testsProgress; +} + + +void +TestRunnerDlg::OnRun() +{ + if ( m_bIsRunning ) + return; + + m_selectedTest = m_model->selectedTest(); + + if ( m_selectedTest == 0 ) + return; + + freeState(); + reset(); + + beRunning(); + + int numberOfTests = m_selectedTest->countTestCases(); + + m_testsProgress->start( numberOfTests ); + + + m_result = new CPPUNIT_NS::TestResultCollector( new MfcSynchronizationObject() ); + m_testObserver = new CPPUNIT_NS::TestResult( new MfcSynchronizationObject() ); + m_testObserver->addListener( m_result ); + m_testObserver->addListener( this ); + m_activeTest = new ActiveTest( m_selectedTest ); + + m_testStartTime = timeGetTime(); + + m_activeTest->run( m_testObserver ); + + m_testEndTime = timeGetTime(); +} + + +void +TestRunnerDlg::addListEntry( const CPPUNIT_NS::TestFailure &failure ) +{ + CListCtrl *listCtrl = (CListCtrl *)GetDlgItem (IDC_LIST); + int currentEntry = m_result->testErrors() + + m_result->testFailures() -1; + + ErrorTypeBitmaps errorType; + if ( failure.isError() ) + errorType = errorTypeError; + else + errorType = errorTypeFailure; + + ListCtrlSetter setter( *listCtrl ); + setter.insertLine( currentEntry ); + setter.addSubItem( failure.isError() ? _T("Error") : _T("Failure"), errorType ); + + // Set test name + setter.addSubItem( failure.failedTestName().c_str(), errorType ); + + // Set the asserted text + CString message( failure.thrownException()->message().shortDescription().c_str() ); + message.Replace( '\n', ' ' ); // should only print the short description there, + setter.addSubItem( message ); // and dump the detail on an edit control when clicked. + + // Set the line number + if ( failure.sourceLine().isValid() ) + { + CString lineNumber; + lineNumber.Format( _T("%ld"), failure.sourceLine().lineNumber() ); + setter.addSubItem( lineNumber ); + } + else + setter.addSubItem( _T("") ); + + // Set the file name + setter.addSubItem( failure.sourceLine().fileName().c_str() ); + + if ( !listCtrl->GetFirstSelectedItemPosition() ) + { + // Select first entry => display details of first entry. + listCtrl->SetItemState( currentEntry, LVIS_SELECTED, LVIS_SELECTED ); + listCtrl->SetFocus(); // Does not work ?!? + } + + listCtrl->RedrawItems( currentEntry, currentEntry ); + listCtrl->UpdateWindow(); +} + + +void +TestRunnerDlg::startTest( CPPUNIT_NS::Test *test ) +{ + CWnd *runningTestCaseLabel = GetDlgItem(IDC_RUNNING_TEST_CASE_LABEL); + if ( runningTestCaseLabel ) + runningTestCaseLabel->SetWindowText( CString( test->getName().c_str() ) ); +} + + +void +TestRunnerDlg::addFailure( const CPPUNIT_NS::TestFailure &failure ) +{ + addListEntry( failure ); + if ( failure.isError() ) + m_errors++; + else + m_failures++; + + updateCountsDisplay(); +} + + +void +TestRunnerDlg::endTest( CPPUNIT_NS::Test *test ) +{ + if ( m_selectedTest == 0 ) + return; + + m_testsRun++; + updateCountsDisplay(); + m_testsProgress->step( m_failures == 0 && m_errors == 0 ); + + m_testEndTime = timeGetTime(); + + updateCountsDisplay(); + + if ( m_testsRun >= m_selectedTest->countTestCases() ) + beIdle (); +} + + +void +TestRunnerDlg::beRunning() +{ + m_bIsRunning = true; + m_buttonRun.EnableWindow( FALSE ); + m_buttonClose.EnableWindow( FALSE ); + m_buttonBrowse.EnableWindow( FALSE ); + +// m_buttonRun.SetButtonStyle( m_buttonRun.GetButtonStyle() & ~BS_DEFPUSHBUTTON ); +// m_buttonStop.SetButtonStyle( m_buttonStop.GetButtonStyle() | BS_DEFPUSHBUTTON ); +} + + +void +TestRunnerDlg::beIdle() +{ + m_bIsRunning = false; + m_buttonRun.EnableWindow( TRUE ); + m_buttonBrowse.EnableWindow( TRUE ); + m_buttonClose.EnableWindow( TRUE ); + + m_buttonRun.SetButtonStyle( m_buttonRun.GetButtonStyle() | BS_DEFPUSHBUTTON ); +// m_buttonStop.SetButtonStyle( m_buttonStop.GetButtonStyle() & ~BS_DEFPUSHBUTTON ); +} + + +void +TestRunnerDlg::beRunDisabled() +{ + m_bIsRunning = false; + m_buttonRun.EnableWindow( FALSE ); + m_buttonBrowse.EnableWindow( FALSE ); + m_buttonStop.EnableWindow( FALSE ); + m_buttonClose.EnableWindow( TRUE ); + +// m_buttonRun.SetButtonStyle( m_buttonRun.GetButtonStyle() | BS_DEFPUSHBUTTON ); +// m_buttonStop.SetButtonStyle( m_buttonStop.GetButtonStyle() & ~BS_DEFPUSHBUTTON ); +} + + +void +TestRunnerDlg::freeState() +{ + delete m_activeTest; + delete m_result; + delete m_testObserver; +} + + +void +TestRunnerDlg::reset() +{ + m_testsRun = 0; + m_errors = 0; + m_failures = 0; + m_testEndTime = m_testStartTime; + + updateCountsDisplay(); + + m_activeTest = NULL; + m_result = NULL; + m_testObserver = NULL; + + CListCtrl *listCtrl = (CListCtrl *)GetDlgItem (IDC_LIST); + + listCtrl->DeleteAllItems(); + m_testsProgress->reset(); + displayFailureDetailsFor( -1 ); +} + + +void +TestRunnerDlg::updateCountsDisplay() +{ + CStatic *statTestsRun = (CStatic *)GetDlgItem( IDC_STATIC_RUNS ); + CStatic *statErrors = (CStatic *)GetDlgItem( IDC_STATIC_ERRORS ); + CStatic *statFailures = (CStatic *)GetDlgItem( IDC_STATIC_FAILURES ); + CEdit *editTime = (CEdit *)GetDlgItem( IDC_EDIT_TIME ); + + CString argumentString; + + argumentString.Format( _T("%d"), m_testsRun ); + statTestsRun->SetWindowText (argumentString); + + argumentString.Format( _T("%d"), m_errors ); + statErrors->SetWindowText( argumentString ); + + argumentString.Format( _T("%d"), m_failures ); + statFailures->SetWindowText( argumentString ); + + argumentString.Format( _T("Execution time: %3.3lf seconds"), + (m_testEndTime - m_testStartTime) / 1000.0 ); + editTime->SetWindowText( argumentString ); +} + + +void +TestRunnerDlg::OnStop() +{ + if ( m_testObserver ) + m_testObserver->stop (); + + beIdle (); +} + + +void +TestRunnerDlg::OnOK() +{ + if ( m_testObserver ) + m_testObserver->stop (); + + UpdateData(); + saveSettings(); + + cdxCDynamicDialog::OnOK (); +} + + +void +TestRunnerDlg::OnSelectTestInHistoryCombo() +{ + unsigned int currentSelection = getHistoryCombo()->GetCurSel (); + + if ( currentSelection >= 0 && + currentSelection < m_model->history().size() ) + { + CPPUNIT_NS::Test *selectedTest = m_model->history()[currentSelection]; + m_model->selectHistoryTest( selectedTest ); + updateHistoryCombo(); + beIdle(); + } + else + beRunDisabled(); +} + + +void +TestRunnerDlg::updateHistoryCombo() +{ + getHistoryCombo()->LockWindowUpdate(); + + getHistoryCombo()->ResetContent(); + + const TestRunnerModel::History &history = m_model->history(); + for ( TestRunnerModel::History::const_iterator it = history.begin(); + it != history.end(); + ++it ) + { + CPPUNIT_NS::Test *test = *it; + getHistoryCombo()->AddString( CString(test->getName().c_str()) ); + } + + if ( history.size() > 0 ) + { + getHistoryCombo()->SetCurSel( 0 ); + beIdle(); + } + else + { + beRunDisabled(); + m_buttonBrowse.EnableWindow( TRUE ); + } + + getHistoryCombo()->UnlockWindowUpdate(); +} + + +void +TestRunnerDlg::OnBrowseTest() +{ + TreeHierarchyDlg dlg; + dlg.setRootTest( m_model->rootTest() ); + if ( dlg.DoModal() == IDOK ) + { + m_model->selectHistoryTest( dlg.getSelectedTest() ); + updateHistoryCombo(); + } +} + + +BOOL +TestRunnerDlg::PreTranslateMessage(MSG* pMsg) +{ + if ( ::TranslateAccelerator( m_hWnd, + m_hAccelerator, + pMsg ) ) + { + return TRUE; + } + return cdxCDynamicDialog::PreTranslateMessage(pMsg); +} + + +CComboBox * +TestRunnerDlg::getHistoryCombo() +{ + CComboBox *comboBox = (CComboBox *)GetDlgItem (IDC_COMBO_TEST); + ASSERT (comboBox); + return comboBox; +} + + +void +TestRunnerDlg::loadSettings() +{ + m_model->loadSettings(m_settings); + RestoreWindowPosition( TestRunnerModel::settingKey, + TestRunnerModel::settingMainDialogKey ); + + + m_bAutorunAtStartup = m_settings.autorunOnLaunch; +} + + +void +TestRunnerDlg::saveSettings() +{ + m_settings.autorunOnLaunch = ( m_bAutorunAtStartup != 0 ); + StoreWindowPosition( TestRunnerModel::settingKey, + TestRunnerModel::settingMainDialogKey ); + + m_settings.col_1 = m_listCtrl.GetColumnWidth(0); + m_settings.col_2 = m_listCtrl.GetColumnWidth(1); + m_settings.col_3 = m_listCtrl.GetColumnWidth(2); + m_settings.col_4 = m_listCtrl.GetColumnWidth(3); + + m_model->saveSettings(m_settings); +} + + +void +TestRunnerDlg::OnQuitApplication() +{ + if ( m_testObserver ) + m_testObserver->stop(); + + UpdateData(); + saveSettings(); + + CWinApp *app = AfxGetApp(); + ASSERT( app != NULL ); + app->PostThreadMessage( WM_QUIT, 0, 0 ); +} + + +TestRunnerModel & +TestRunnerDlg::model() +{ + ASSERT( m_model != NULL ); + return *m_model; +} + + +void +TestRunnerDlg::OnClose() +{ + OnOK(); +} + + +CRect +TestRunnerDlg::getItemWindowRect( unsigned int itemId ) +{ + CWnd * pItem = GetDlgItem( itemId ); + CRect rect; + if ( pItem ) + pItem->GetWindowRect( &rect ); + return rect; +} + + +CRect +TestRunnerDlg::getItemClientRect( unsigned int itemId ) +{ + CRect rect = getItemWindowRect( itemId ); + if ( !rect.IsRectNull() ) + { + CPoint clientTopLeft = rect.TopLeft(); + ScreenToClient( &clientTopLeft ); + rect = CRect( clientTopLeft, rect.Size() ); + } + + return rect; +} + + +void +TestRunnerDlg::initializeLayout() +{ + // see DynamicWindow/doc for documentation + const int listGrowthRatio = 30; + AddSzXControl( IDC_COMBO_TEST, mdResize ); + AddSzXControl( IDC_BROWSE_TEST, mdRepos ); + AddSzXControl( IDC_RUNNING_TEST_CASE_LABEL, mdResize ); + AddSzXControl( ID_RUN, mdRepos ); + AddSzXControl( *m_testsProgress, mdResize ); + AddSzXControl( IDC_CHECK_AUTORUN, mdRepos ); + AddSzControl( IDC_LIST, 0, 0, 100, listGrowthRatio ); + AddSzXControl( ID_STOP, mdRepos ); + AddSzXControl( IDOK, mdRepos ); + AddSzYControl( IDC_STATIC_DETAILS, listGrowthRatio, listGrowthRatio ); + AddSzControl( IDC_DETAILS, 0, listGrowthRatio, 100, 100 ); + AddSzControl( IDC_EDIT_TIME, mdResize, mdRepos ); +} + + +void +TestRunnerDlg::OnSize( UINT nType, int cx, int cy ) +{ + cdxCDynamicDialog::OnSize(nType, cx, cy); + updateListColumnSize(); +} + + +void +TestRunnerDlg::updateListColumnSize() +{ + if ( !m_listCtrl.GetSafeHwnd() ) + return; + + // resize to fit last column + CRect listBounds = getItemClientRect( IDC_LIST ); + + int width_1_4 = 0; + for (int i = 0; i < 4; ++i) + width_1_4 += m_listCtrl.GetColumnWidth( i ); + + // the 4 offset is so no horiz scroll bar will appear + m_listCtrl.SetColumnWidth(4, listBounds.Width() - width_1_4 - 4); +} + + +void +TestRunnerDlg::OnSelectedFailureChange( NMHDR* pNMHDR, + LRESULT* pResult ) +{ + NM_LISTVIEW *pNMListView = (NM_LISTVIEW*)pNMHDR; + + if ( (pNMListView->uNewState & LVIS_SELECTED) != 0 ) // item selected + displayFailureDetailsFor( pNMListView->iItem ); + + *pResult = 0; +} + + +void +TestRunnerDlg::displayFailureDetailsFor( unsigned int failureIndex ) +{ + CString details; + if ( m_result && failureIndex < m_result->failures().size() ) + details = m_result->failures()[ failureIndex ]->thrownException()->what(); + + details.Replace( _T("\n"), _T("\r\n") ); + + m_details.SetWindowText( details ); +} + + +void +TestRunnerDlg::initializeFixedSizeFont() +{ + LOGFONT font; + GetFont()->GetLogFont( &font ); + font.lfPitchAndFamily = FIXED_PITCH | //VARIABLE_PITCH + (font.lfPitchAndFamily & ~15); // font family + m_fixedSizeFont.CreateFontIndirect( &font ); +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.h new file mode 100644 index 0000000000..3da294fe6e --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.h @@ -0,0 +1,170 @@ +#if !defined(AFX_TESTRUNNERDLG_H) +#define AFX_TESTRUNNERDLG_H + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 +// TestRunnerDlg.h : header file +// + +/* Refer to MSDN documentation: + mk:@MSITStore:h:\DevStudio\MSDN\98VSa\1036\vcmfc.chm::/html/_mfcnotes_tn033.htm#_mfcnotes_how_to_write_an_mfc_extension_dll + to know how to write and use MFC extension DLL + Can be found in the index with "mfc extension" + => + Using: + - your application must link Multithreaded MFC DLL + - memory allocation is done using the same heap + - you must define the symbol _AFX_DLL + Building: + - you must define the symbol _AFX_DLL and _AFX_EXT + */ + +// Define the folowing symbol to subclass TestRunnerDlg +#ifndef CPPUNIT_SUBCLASSING_TESTRUNNERDLG_BUILD +#include "resource.h" +#else +#define IDD_DIALOG_TESTRUNNER 0 +#endif + +#include +#include +#include +#include +#include +#include + +#include "ActiveTest.h" +#include "MsDevCallerListCtrl.h" +#include "TestRunnerModel.h" +#include "DynamicWindow/cdxCDynamicDialog.h" + +class ProgressBar; +class TestRunnerModel; + + +///////////////////////////////////////////////////////////////////////////// +// TestRunnerDlg dialog + +class TestRunnerDlg : public cdxCDynamicDialog, + public CPPUNIT_NS::TestListener +{ +public: + TestRunnerDlg( TestRunnerModel *model, + int nDialogResourceId, + CWnd* pParent = NULL); + TestRunnerDlg( TestRunnerModel *model, + const TCHAR* szDialogResourceId = NULL, + CWnd* pParent = NULL); + ~TestRunnerDlg(); + + // overrided from TestListener; + void startTest( CPPUNIT_NS::Test *test ); + void addFailure( const CPPUNIT_NS::TestFailure &failure ); + void endTest( CPPUNIT_NS::Test *test ); + + // IDD is not use, it is just there for the wizard. + //{{AFX_DATA(TestRunnerDlg) + CEdit m_details; + MsDevCallerListCtrl m_listCtrl; + CButton m_buttonClose; + CButton m_buttonStop; + CButton m_buttonRun; + CButton m_buttonBrowse; + BOOL m_bAutorunAtStartup; + //}}AFX_DATA + + //{{AFX_VIRTUAL(TestRunnerDlg) +public: + virtual BOOL PreTranslateMessage(MSG* pMsg); +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +protected: + + //{{AFX_MSG(TestRunnerDlg) + virtual BOOL OnInitDialog(); + afx_msg void OnRun(); + afx_msg void OnStop(); + virtual void OnOK(); + afx_msg void OnBrowseTest(); + afx_msg void OnQuitApplication(); + afx_msg void OnClose(); + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnSelectedFailureChange(NMHDR* pNMHDR, LRESULT* pResult); + afx_msg void OnSelectTestInHistoryCombo(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + + typedef std::vector Tests; + ProgressBar *m_testsProgress; + CPPUNIT_NS::Test *m_selectedTest; + ActiveTest *m_activeTest; + CPPUNIT_NS::TestResult *m_testObserver; + CPPUNIT_NS::TestResultCollector *m_result; + int m_testsRun; + int m_errors; + int m_failures; + DWORD m_testStartTime; + DWORD m_testEndTime; + static const CString ms_cppunitKey; + HACCEL m_hAccelerator; + bool m_bIsRunning; + TestRunnerModel *m_model; + CImageList m_errorListBitmap; + CFont m_fixedSizeFont; + + enum ErrorTypeBitmaps + { + errorTypeFailure =0, + errorTypeError + }; + + void addListEntry( const CPPUNIT_NS::TestFailure &failure ); + void beIdle(); + void beRunning(); + void beRunDisabled(); + void reset(); + void freeState(); + void updateCountsDisplay(); + void setupHistoryCombo(); + CPPUNIT_NS::Test *findTestByName( std::string name ) const; + CPPUNIT_NS::Test *findTestByNameFor( const std::string &name, + CPPUNIT_NS::Test *test ) const; + void addNewTestToHistory( CPPUNIT_NS::Test *test ); + void addTestToHistoryCombo( CPPUNIT_NS::Test *test, + int idx =-1 ); + void removeTestFromHistory( CPPUNIT_NS::Test *test ); + CComboBox *getHistoryCombo(); + void updateSelectedItem(); + void saveHistory(); + void loadSettings(); + void saveSettings(); + TestRunnerModel &model(); + void updateHistoryCombo(); + void displayFailureDetailsFor( unsigned int failureIndex ); + + CRect getItemWindowRect( unsigned int itemId ); + CRect getItemClientRect( unsigned int itemId ); + + //CRect getDialogBounds(); + + virtual void initializeLayout(); + void updateListColumnSize(); + void initializeFixedSizeFont(); + + +private: + TestRunnerModel::Settings m_settings; + + /// do all initialization, that is usually done in the constructor, so that the + /// code is not duplicated in the two constructors + void TestRunnerDlg::init(TestRunnerModel *model); +}; + + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TESTRUNNERDLG_H) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.cpp new file mode 100644 index 0000000000..a0a44caf3d --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.cpp @@ -0,0 +1,223 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestRunnerModel.cpp for class TestRunnerModel +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/04/26 +// ////////////////////////////////////////////////////////////////////////// + +#include "StdAfx.h" +#include "TestRunnerModel.h" +#include +#include +#include +#include + + +const CString TestRunnerModel::settingKey( _T("CppUnit") ); +const CString TestRunnerModel::settingMainDialogKey( _T( "MainDialog" ) ); +const CString TestRunnerModel::settingBrowseDialogKey( _T( "BrowseDialog" ) ); + + +TestRunnerModel::TestRunnerModel( CPPUNIT_NS::Test *rootTest ) : + m_rootTest( rootTest ) +{ +} + + +TestRunnerModel::~TestRunnerModel() +{ +} + +const TestRunnerModel::History & +TestRunnerModel::history() const +{ + return m_history; +} + + +void +TestRunnerModel::selectHistoryTest( CPPUNIT_NS::Test *test ) +{ + CPPUNIT_NS::removeFromSequence( m_history, test ); + + if ( test != NULL ) + m_history.push_front( test ); +} + + +CPPUNIT_NS::Test * +TestRunnerModel::selectedTest() const +{ + if ( m_history.size() > 0 ) + return m_history[0]; + return NULL; +} + + +void +TestRunnerModel::loadSettings(Settings & s) +{ + CWinApp *app = AfxGetApp(); + ASSERT( app != NULL ); + + int autorun = app->GetProfileInt( _T("CppUnit"), + _T("AutorunAtStartup"), + 1 ); + s.autorunOnLaunch = (autorun == 1); + + s.col_1 = app->GetProfileInt( _T("CppUnit"), _T("Col_1"), 40 ); + s.col_2 = app->GetProfileInt( _T("CppUnit"), _T("Col_2"), 40 ); + s.col_3 = app->GetProfileInt( _T("CppUnit"), _T("Col_3"), 40 ); + s.col_4 = app->GetProfileInt( _T("CppUnit"), _T("Col_4"), 40 ); + + loadHistory(); +} + + +void +TestRunnerModel::loadHistory() +{ + m_history.clear(); + int idx = 1; + do + { + CString testName = loadHistoryEntry( idx++ ); + if ( testName.IsEmpty() ) + break; + + try + { + m_history.push_back( m_rootTest->findTest( toAnsiString(testName ) ) ); + } + catch ( std::invalid_argument &) + { + } + } + while ( true ); +} + + +CString +TestRunnerModel::loadHistoryEntry( int idx ) +{ + CWinApp *app = AfxGetApp(); + ASSERT( app != NULL ); + + return app->GetProfileString( _T("CppUnit"), getHistoryEntryName( idx ) ); +} + + +void +TestRunnerModel::saveSettings( const Settings & s ) +{ + CWinApp *app = AfxGetApp(); + ASSERT( app != NULL ); + + int autorun = s.autorunOnLaunch ? 1 : 0; + app->WriteProfileInt( _T("CppUnit"), _T("AutorunAtStartup"), autorun ); + + app->WriteProfileInt( _T("CppUnit"), _T("Col_1"), s.col_1 ); + app->WriteProfileInt( _T("CppUnit"), _T("Col_2"), s.col_2 ); + app->WriteProfileInt( _T("CppUnit"), _T("Col_3"), s.col_3 ); + app->WriteProfileInt( _T("CppUnit"), _T("Col_4"), s.col_4 ); + + int idx = 1; + for ( History::const_iterator it = m_history.begin(); + it != m_history.end(); + ++it , ++idx ) + { + CPPUNIT_NS::Test *test = *it; + saveHistoryEntry( idx, test->getName().c_str() ); + } +} + + +void +TestRunnerModel::saveHistoryEntry( int idx, + CString testName ) +{ + CWinApp *app = AfxGetApp(); + ASSERT( app != NULL ); + + app->WriteProfileString( _T("CppUnit"), + getHistoryEntryName( idx ), + testName ); +} + + +CString +TestRunnerModel::getHistoryEntryName( int idx ) const +{ + CString entry; + entry.Format( _T("HistoryTest%d"), idx ); + return entry; +} + + +CPPUNIT_NS::Test * +TestRunnerModel::rootTest() +{ + return m_rootTest; +} + + +void +TestRunnerModel::setRootTest( CPPUNIT_NS::Test *test ) +{ + m_rootTest = test; +} + + +CPPUNIT_NS::Test * +TestRunnerModel::findTestByName( CString name ) const +{ + return findTestByNameFor( name, m_rootTest ); +} + + +CPPUNIT_NS::Test * +TestRunnerModel::findTestByNameFor( const CString &name, + CPPUNIT_NS::Test *test ) const +{ + if ( name == test->getName().c_str() ) + return test; + + CPPUNIT_NS::TestSuite *suite = dynamic_cast(test); + if ( suite == NULL ) + return NULL; + + const std::vector &tests = suite->getTests(); + for ( std::vector::const_iterator it = tests.begin(); + it != tests.end(); + ++it ) + { + CPPUNIT_NS::Test *testFound = findTestByNameFor( name, *it ); + if ( testFound != NULL ) + return testFound; + } + return NULL; +} + + +// Utility method, should be moved somewhere else... +std::string +TestRunnerModel::toAnsiString( const CString &text ) +{ +#ifdef _UNICODE + int bufferLength = ::WideCharToMultiByte( CP_THREAD_ACP, 0, + text, text.GetLength(), + NULL, 0, NULL, NULL ) +1; + char *ansiString = new char[bufferLength]; + ::WideCharToMultiByte( CP_THREAD_ACP, 0, + text, text.GetLength(), + ansiString, bufferLength, + NULL, + NULL ); + + std::string str( ansiString, bufferLength-1 ); + delete[] ansiString; + + return str; +#else + return std::string( (LPCTSTR)text ); +#endif +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.h new file mode 100644 index 0000000000..ed1238077c --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.h @@ -0,0 +1,87 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunnerModel.h for class TestRunnerModel +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/04/26 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTRUNNERMODEL_H +#define TESTRUNNERMODEL_H + +#include +#include + + +/*! \class TestRunnerModel + * \brief This class represents a model for the test runner. + */ +class TestRunnerModel +{ +public: + static const CString settingKey; + static const CString settingMainDialogKey; + static const CString settingBrowseDialogKey; + + struct Settings + { + bool autorunOnLaunch; + int col_1; // 1st column width in list view + int col_2; // 2nd column width in list view + int col_3; // 3rd column width in list view + int col_4; // 4th column width in list view + }; + + typedef std::deque History; + + /*! Constructs a TestRunnerModel object. + */ + TestRunnerModel( CPPUNIT_NS::Test *rootTest ); + + /*! Destructor. + */ + virtual ~TestRunnerModel(); + + virtual void setRootTest( CPPUNIT_NS::Test *rootTest ); + + void loadSettings(Settings & s); + void saveSettings(const Settings & s); + + const History &history() const; + void selectHistoryTest( CPPUNIT_NS::Test *test ); + CPPUNIT_NS::Test *selectedTest() const; + + CPPUNIT_NS::Test *rootTest(); + +protected: + void loadHistory(); + CString loadHistoryEntry( int idx ); + CPPUNIT_NS::Test *findTestByName( CString name ) const; + CPPUNIT_NS::Test *findTestByNameFor( const CString &name, + CPPUNIT_NS::Test *test ) const; + + void saveHistoryEntry( int idx, + CString testName ); + + CString getHistoryEntryName( int idx ) const; + + static std::string toAnsiString( const CString &text ); + +private: + /// Prevents the use of the copy constructor. + TestRunnerModel( const TestRunnerModel © ); + + /// Prevents the use of the copy operator. + TestRunnerModel &operator =( const TestRunnerModel © ); + +protected: + History m_history; + + CPPUNIT_NS::Test *m_rootTest; +}; + + + +// Inlines methods for TestRunnerModel: +// ------------------------------------ + + + +#endif // TESTRUNNERMODEL_H diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.cpp new file mode 100644 index 0000000000..1c0b67138e --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.cpp @@ -0,0 +1,208 @@ +// TreeHierarchyDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "resource.h" +#include "TreeHierarchyDlg.h" +#include "TestRunnerModel.h" +#include "ResourceLoaders.h" +#include + + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// TreeHierarchyDlg dialog + + +TreeHierarchyDlg::TreeHierarchyDlg(CWnd* pParent ) + : cdxCDynamicDialog(_T("CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY"), pParent) + , m_selectedTest( NULL ) +{ + ModifyFlags( flSWPCopyBits, 0 ); // anti-flickering option for resizing + + //{{AFX_DATA_INIT(TreeHierarchyDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + + +void +TreeHierarchyDlg::DoDataExchange(CDataExchange* pDX) +{ + cdxCDynamicDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(TreeHierarchyDlg) + DDX_Control(pDX, IDC_TREE_TEST, m_treeTests); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(TreeHierarchyDlg, cdxCDynamicDialog) + //{{AFX_MSG_MAP(TreeHierarchyDlg) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + + + +void +TreeHierarchyDlg::setRootTest( CPPUNIT_NS::Test *test ) +{ + m_rootTest = test; +} + + +BOOL +TreeHierarchyDlg::OnInitDialog() +{ + cdxCDynamicDialog::OnInitDialog(); + + fillTree(); + initializeLayout(); + RestoreWindowPosition( TestRunnerModel::settingKey, + TestRunnerModel::settingBrowseDialogKey ); + + return TRUE; +} + + +void +TreeHierarchyDlg::initializeLayout() +{ + // see DynamicWindow/doc for documentation + AddSzControl( IDC_TREE_TEST, mdResize, mdResize ); + AddSzControl( IDOK, mdRepos, mdNone ); + AddSzControl( IDCANCEL, mdRepos, mdNone ); +} + + +void +TreeHierarchyDlg::fillTree() +{ + VERIFY( m_imageList.Create( _T("CPP_UNIT_TEST_RUNNER_IDB_TEST_TYPE"), + 16, 1, RGB( 255,0,255 ) ) ); + + m_treeTests.SetImageList( &m_imageList, TVSIL_NORMAL ); + + HTREEITEM hSuite = addTest( m_rootTest, TVI_ROOT ); + m_treeTests.Expand( hSuite, TVE_EXPAND ); +} + + +HTREEITEM +TreeHierarchyDlg::addTest( CPPUNIT_NS::Test *test, + HTREEITEM hParent ) +{ + int testType = isSuite( test ) ? imgSuite : imgUnitTest; + HTREEITEM hItem = m_treeTests.InsertItem( CString(test->getName().c_str()), + testType, + testType, + hParent ); + if ( hItem != NULL ) + { + VERIFY( m_treeTests.SetItemData( hItem, (DWORD)test ) ); + if ( isSuite( test ) ) + addTestSuiteChildrenTo( test, hItem ); + } + return hItem; +} + + +void +TreeHierarchyDlg::addTestSuiteChildrenTo( CPPUNIT_NS::Test *suite, + HTREEITEM hItemSuite ) +{ + Tests tests; + int childIndex = 0; + for ( ; childIndex < suite->getChildTestCount(); ++childIndex ) + tests.push_back( suite->getChildTestAt( childIndex ) ); + sortByName( tests ); + + for ( childIndex = 0; childIndex < suite->getChildTestCount(); ++childIndex ) + addTest( suite->getChildTestAt( childIndex ), hItemSuite ); +} + + +bool +TreeHierarchyDlg::isSuite( CPPUNIT_NS::Test *test ) +{ + return ( test->getChildTestCount() > 0 || // suite with test + test->countTestCases() == 0 ); // empty suite +} + + +struct PredSortTest +{ + bool operator()( CPPUNIT_NS::Test *test1, CPPUNIT_NS::Test *test2 ) const + { + bool isTest1Suite = TreeHierarchyDlg::isSuite( test1 ); + bool isTest2Suite = TreeHierarchyDlg::isSuite( test2 ); + if ( isTest1Suite && !isTest2Suite ) + return true; + if ( isTest1Suite && isTest2Suite ) + return test1->getName() < test2->getName(); + return false; + } +}; + +void +TreeHierarchyDlg::sortByName( Tests &tests ) const +{ + std::stable_sort( tests.begin(), tests.end(), PredSortTest() ); +} + + +void +TreeHierarchyDlg::OnOK() +{ + CPPUNIT_NS::Test *test = findSelectedTest(); + if ( test == NULL ) + { + AfxMessageBox( loadCString(IDS_ERROR_SELECT_TEST), MB_OK ); + return; + } + + m_selectedTest = test; + storeDialogBounds(); + cdxCDynamicDialog::OnOK(); +} + + +void +TreeHierarchyDlg::OnCancel() +{ + storeDialogBounds(); + cdxCDynamicDialog::OnCancel(); +} + + +CPPUNIT_NS::Test * +TreeHierarchyDlg::findSelectedTest() +{ + HTREEITEM hItem = m_treeTests.GetSelectedItem(); + if ( hItem != NULL ) + { + DWORD data; + VERIFY( data = m_treeTests.GetItemData( hItem ) ); + return reinterpret_cast( data ); + } + return NULL; +} + + +CPPUNIT_NS::Test * +TreeHierarchyDlg::getSelectedTest() const +{ + return m_selectedTest; +} + + +void +TreeHierarchyDlg::storeDialogBounds() +{ + StoreWindowPosition( TestRunnerModel::settingKey, + TestRunnerModel::settingBrowseDialogKey ); +} diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.h new file mode 100644 index 0000000000..b49126a29a --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.h @@ -0,0 +1,81 @@ +#if !defined(AFX_TREEHIERARCHYDLG_H__81E65BC0_1F91_482C_A8BD_C1EC305CD6DA__INCLUDED_) +#define AFX_TREEHIERARCHYDLG_H__81E65BC0_1F91_482C_A8BD_C1EC305CD6DA__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TreeHierarchyDlg.h : header file +// + +#include +#include +#include "DynamicWindow/cdxCDynamicDialog.h" + + +///////////////////////////////////////////////////////////////////////////// +// TreeHierarchyDlg dialog + +class TreeHierarchyDlg : public cdxCDynamicDialog +{ +// Construction +public: + TreeHierarchyDlg(CWnd* pParent = NULL); // standard constructor + + void setRootTest( CPPUNIT_NS::Test *test ); + CPPUNIT_NS::Test *getSelectedTest() const; + + static bool isSuite( CPPUNIT_NS::Test *test ); + + // Dialog Data + //{{AFX_DATA(TreeHierarchyDlg) + CTreeCtrl m_treeTests; + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(TreeHierarchyDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + virtual void initializeLayout(); + void storeDialogBounds(); + + // Generated message map functions + //{{AFX_MSG(TreeHierarchyDlg) + virtual BOOL OnInitDialog(); + virtual void OnOK( ); + virtual void OnCancel(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP(); + +private: + typedef std::vector Tests; + + void fillTree(); + HTREEITEM addTest( CPPUNIT_NS::Test *test, + HTREEITEM hParent ); + void addTestSuiteChildrenTo( CPPUNIT_NS::Test *suite, + HTREEITEM hItemSuite ); + + void sortByName( Tests &tests ) const; + CPPUNIT_NS::Test *findSelectedTest(); + + enum + { + imgSuite =0, + imgUnitTest, + }; + + CImageList m_imageList; + CPPUNIT_NS::Test *m_selectedTest; + CPPUNIT_NS::Test *m_rootTest; +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TREEHIERARCHYDLG_H__81E65BC0_1F91_482C_A8BD_C1EC305CD6DA__INCLUDED_) diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/res/TestRunner.rc2 b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/TestRunner.rc2 new file mode 100644 index 0000000000..55dca09fac --- /dev/null +++ b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/TestRunner.rc2 @@ -0,0 +1,13 @@ +// +// TESTRUNNER.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/res/errortype.bmp b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/errortype.bmp new file mode 100644 index 0000000000..aa645babbf Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/errortype.bmp differ diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/res/test_type.bmp b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/test_type.bmp new file mode 100644 index 0000000000..63e7fa0f28 Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/test_type.bmp differ diff --git a/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.cpp b/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.cpp new file mode 100644 index 0000000000..e286ed11e3 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.cpp @@ -0,0 +1,68 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file MostRecentTests.cpp for class MostRecentTests +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/20 +// ////////////////////////////////////////////////////////////////////////// + +#include "MostRecentTests.h" + + +MostRecentTests::MostRecentTests() +{ +} + + +MostRecentTests::~MostRecentTests() +{ +} + + +void +MostRecentTests::setTestToRun( CPPUNIT_NS::Test *test ) +{ + m_tests.removeRef( test ); + m_tests.prepend( test ); + + const int maxRecentTest = 20; + if ( m_tests.count() > maxRecentTest ) + m_tests.remove( maxRecentTest ); + + emit listChanged(); + emit testToRunChanged( testToRun() ); +} + + +CPPUNIT_NS::Test * +MostRecentTests::testToRun() +{ + return testAt( 0 ); +} + + +void +MostRecentTests::selectTestToRun( int index ) +{ + if ( index < testCount() ) + setTestToRun( testAt( index ) ); +} + + +int +MostRecentTests::testCount() +{ + return m_tests.count(); +} + + +QString +MostRecentTests::testNameAt( int index ) +{ + return QString::fromLatin1( testAt( index )->getName().c_str() ); +} + + +CPPUNIT_NS::Test * +MostRecentTests::testAt( int index ) +{ + return m_tests.at( index ); +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.h b/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.h new file mode 100644 index 0000000000..39cb4d140a --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.h @@ -0,0 +1,62 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file MostRecentTests.h for class MostRecentTests +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/20 +// ////////////////////////////////////////////////////////////////////////// +#ifndef MOSTRECENTTESTS_H +#define MOSTRECENTTESTS_H + +#include +#include +#include +#include + + +/*! \class MostRecentTests + * \brief This class represents the list of the recent tests. + */ +class MostRecentTests : public QObject +{ + Q_OBJECT +public: + /*! Constructs a MostRecentTests object. + */ + MostRecentTests(); + + /*! Destructor. + */ + virtual ~MostRecentTests(); + + void setTestToRun( CPPUNIT_NS::Test *test ); + CPPUNIT_NS::Test *testToRun(); + + int testCount(); + QString testNameAt( int index ); + CPPUNIT_NS::Test *testAt( int index ); + +signals: + void listChanged(); + void testToRunChanged( CPPUNIT_NS::Test *testToRun ); + +public slots: + void selectTestToRun( int index ); + +private: + /// Prevents the use of the copy constructor. + MostRecentTests( const MostRecentTests © ); + + /// Prevents the use of the copy operator. + void operator =( const MostRecentTests © ); + +private: + QList m_tests; +}; + + + +// Inlines methods for MostRecentTests: +// ------------------------------------ + + + +#endif // MOSTRECENTTESTS_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunner.cpp b/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunner.cpp new file mode 100644 index 0000000000..9f203cdb1b --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunner.cpp @@ -0,0 +1,70 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file QtTestRunner.cpp for class QtTestRunner +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/19 +// ////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include "TestRunnerDlgImpl.h" +#include "TestRunnerModel.h" + + +CPPUNIT_NS_BEGIN + +QtTestRunner::QtTestRunner() : + _suite( new CPPUNIT_NS::TestSuite( "All Tests" ) ), + _tests( new Tests() ) +{ +} + + +QtTestRunner::~QtTestRunner() +{ + delete _suite; + + Tests::iterator it = _tests->begin(); + while ( it != _tests->end() ) + delete *it++; + + delete _tests; +} + + +Test * +QtTestRunner::getRootTest() +{ + if ( _tests->size() != 1 ) + { + Tests::iterator it = _tests->begin(); + while ( it != _tests->end() ) + _suite->addTest( *it++ ); + _tests->clear(); + return _suite; + } + return (*_tests)[0]; +} + + +void +QtTestRunner::run( bool autoRun ) +{ + TestRunnerDlg *dlg = new TestRunnerDlg( qApp->mainWidget(), + "QtTestRunner", + TRUE ); + dlg->setModel( new TestRunnerModel( getRootTest() ), + autoRun ); + dlg->exec(); + delete dlg; +} + + +void +QtTestRunner::addTest( CPPUNIT_NS::Test *test ) +{ + _tests->push_back( test ); +} + + +CPPUNIT_NS_END diff --git a/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunnerDll.pro b/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunnerDll.pro new file mode 100644 index 0000000000..3d6c2d40b9 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunnerDll.pro @@ -0,0 +1,39 @@ +TEMPLATE = lib +CONFIG = qt warn_on release thread dll +TARGET = qttestrunner +DESTDIR = ../../lib +win32-msvc:INCLUDEPATH = ../../include +win32-msvc:LIBS = ../../lib/cppunit.lib +win32-msvc:TMAKE_CXXFLAGS = /GX /GR +win32-msvc:DEFINES = QT_DLL QTTESTRUNNER_DLL_BUILD + +HEADERS = MostRecentTests.h \ + TestBrowserDlgImpl.h \ + TestFailureInfo.h \ + TestFailureListViewItem.h \ + TestListViewItem.h \ + TestRunnerDlgImpl.h \ + TestRunnerFailureEvent.h \ + TestRunnerModel.h \ + TestRunnerModelThreadInterface.h \ + TestRunnerTestCaseRunEvent.h \ + TestRunnerThread.h \ + TestRunnerThreadEvent.h \ + TestRunnerThreadFinishedEvent.h \ + ../../include/cppunitui/qt/TestRunner.h +SOURCES = MostRecentTests.cpp \ + TestBrowserDlgImpl.cpp \ + TestFailureInfo.cpp \ + TestFailureListViewItem.cpp \ + TestListViewItem.cpp \ + QtTestRunner.cpp \ + TestRunnerDlgImpl.cpp \ + TestRunnerFailureEvent.cpp \ + TestRunnerModel.cpp \ + TestRunnerModelThreadInterface.cpp \ + TestRunnerTestCaseRunEvent.cpp \ + TestRunnerThread.cpp \ + TestRunnerThreadEvent.cpp \ + TestRunnerThreadFinishedEvent.cpp +INTERFACES = testbrowserdlg.ui \ + testrunnerdlg.ui \ No newline at end of file diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.cpp new file mode 100644 index 0000000000..cef7c5280c --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.cpp @@ -0,0 +1,83 @@ +#include +#include +#include +#include "TestBrowserDlgImpl.h" +#include "TestListViewItem.h" + + +/* + * Constructs a TestBrowser which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' + * + * The dialog will by default be modeless, unless you set 'modal' to + * TRUE to construct a modal dialog. + */ +TestBrowser::TestBrowser( QWidget* parent, const char* name, bool modal, WFlags fl ) + : TestBrowserBase( parent, name, modal, fl ), + _selectedTest( NULL ) +{ + _listTests->setRootIsDecorated( TRUE ); +} + +/* + * Destroys the object and frees any allocated resources + */ +TestBrowser::~TestBrowser() +{ + // no need to delete child widgets, Qt does it all for us +} + + +void +TestBrowser::setRootTest( CPPUNIT_NS::Test *rootTest ) +{ + QListViewItem *dummyRoot = new QListViewItem( _listTests ); + + insertItemFor( rootTest, dummyRoot ); + + dummyRoot->firstChild()->moveItem( dummyRoot ); + delete dummyRoot; + + _listTests->firstChild()->setOpen( TRUE ); + _listTests->triggerUpdate(); +} + + +void +TestBrowser::insertItemFor( CPPUNIT_NS::Test *test, + QListViewItem *parentItem ) +{ + QListViewItem *item = new TestListViewItem( test, parentItem ); + QString testName = QString::fromLatin1( test->getName().c_str() ); + item->setText( 0, testName ); + if ( test->getChildTestCount() > 0 || // suite with test + test->countTestCases() == 0 ) // empty suite + { + for ( int index =0; index < test->getChildTestCount(); ++index ) + insertItemFor( test->getChildTestAt( index ), item ); + } +} + + +CPPUNIT_NS::Test * +TestBrowser::selectedTest() +{ + return _selectedTest; +} + + +void +TestBrowser::accept() +{ + TestListViewItem *item = (TestListViewItem *)_listTests->selectedItem(); + if ( item == NULL ) + { + QMessageBox::information( this, tr("Selected test"), + tr( "You must select a test." ) ); + return; + } + + _selectedTest = item->test(); + + TestBrowserBase::accept(); +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.h b/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.h new file mode 100644 index 0000000000..d4c113a0bb --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.h @@ -0,0 +1,32 @@ +#ifndef TESTBROWSER_H +#define TESTBROWSER_H + +#include +#include "testbrowserdlg.h" + +class QListViewItem; + +class TestBrowser : public TestBrowserBase +{ + Q_OBJECT + +public: + TestBrowser( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + ~TestBrowser(); + + void setRootTest( CPPUNIT_NS::Test *rootTest ); + + CPPUNIT_NS::Test *selectedTest(); + +protected slots: + void accept(); + +private: + void insertItemFor( CPPUNIT_NS::Test *test, + QListViewItem *parentItem ); + +private: + CPPUNIT_NS::Test *_selectedTest; +}; + +#endif // TESTBROWSER_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.cpp new file mode 100644 index 0000000000..54c5b1dfe5 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.cpp @@ -0,0 +1,21 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestFailureInfo.cpp for class TestFailureInfo +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/20 +// ////////////////////////////////////////////////////////////////////////// + +#include "TestFailureInfo.h" +#include + + +TestFailureInfo::TestFailureInfo( CPPUNIT_NS::Test *failedTest, + CPPUNIT_NS::Exception *thrownException, + bool isError ) : + CPPUNIT_NS::TestFailure( failedTest, thrownException->clone(), isError ) +{ +} + + +TestFailureInfo::~TestFailureInfo() +{ +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.h b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.h new file mode 100644 index 0000000000..64a2ceb5e1 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.h @@ -0,0 +1,43 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestFailureInfo.h for class TestFailureInfo +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/20 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTFAILUREINFO_H +#define TESTFAILUREINFO_H + +#include + + +/*! \class TestFailureInfo + * \brief This class represents a test failure. + */ +class TestFailureInfo : public CPPUNIT_NS::TestFailure +{ +public: + /*! Constructs a TestFailureInfo object. + */ + TestFailureInfo( CPPUNIT_NS::Test *failedTest, + CPPUNIT_NS::Exception *thrownException, + bool isError ); + + /*! Destructor. + */ + virtual ~TestFailureInfo(); + +private: + /// Prevents the use of the copy constructor. + TestFailureInfo( const TestFailureInfo © ); + + /// Prevents the use of the copy operator. + void operator =( const TestFailureInfo © ); +}; + + + +// Inlines methods for TestFailureInfo: +// ------------------------------------ + + + +#endif // TESTFAILUREINFO_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.cpp new file mode 100644 index 0000000000..d4aa13a141 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.cpp @@ -0,0 +1,28 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestFailureListViewItem.cpp for class TestFailureListViewItem +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/20 +// ////////////////////////////////////////////////////////////////////////// + +#include "TestFailureListViewItem.h" + + +TestFailureListViewItem::TestFailureListViewItem( + TestFailureInfo *failure, + QListView *parent ) : + QListViewItem( parent ), + _failure( failure ) +{ +} + + +TestFailureListViewItem::~TestFailureListViewItem() +{ +} + + +TestFailureInfo * +TestFailureListViewItem::failure() +{ + return _failure; +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.h b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.h new file mode 100644 index 0000000000..97d371695a --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.h @@ -0,0 +1,48 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestFailureListViewItem.h for class TestFailureListViewItem +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/20 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTFAILURELISTVIEWITEM_H +#define TESTFAILURELISTVIEWITEM_H + +#include +class TestFailureInfo; + + +/*! \class TestFailureListViewItem + * \brief This class represents a test failure item. + */ +class TestFailureListViewItem : public QListViewItem +{ +public: + /*! Constructs a TestFailureListViewItem object. + */ + TestFailureListViewItem( TestFailureInfo *failure, + QListView *parent ); + + /*! Destructor. + */ + virtual ~TestFailureListViewItem(); + + TestFailureInfo *failure(); + +private: + /// Prevents the use of the copy constructor. + TestFailureListViewItem( const TestFailureListViewItem © ); + + /// Prevents the use of the copy operator. + void operator =( const TestFailureListViewItem © ); + +private: + TestFailureInfo *_failure; +}; + + + +// Inlines methods for TestFailureListViewItem: +// -------------------------------------------- + + + +#endif // TESTFAILURELISTVIEWITEM_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.cpp new file mode 100644 index 0000000000..b4032dc1f7 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.cpp @@ -0,0 +1,27 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestListViewItem.cpp for class TestListViewItem +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/19 +// ////////////////////////////////////////////////////////////////////////// + +#include "TestListViewItem.h" + + +TestListViewItem::TestListViewItem( CPPUNIT_NS::Test *test, + QListViewItem *parent ) : + QListViewItem( parent ), + _test( test ) +{ +} + + +TestListViewItem::~TestListViewItem() +{ +} + + +CPPUNIT_NS::Test * +TestListViewItem::test() const +{ + return _test; +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.h b/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.h new file mode 100644 index 0000000000..4032f688c1 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.h @@ -0,0 +1,43 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestListViewItem.h for class TestListViewItem +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/19 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTLISTVIEWITEM_H +#define TESTLISTVIEWITEM_H + +#include +#include + + +/*! \class TestListViewItem + * \brief This class represents an list item pointing to a Test. + */ +class TestListViewItem : public QListViewItem +{ +public: + /*! Constructs a TestListViewItem object. + */ + TestListViewItem( CPPUNIT_NS::Test *test, + QListViewItem *parent ); + + /*! Destructor. + */ + virtual ~TestListViewItem(); + + CPPUNIT_NS::Test *test() const; + +private: + /// Prevents the use of the copy constructor. + TestListViewItem( const TestListViewItem © ); + + /// Prevents the use of the copy operator. + void operator =( const TestListViewItem © ); + +private: + CPPUNIT_NS::Test *_test; +}; + + + +#endif // TESTLISTVIEWITEM_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.cpp new file mode 100644 index 0000000000..d00616c873 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.cpp @@ -0,0 +1,259 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "TestRunnerDlgImpl.h" +#include "TestBrowserDlgImpl.h" +#include "MostRecentTests.h" +#include "TestRunnerModel.h" +#include "TestFailureListViewItem.h" + + +/* + * Constructs a TestRunnerDlg which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' + * + * The dialog will by default be modeless, unless you set 'modal' to + * TRUE to construct a modal dialog. + */ +TestRunnerDlg::TestRunnerDlg( QWidget* parent, const char* name, bool modal, WFlags fl ) + : TestRunnerDlgBase( parent, name, modal, fl ), + _model( NULL ), + _recentTests( new MostRecentTests() ) +{ +} + + +/* + * Destroys the object and frees any allocated resources + */ +TestRunnerDlg::~TestRunnerDlg() +{ + delete _model; + delete _recentTests; +} + + +void +TestRunnerDlg::setModel( TestRunnerModel *model, + bool autorunTest ) +{ + delete _model; + + _model = model; + + // update combo when recent list change + connect( _recentTests, SIGNAL( listChanged() ), + SLOT( refreshRecentTests() ) ); + + // make selected test in combo the "most recent" + connect( _comboTest, SIGNAL( activated(int) ), + _recentTests, SLOT( selectTestToRun(int) ) ); + + // refresh the test report counters when a test is selected + connect( _recentTests, SIGNAL( testToRunChanged(CPPUNIT_NS::Test *) ), + _model, SLOT( resetTestReportCounterFor(CPPUNIT_NS::Test *) ) ); + + // refresh progress bar + connect( _model, SIGNAL( numberOfTestCaseChanged(int) ), + _progressRun, SLOT( setTotalSteps(int) ) ); + connect( _model, SIGNAL( numberOfTestCaseRunChanged(int) ), + _progressRun, SLOT( setProgress(int) ) ); + + // refresh test report counters + connect( _model, SIGNAL( numberOfTestCaseChanged( int ) ), + SLOT( setNumberOfTestCase( int ) ) ); + connect( _model, SIGNAL( numberOfTestCaseRunChanged( int ) ), + SLOT( setNumberOfTestCaseRun( int ) ) ); + connect( _model, SIGNAL( numberOfTestCaseFailureChanged( int ) ), + SLOT( setNumberOfTestCaseFailure( int ) ) ); + + // clear failure list + connect( _model, SIGNAL( failuresCleared() ), + SLOT( clearTestFailureList() ) ); + + // clear failure detail list + connect( _model, SIGNAL( failuresCleared() ), + SLOT( clearFailureDetail() ) ); + + // add failure to failure list + connect( _model, SIGNAL( failureAdded(TestFailureInfo *) ), + SLOT( reportFailure(TestFailureInfo*) ) ); + + // show detail on failure selection + connect( _listFailures, SIGNAL( selectionChanged(QListViewItem*) ), + SLOT( showFailureDetailAt(QListViewItem*) ) ); + + // disable button when running test + connect( _model, SIGNAL( testRunStarted( CPPUNIT_NS::Test *, CPPUNIT_NS::TestResult *) ), + SLOT( beRunningTest() ) ); + + // enable button when finished running test + connect( _model, SIGNAL( testRunFinished() ), + SLOT( beCanRunTest() ) ); + + _recentTests->setTestToRun( model->rootTest() ); + beCanRunTest(); + + if ( autorunTest ) + runTest(); +} + + +void +TestRunnerDlg::browseForTest() +{ + TestBrowser *dlg = new TestBrowser( this, + "Test Browser", + TRUE ); + dlg->setRootTest( _model->rootTest() ); + + if ( dlg->exec() ) + _recentTests->setTestToRun( dlg->selectedTest() ); + + delete dlg; +} + + +void +TestRunnerDlg::runTest() +{ + CPPUNIT_NS::Test *testToRun = _recentTests->testToRun(); + if ( testToRun == NULL ) + return; + _model->runTest( testToRun ); +} + + +void +TestRunnerDlg::stopTest() +{ + _model->stopRunningTest(); + if ( _model->isTestRunning() ) + beStoppingTest(); +} + + +void +TestRunnerDlg::clearTestFailureList() +{ + _listFailures->clear(); +} + + +void +TestRunnerDlg::refreshRecentTests() +{ + _comboTest->clear(); + for ( int index =0; index < _recentTests->testCount(); ++index ) + _comboTest->insertItem( _recentTests->testNameAt( index ) ); +} + + +void +TestRunnerDlg::setNumberOfTestCase( int numberOfTestCase ) +{ + _labelTestCaseCount->setText( QString::number( numberOfTestCase ) ); +} + + +void +TestRunnerDlg::setNumberOfTestCaseRun( int numberOfRun ) +{ + _labelTestRunCount->setText( QString::number( numberOfRun ) ); +} + + +void +TestRunnerDlg::setNumberOfTestCaseFailure( int numberOfFailure ) +{ + _labelFailureCount->setText( QString::number( numberOfFailure ) ); +} + + +void +TestRunnerDlg::reportFailure( TestFailureInfo *failure ) +{ + QListViewItem *item = new TestFailureListViewItem( failure, + _listFailures ); + item->setText( indexType, + failure->isError() ? tr("Error") : tr("Failure") ); + std::string failedtestName = failure->failedTestName().c_str(); + item->setText( indexTestName, QString::fromLatin1( failedtestName.c_str() ) ); + + CPPUNIT_NS::Exception *thrownException = failure->thrownException(); + item->setText( indexMessage, thrownException->what() ); + item->setText( indexFilename, failure->sourceLine().fileName().c_str() ); + item->setText( indexLineNumber, + QString::number( failure->sourceLine().lineNumber() ) ); + + _listFailures->insertItem( item ); + _listFailures->triggerUpdate(); + + if ( _listFailures->childCount() == 1 ) + _listFailures->setSelected( item, TRUE ); +} + + +void +TestRunnerDlg::showFailureDetailAt( QListViewItem *selection ) +{ + TestFailureInfo *failure = ((TestFailureListViewItem*)selection)->failure(); + + QString title = tr("Failure detail for: "); + title += QString::fromLatin1( failure->failedTestName().c_str() ); + _groupFailureDetail->setTitle( title ); + + QString location( failure->sourceLine().fileName().c_str() ); + location += " (" + + QString::number( failure->sourceLine().lineNumber() ) + + ")"; + _labelFailureLocation->setText( location ); + + _editFailureMessage->setText( failure->thrownException()->what() ); +} + + +void +TestRunnerDlg::clearFailureDetail() +{ + _groupFailureDetail->setTitle( tr("Failure detail for:...") ); + _labelFailureLocation->setText( QString::null ); + _editFailureMessage->setText( QString::null ); +} + + +void +TestRunnerDlg::beCanRunTest() +{ + _buttonRunTest->setEnabled( true ); + _buttonBrowse->setEnabled( true ); + _comboTest->setEnabled( true ); + _buttonStop->setDisabled( true ); + _buttonStop->setText( tr("Stop") ); + _buttonClose->setEnabled( true ); +} + + +void +TestRunnerDlg::beRunningTest() +{ + _buttonRunTest->setDisabled( true ); + _buttonBrowse->setDisabled( true ); + _comboTest->setDisabled( true ); + _buttonStop->setEnabled( true ); + _buttonStop->setText( tr("Stop") ); + _buttonClose->setDisabled( true ); +} + + +void +TestRunnerDlg::beStoppingTest() +{ + _buttonStop->setDisabled( true ); + _buttonStop->setText( tr("Stopping") ); +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.h new file mode 100644 index 0000000000..a3befc6d49 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.h @@ -0,0 +1,58 @@ +#ifndef TESTRUNNERDLG_H +#define TESTRUNNERDLG_H + +#include "testrunnerdlg.h" +#include +class TestRunnerModel; +class MostRecentTests; +class TestFailureInfo; +class QListViewItem; + +class TestRunnerDlg : public TestRunnerDlgBase +{ + Q_OBJECT + +public: + TestRunnerDlg( QWidget* parent = 0, + const char* name = 0, + bool modal = FALSE, + WFlags fl = 0 ); + ~TestRunnerDlg(); + + void setModel( TestRunnerModel *model, + bool autorunTest ); + +public slots: + void refreshRecentTests(); + +protected slots: + void browseForTest(); + void runTest(); + void stopTest(); + void setNumberOfTestCase( int numberOfTestCase ); + void setNumberOfTestCaseRun( int numberOfRun ); + void setNumberOfTestCaseFailure( int numberOfFailure ); + void clearTestFailureList(); + void clearFailureDetail(); + void reportFailure( TestFailureInfo *failure ); + void showFailureDetailAt( QListViewItem *selection ); + void beCanRunTest(); + void beRunningTest(); + void beStoppingTest(); + +private: + + enum Columns + { + indexType =0, + indexTestName, + indexMessage, + indexFilename, + indexLineNumber + }; + + TestRunnerModel *_model; + MostRecentTests *_recentTests; +}; + +#endif // TESTRUNNERDLG_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.cpp new file mode 100644 index 0000000000..bceb2f615a --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.cpp @@ -0,0 +1,28 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestRunnerFailureEvent.cpp for class TestRunnerFailureEvent +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/22 +// ////////////////////////////////////////////////////////////////////////// + +#include "TestRunnerFailureEvent.h" +#include "TestRunnerModelThreadInterface.h" + + +TestRunnerFailureEvent::TestRunnerFailureEvent( TestFailureInfo *failure, + int numberOfFailure ) : + _failure( failure ), + _numberOfFailure( numberOfFailure ) +{ +} + + +TestRunnerFailureEvent::~TestRunnerFailureEvent() +{ +} + + +void +TestRunnerFailureEvent::process( TestRunnerModelThreadInterface *target ) +{ + target->eventNewFailure( _failure, _numberOfFailure ); +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.h new file mode 100644 index 0000000000..fa6fef0582 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.h @@ -0,0 +1,48 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunnerFailureEvent.h for class TestRunnerFailureEvent +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/22 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTRUNNERFAILUREEVENT_H +#define TESTRUNNERFAILUREEVENT_H + +#include "TestRunnerThreadEvent.h" +class TestFailureInfo; + + +/*! \class TestRunnerFailureEvent + * \brief This class represents a new TestCase failure event. + */ +class TestRunnerFailureEvent : public TestRunnerThreadEvent +{ +public: + /*! Constructs a TestRunnerFailureEvent object. + */ + TestRunnerFailureEvent( TestFailureInfo *failure, + int numberOfFailure ); + + /// Destructor. + virtual ~TestRunnerFailureEvent(); + +private: + /// Prevents the use of the copy constructor. + TestRunnerFailureEvent( const TestRunnerFailureEvent © ); + + /// Prevents the use of the copy operator. + void operator =( const TestRunnerFailureEvent © ); + + void process( TestRunnerModelThreadInterface *target ); + +private: + TestFailureInfo *_failure; + int _numberOfFailure; +}; + + + +// Inlines methods for TestRunnerFailureEvent: +// ------------------------------------------- + + + +#endif // TESTRUNNERFAILUREEVENT_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.cpp new file mode 100644 index 0000000000..7058101dcd --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.cpp @@ -0,0 +1,221 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestRunnerModel.cpp for class TestRunnerModel +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/20 +// ////////////////////////////////////////////////////////////////////////// + +#include +#include "TestRunnerFailureEvent.h" +#include "TestRunnerModel.h" +#include "TestRunnerTestCaseRunEvent.h" +#include "TestRunnerThread.h" +#include "TestRunnerThreadFinishedEvent.h" + + +TestRunnerModel::TestRunnerModel( CPPUNIT_NS::Test *rootTest ) : + _rootTest( rootTest ), + _runnerThread( NULL ), + _result( NULL ) +{ +} + + +TestRunnerModel::~TestRunnerModel() +{ + delete _runnerThread; +} + + +CPPUNIT_NS::Test * +TestRunnerModel::rootTest() +{ + return _rootTest; +} + + +void +TestRunnerModel::resetTestReportCounterFor( CPPUNIT_NS::Test *testToRun ) +{ + if ( isTestRunning() ) + return; + + { + LockGuard guard( _lock ); + _numberOfTestCase = testToRun->countTestCases(); + _numberOfTestCaseRun =0; + _numberOfTestCaseFailure =0; + _failures.clear(); + } + emit failuresCleared(); + + emit numberOfTestCaseChanged( _numberOfTestCase ); + emit numberOfTestCaseRunChanged( _numberOfTestCaseRun ); + emit numberOfTestCaseFailureChanged( _numberOfTestCaseFailure ); +} + + +int +TestRunnerModel::numberOfTestCase() +{ + LockGuard guard( _lock ); + return _numberOfTestCase; +} + + +int +TestRunnerModel::numberOfTestCaseFailure() +{ + LockGuard guard( _lock ); + return _numberOfTestCaseFailure; +} + + +int +TestRunnerModel::numberOfTestCaseRun() +{ + LockGuard guard( _lock ); + return _numberOfTestCaseRun; +} + + +TestFailureInfo * +TestRunnerModel::failureAt( int index ) +{ + LockGuard guard( _lock ); + return _failures.at( index ); +} + + +void +TestRunnerModel::runTest( CPPUNIT_NS::Test *testToRun ) +{ + if ( isTestRunning() ) + return; + + resetTestReportCounterFor( testToRun ); + + { + LockGuard guard( _lock ); + delete _result; + _result = new CPPUNIT_NS::TestResult(); + _result->addListener( this ); + } + + emit testRunStarted( testToRun, _result ); + + LockGuard guard( _lock ); + _runnerThread = new TestRunnerThread( testToRun, + _result, + this, + new TestRunnerThreadFinishedEvent() ); +} + + +bool +TestRunnerModel::isTestRunning() +{ + LockGuard guard( _lock ); + return _runnerThread != NULL && _runnerThread->running(); +} + + +void +TestRunnerModel::stopRunningTest() +{ + { + LockGuard guard( _lock ); + if ( _result == NULL ) + return; + } + if ( isTestRunning() ) + { + LockGuard guard( _lock ); + _result->stop(); + } +} + + +// Called from the TestRunnerThread. +void +TestRunnerModel::startTest( CPPUNIT_NS::Test *test ) +{ +} + + +// Called from the TestRunnerThread. +void +TestRunnerModel::addFailure( const CPPUNIT_NS::TestFailure &failure ) +{ + addFailureInfo( new TestFailureInfo( failure.failedTest(), + failure.thrownException(), + failure.isError() ) ); +} + + +// Called from the TestRunnerThread. +void +TestRunnerModel::endTest( CPPUNIT_NS::Test *test ) +{ + int numberOfTestCaseRun; + { + LockGuard guard( _lock ); + numberOfTestCaseRun = ++_numberOfTestCaseRun; + } + + // emit signal asynchronously + QThread::postEvent( this, + new TestRunnerTestCaseRunEvent( numberOfTestCaseRun ) ); +} + + +// Called from the TestRunnerThread. +void +TestRunnerModel::addFailureInfo( TestFailureInfo *failure ) +{ + int numberOfTestCaseFailure; + { + LockGuard guard( _lock ); + _failures.append( failure ); + numberOfTestCaseFailure = ++_numberOfTestCaseFailure; + } + + // emit signals asynchronously + QThread::postEvent( this, + new TestRunnerFailureEvent( failure, + numberOfTestCaseFailure ) ); +} + + +bool +TestRunnerModel::event( QEvent *event ) +{ + if ( event->type() != QEvent::User ) + return false; + + TestRunnerThreadEvent *threadEvent = (TestRunnerThreadEvent *)event; + threadEvent->process( this ); + return true; +} + + +void +TestRunnerModel::eventNewFailure( TestFailureInfo *failure, + int numberOfFailure ) +{ + emit numberOfTestCaseFailureChanged( numberOfFailure ); + emit failureAdded( failure ); +} + + +void +TestRunnerModel::eventNumberOfTestRunChanged( int numberOfRun ) +{ + emit numberOfTestCaseRunChanged( numberOfRun ); +} + + +void +TestRunnerModel::eventTestRunnerThreadFinished() +{ + emit testRunFinished(); +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.h new file mode 100644 index 0000000000..a9893dc7f4 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.h @@ -0,0 +1,154 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunnerModel.h for class TestRunnerModel +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/20 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTRUNNERMODEL_H +#define TESTRUNNERMODEL_H + +#include +#include +#include +#include +#include +#include "TestFailureInfo.h" +#include "TestRunnerModelThreadInterface.h" +class TestRunnerThread; + +/*! \class TestRunnerModel + * \brief This class represents the model for the TestRunner. + * + * Warning: methods that override CppUnit::TestListener are called + * from the TestRunner thread ! + * + * Warning: _lock is not recursive. Might want to introduce Doug Lea + * Thread Interface pattern for methods used while locked (isTestRunning()). + * + * Refactoring note: a large part of this object actually duplicate + * TestResult. + */ +class TestRunnerModel : public QObject, + private CPPUNIT_NS::TestListener, + private TestRunnerModelThreadInterface +{ + Q_OBJECT +public: + /*! Constructs a TestRunnerModel object. + */ + TestRunnerModel( CPPUNIT_NS::Test *rootTest ); + + /*! Destructor. + */ + virtual ~TestRunnerModel(); + + CPPUNIT_NS::Test *rootTest(); + + int numberOfTestCase(); + int numberOfTestCaseFailure(); + int numberOfTestCaseRun(); + + TestFailureInfo *failureAt( int index ); + + + bool isTestRunning(); + +signals: + void numberOfTestCaseChanged( int numberOfTestCase ); + void numberOfTestCaseRunChanged( int numberOfRun ); + void numberOfTestCaseFailureChanged( int numberOfFailure ); + void failureAdded( TestFailureInfo *failure ); + void failuresCleared(); + void testRunStarted( CPPUNIT_NS::Test *runningTest, + CPPUNIT_NS::TestResult *result ); + void testRunFinished(); + +public slots: + void resetTestReportCounterFor( CPPUNIT_NS::Test *testToRun ); + + /*! Request to run the specified test. + * Returns immedialty. If a test is already running, then + * the run request is ignored. + */ + void runTest( CPPUNIT_NS::Test *testToRun ); + + /*! Request to stop running test. + * This methods returns immediately. testRunFinished() signal + * should be used to now when the test actually stopped running. + */ + void stopRunningTest(); + +private: + /// Prevents the use of the copy constructor. + TestRunnerModel( const TestRunnerModel © ); + + /// Prevents the use of the copy operator. + void operator =( const TestRunnerModel © ); + + /// Called from the TestRunnerThread. + void startTest( CPPUNIT_NS::Test *test ); + + /// Called from the TestRunnerThread. + void addFailure( const CPPUNIT_NS::TestFailure &failure ); + + /// Called from the TestRunnerThread. + void endTest( CPPUNIT_NS::Test *test ); + + /// Called from the TestRunnerThread. + void addFailureInfo( TestFailureInfo *failure ); + + bool event( QEvent *event ); + + /*! Emits new failure signals. + * Called by the TestRunnerThreadEvent from the GUI thread to + * emit the following signals: + * - numberOfTestCaseFailureChanged() + * - failureAdded() + */ + void eventNewFailure( TestFailureInfo *failure, + int numberOfFailure ); + + /*! Emits numberOfTestCaseRunChanged() signal. + * Called by the TestRunnerThreadEvent from the GUI thread to + * emit the numberOfTestCaseRunChanged() signal. + */ + void eventNumberOfTestRunChanged( int numberOfRun ); + + void eventTestRunnerThreadFinished(); + +private: + class LockGuard + { + public: + LockGuard( QMutex &mutex ) : _mutex( mutex ) + { + _mutex.lock(); + } + + ~LockGuard() + { + _mutex.unlock(); + } + + private: + QMutex &_mutex; + }; + + + QMutex _lock; + CPPUNIT_NS::Test *_rootTest; + int _numberOfTestCase; + int _numberOfTestCaseRun; + int _numberOfTestCaseFailure; + QList _failures; + TestRunnerThread *_runnerThread; + CPPUNIT_NS::TestResult *_result; +}; + + + +// Inlines methods for TestRunnerModel: +// ------------------------------------ + + + +#endif // TESTRUNNERMODEL_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.cpp new file mode 100644 index 0000000000..319605493f --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.cpp @@ -0,0 +1,8 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestRunnerModelThreadInterface.cpp for class TestRunnerModelThreadInterface +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/21 +// ////////////////////////////////////////////////////////////////////////// + +#include "TestRunnerModelThreadInterface.h" + diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.h new file mode 100644 index 0000000000..6a663a57fb --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.h @@ -0,0 +1,35 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunnerModelThreadInterface.h for class TestRunnerModelThreadInterface +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/21 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTRUNNERMODELTHREADINTERFACE_H +#define TESTRUNNERMODELTHREADINTERFACE_H + +class TestFailureInfo; + +/*! \class TestRunnerModelThreadInterface + * \brief This class represents the interface used to process gui thread event. + */ +class TestRunnerModelThreadInterface +{ +public: + /// Destructor. + virtual ~TestRunnerModelThreadInterface() {} + + virtual void eventNewFailure( TestFailureInfo *failure, + int numberOfFailure ) =0; + + virtual void eventNumberOfTestRunChanged( int numberOfRun ) =0; + + virtual void eventTestRunnerThreadFinished() =0; +}; + + + +// Inlines methods for TestRunnerModelThreadInterface: +// --------------------------------------------------- + + + +#endif // TESTRUNNERMODELTHREADINTERFACE_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.cpp new file mode 100644 index 0000000000..177b3589a1 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.cpp @@ -0,0 +1,26 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestRunnerTestCaseRunEvent.cpp for class TestRunnerTestCaseRunEvent +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/22 +// ////////////////////////////////////////////////////////////////////////// + +#include "TestRunnerModelThreadInterface.h" +#include "TestRunnerTestCaseRunEvent.h" + + +TestRunnerTestCaseRunEvent::TestRunnerTestCaseRunEvent( int numberOfRun ) : + _numberOfRun( numberOfRun ) +{ +} + + +TestRunnerTestCaseRunEvent::~TestRunnerTestCaseRunEvent() +{ +} + + +void +TestRunnerTestCaseRunEvent::process( TestRunnerModelThreadInterface *target ) +{ + target->eventNumberOfTestRunChanged( _numberOfRun ); +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.h new file mode 100644 index 0000000000..bd2c635df1 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.h @@ -0,0 +1,45 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunnerTestCaseRunEvent.h for class TestRunnerTestCaseRunEvent +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/22 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTRUNNERTESTCASERUNEVENT_H +#define TESTRUNNERTESTCASERUNEVENT_H + +#include "TestRunnerThreadEvent.h" + + +/*! \class TestRunnerTestCaseRunEvent + * \brief This class represents a new TestCase run event. + */ +class TestRunnerTestCaseRunEvent : public TestRunnerThreadEvent +{ +public: + /*! Constructs a TestRunnerTestCaseRunEvent object. + */ + TestRunnerTestCaseRunEvent( int numberOfRun ); + + /// Destructor. + virtual ~TestRunnerTestCaseRunEvent(); + +private: + /// Prevents the use of the copy constructor. + TestRunnerTestCaseRunEvent( const TestRunnerTestCaseRunEvent © ); + + /// Prevents the use of the copy operator. + void operator =( const TestRunnerTestCaseRunEvent © ); + + void process( TestRunnerModelThreadInterface *target ); + +private: + int _numberOfRun; +}; + + + +// Inlines methods for TestRunnerTestCaseRunEvent: +// ----------------------------------------------- + + + +#endif // TESTRUNNERTESTCASERUNEVENT_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.cpp new file mode 100644 index 0000000000..cc455262e7 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.cpp @@ -0,0 +1,38 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestRunnerThread.cpp for class TestRunnerThread +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/22 +// ////////////////////////////////////////////////////////////////////////// + +#include "TestRunnerThread.h" +#include "TestRunnerThreadFinishedEvent.h" + + +TestRunnerThread::TestRunnerThread( CPPUNIT_NS::Test *testToRun, + CPPUNIT_NS::TestResult *result, + QObject *eventTarget, + TestRunnerThreadFinishedEvent *finishedEvent ) : + _testToRun( testToRun ), + _result( result ), + _eventTarget( eventTarget ), + _finishedEvent( finishedEvent ) +{ + start(); +} + + +TestRunnerThread::~TestRunnerThread() +{ +} + + +void +TestRunnerThread::run() +{ + _testToRun->run( _result ); + + // Signal TestRunnerModel GUI thread + QThread::postEvent( _eventTarget, _finishedEvent ); + _eventTarget = NULL; + _finishedEvent = NULL; +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.h new file mode 100644 index 0000000000..54cb4f17e2 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.h @@ -0,0 +1,55 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunnerThread.h for class TestRunnerThread +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/22 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTRUNNERTHREAD_H +#define TESTRUNNERTHREAD_H + +#include +#include +#include +class QObject; +class TestRunnerThreadFinishedEvent; + + +/*! \class TestRunnerThread + * \brief This class represents the thread used to run TestCase. + */ +class TestRunnerThread : public QThread +{ +public: + /*! Constructs a TestRunnerThread object. + */ + TestRunnerThread( CPPUNIT_NS::Test *testToRun, + CPPUNIT_NS::TestResult *result, + QObject *eventTarget, + TestRunnerThreadFinishedEvent *finishedEvent ); + + /// Destructor. + virtual ~TestRunnerThread(); + +private: + /// Prevents the use of the copy constructor. + TestRunnerThread( const TestRunnerThread © ); + + /// Prevents the use of the copy operator. + void operator =( const TestRunnerThread © ); + + void run(); + +private: + CPPUNIT_NS::Test *_testToRun; + CPPUNIT_NS::TestResult *_result; + QObject *_eventTarget; + TestRunnerThreadFinishedEvent *_finishedEvent; +}; + + + +// Inlines methods for TestRunnerThread: +// ------------------------------------- + + + +#endif // TESTRUNNERTHREAD_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.cpp new file mode 100644 index 0000000000..17be770f74 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.cpp @@ -0,0 +1,19 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestRunnerThreadEvent.cpp for class TestRunnerThreadEvent +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/21 +// ////////////////////////////////////////////////////////////////////////// + +#include "TestRunnerThreadEvent.h" + + +TestRunnerThreadEvent::TestRunnerThreadEvent() : + QCustomEvent( User ) +{ +} + + +TestRunnerThreadEvent::~TestRunnerThreadEvent() +{ +} + diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.h new file mode 100644 index 0000000000..32389bddb9 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.h @@ -0,0 +1,37 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunnerThreadEvent.h for class TestRunnerThreadEvent +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/21 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTRUNNERTHREADEVENT_H +#define TESTRUNNERTHREADEVENT_H + +#include +class TestRunnerModelThreadInterface; + +/*! \class TestRunnerThreadEvent + * \brief This class represents an event send by the test runner thread. + */ +class TestRunnerThreadEvent : public QCustomEvent +{ +public: + /*! Constructs a TestRunnerThreadEvent object. + */ + TestRunnerThreadEvent(); + + /// Destructor. + virtual ~TestRunnerThreadEvent(); + + virtual void process( TestRunnerModelThreadInterface *target ) =0; + +private: + /// Prevents the use of the copy constructor. + TestRunnerThreadEvent( const TestRunnerThreadEvent © ); + + /// Prevents the use of the copy operator. + void operator =( const TestRunnerThreadEvent © ); +}; + + + +#endif // TESTRUNNERTHREADEVENT_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.cpp new file mode 100644 index 0000000000..5c2f2ba7e5 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.cpp @@ -0,0 +1,25 @@ +// ////////////////////////////////////////////////////////////////////////// +// Implementation file TestRunnerThreadFinishedEvent.cpp for class TestRunnerThreadFinishedEvent +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/22 +// ////////////////////////////////////////////////////////////////////////// + +#include "TestRunnerThreadFinishedEvent.h" +#include "TestRunnerModelThreadInterface.h" + + +TestRunnerThreadFinishedEvent::TestRunnerThreadFinishedEvent() +{ +} + + +TestRunnerThreadFinishedEvent::~TestRunnerThreadFinishedEvent() +{ +} + + +void +TestRunnerThreadFinishedEvent::process( TestRunnerModelThreadInterface *target ) +{ + target->eventTestRunnerThreadFinished(); +} diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.h new file mode 100644 index 0000000000..b390e7a7ef --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.h @@ -0,0 +1,42 @@ +// ////////////////////////////////////////////////////////////////////////// +// Header file TestRunnerThreadFinishedEvent.h for class TestRunnerThreadFinishedEvent +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: 2001/09/22 +// ////////////////////////////////////////////////////////////////////////// +#ifndef TESTRUNNERTHREADFINISHEDEVENT_H +#define TESTRUNNERTHREADFINISHEDEVENT_H + +#include "TestRunnerThreadEvent.h" + + +/*! \class TestRunnerThreadFinishedEvent + * \brief This class represents an event indicating that the TestRunnerThread finished. + */ +class TestRunnerThreadFinishedEvent : public TestRunnerThreadEvent +{ +public: + /*! Constructs a TestRunnerThreadFinishedEvent object. + */ + TestRunnerThreadFinishedEvent(); + + /// Destructor. + virtual ~TestRunnerThreadFinishedEvent(); + + void process( TestRunnerModelThreadInterface *target ); + +private: + /// Prevents the use of the copy constructor. + TestRunnerThreadFinishedEvent( const TestRunnerThreadFinishedEvent © ); + + /// Prevents the use of the copy operator. + void operator =( const TestRunnerThreadFinishedEvent © ); +}; + + + +// Inlines methods for TestRunnerThreadFinishedEvent: +// -------------------------------------------------- + + + +#endif // TESTRUNNERTHREADFINISHEDEVENT_H diff --git a/lib/cppunit-1.10.0/src/qttestrunner/build b/lib/cppunit-1.10.0/src/qttestrunner/build new file mode 100644 index 0000000000..c3a01da475 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/build @@ -0,0 +1,2 @@ +tmake qttestrunner.pro -o makefile +export INTERFACE_DECL_PATH=. && make diff --git a/lib/cppunit-1.10.0/src/qttestrunner/build.bat b/lib/cppunit-1.10.0/src/qttestrunner/build.bat new file mode 100755 index 0000000000..30074c4f25 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/build.bat @@ -0,0 +1,3 @@ +tmake QtTestRunnerDll.pro -o Makefile +nmake clean +nmake diff --git a/lib/cppunit-1.10.0/src/qttestrunner/qttestrunner.pro b/lib/cppunit-1.10.0/src/qttestrunner/qttestrunner.pro new file mode 100644 index 0000000000..2a52339f34 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/qttestrunner.pro @@ -0,0 +1,44 @@ +TEMPLATE = lib +CONFIG += qt warn_on thread + +HEADERS = MostRecentTests.h \ + TestBrowserDlgImpl.h \ + TestFailureInfo.h \ + TestFailureListViewItem.h \ + TestListViewItem.h \ + TestRunnerDlgImpl.h \ + TestRunnerFailureEvent.h \ + TestRunnerModel.h \ + TestRunnerModelThreadInterface.h \ + TestRunnerTestCaseRunEvent.h \ + TestRunnerThread.h \ + TestRunnerThreadEvent.h \ + TestRunnerThreadFinishedEvent.h \ + ../../include/cppunit/ui/qt/TestRunner.h + +SOURCES = MostRecentTests.cpp \ + TestBrowserDlgImpl.cpp \ + TestFailureInfo.cpp \ + TestFailureListViewItem.cpp \ + TestListViewItem.cpp \ + QtTestRunner.cpp \ + TestRunnerDlgImpl.cpp \ + TestRunnerFailureEvent.cpp \ + TestRunnerModel.cpp \ + TestRunnerModelThreadInterface.cpp \ + TestRunnerTestCaseRunEvent.cpp \ + TestRunnerThread.cpp \ + TestRunnerThreadEvent.cpp \ + TestRunnerThreadFinishedEvent.cpp + +INTERFACES = testbrowserdlg.ui \ + testrunnerdlg.ui + +INTERFACE_DECL_PATH = . +DESTDIR = ../../lib +TARGET = qttestrunner +INCLUDEPATH = ../../include +DEPENDPATH = . +OBJECTS_DIR = objs +MOC_DIR = mocs +#!REQUIRES = full-config diff --git a/lib/cppunit-1.10.0/src/qttestrunner/testbrowserdlg.ui b/lib/cppunit-1.10.0/src/qttestrunner/testbrowserdlg.ui new file mode 100644 index 0000000000..4daedf8948 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/testbrowserdlg.ui @@ -0,0 +1,148 @@ + +TestBrowserBase + + QDialog + + name + TestBrowserBase + + + geometry + + 0 + 0 + 352 + 292 + + + + caption + TestBrowser + + + sizeGripEnabled + true + + + + margin + 11 + + + spacing + 6 + + + QListView + + + text + Test Name + + + clickable + true + + + resizeable + true + + + + name + _listTests + + + + QLayoutWidget + + name + Layout6 + + + + margin + 0 + + + spacing + 6 + + + QPushButton + + name + buttonOk + + + caption + + + + text + &Select + + + autoDefault + true + + + default + true + + + + QPushButton + + name + buttonCancel + + + text + &Cancel + + + autoDefault + true + + + + + name + Spacer2 + + + orientation + Vertical + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + + + + + + buttonOk + clicked() + TestBrowserBase + accept() + + + buttonCancel + clicked() + TestBrowserBase + reject() + + + diff --git a/lib/cppunit-1.10.0/src/qttestrunner/testrunnerdlg.ui b/lib/cppunit-1.10.0/src/qttestrunner/testrunnerdlg.ui new file mode 100644 index 0000000000..9727fb1780 --- /dev/null +++ b/lib/cppunit-1.10.0/src/qttestrunner/testrunnerdlg.ui @@ -0,0 +1,687 @@ + +TestRunnerDlgBase + + QDialog + + name + TestRunnerDlgBase + + + geometry + + 0 + 0 + 429 + 370 + + + + caption + Qt Test Runner + + + sizeGripEnabled + true + + + + margin + 11 + + + spacing + 6 + + + QLayoutWidget + + name + Layout25 + + + + margin + 0 + + + spacing + 6 + + + QLayoutWidget + + name + Layout24 + + + + margin + 0 + + + spacing + 6 + + + QComboBox + + name + _comboTest + + + enabled + true + + + sizePolicy + + 3 + 0 + + + + autoResize + false + + + + + name + Spacer27 + + + orientation + Vertical + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + QLayoutWidget + + name + Layout9 + + + + margin + 0 + + + spacing + 6 + + + QLayoutWidget + + name + Layout8 + + + + margin + 0 + + + spacing + 6 + + + QLabel + + name + TextLabel2 + + + text + TestCases: + + + + QLabel + + name + _labelTestCaseCount + + + text + 999999 + + + + + + + name + Spacer3 + + + orientation + Horizontal + + + sizeType + Fixed + + + sizeHint + + 20 + 20 + + + + + QLayoutWidget + + name + Layout7 + + + + margin + 0 + + + spacing + 6 + + + QLabel + + name + TextLabel2_2 + + + text + Run: + + + + QLabel + + name + _labelTestRunCount + + + text + 999999 + + + + + + + name + Spacer4 + + + orientation + Horizontal + + + sizeType + Fixed + + + sizeHint + + 20 + 20 + + + + + QLayoutWidget + + name + Layout6 + + + + margin + 0 + + + spacing + 6 + + + QLabel + + name + TextLabel1 + + + text + Failure: + + + + QLabel + + name + _labelFailureCount + + + text + 999999 + + + + + + + name + Spacer5 + + + orientation + Horizontal + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + + + QProgressBar + + name + _progressRun + + + + + + QLayoutWidget + + name + Layout18 + + + + margin + 0 + + + spacing + 6 + + + QPushButton + + name + _buttonBrowse + + + text + &Browse... + + + + QPushButton + + name + _buttonRunTest + + + text + Run &Test + + + accel + 276824148 + + + + QPushButton + + name + _buttonStop + + + text + &Stop + + + + QPushButton + + name + _buttonClose + + + caption + + + + text + &Close + + + accel + 276824131 + + + autoDefault + true + + + default + true + + + + + + + + QListView + + + text + Type + + + clickable + true + + + resizeable + true + + + + + text + Test Name + + + clickable + true + + + resizeable + true + + + + + text + Message + + + clickable + true + + + resizeable + true + + + + + text + Filename + + + clickable + true + + + resizeable + true + + + + + text + Line Number + + + clickable + true + + + resizeable + true + + + + name + _listFailures + + + resizePolicy + AutoOneFit + + + allColumnsShowFocus + true + + + showSortIndicator + true + + + + QGroupBox + + name + _groupFailureDetail + + + title + Failure detail... + + + + margin + 11 + + + spacing + 6 + + + QLayoutWidget + + name + Layout17 + + + + margin + 0 + + + spacing + 6 + + + QLabel + + name + TextLabel3 + + + text + Location: + + + + QLabel + + name + _labelFailureLocation + + + text + ... + + + + + name + Spacer18 + + + orientation + Horizontal + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + + + QLayoutWidget + + name + Layout15 + + + + margin + 0 + + + spacing + 6 + + + QLayoutWidget + + name + Layout14 + + + + margin + 0 + + + spacing + 6 + + + QLabel + + name + TextLabel5 + + + text + Message: + + + + + name + Spacer11 + + + orientation + Vertical + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + + + QMultiLineEdit + + name + _editFailureMessage + + + wordWrap + WidgetWidth + + + readOnly + true + + + + + + + + + + + _buttonClose + clicked() + TestRunnerDlgBase + accept() + + + _buttonBrowse + clicked() + TestRunnerDlgBase + browseForTest() + + + _buttonRunTest + clicked() + TestRunnerDlgBase + runTest() + + + _buttonStop + clicked() + TestRunnerDlgBase + stopTest() + + browseForTest() + stopTest() + runTest() + + + _comboTest + _buttonBrowse + _buttonRunTest + _listFailures + _editFailureMessage + _buttonClose + +